Bonjour,
Quand tu parles de 2e feuille, je pense que tu évoques un 2e onglet, il suffit dans celui-ci de faire =, puis revenir sur la 1ere et cliquer sur la valeur ou la cellule et ok, ça revient direct sur le 2e onglet et la valeur est reportée:
= et retour si je comprends ton problème voir en haut = feuil1!A4
Maintenant on peut copier coller des colonnes etc , et en leur donnant un nom avoir la liste déroulante dans la cellule en haut à gauche de tableur.
d'autres fonctions sont évidemment disponibles à voir avec "Excel download" et +
Cette liste acquise en onglet feuille 1 pourra facilement être retrouvée en feuille 2 etc pour divers traitements...
Maintenant je ne sais pas ton but, est-ce de faire un traduction de chiffres en lettres, parce que c'est facile avec une macro spéciale:
Coller dans visual basic cecci:
- Code: Tout sélectionner
Function CHIFLETR(Nombre, Optional Monnaie As String = "euro", Optional Maju As Boolean = True)
' CETTE FONCTION TRADUIT EN LETTRES UN NOMBRE POSITIF INFERIEUR
' AU MILLIARD, AVEC DEUX DECIMALES
' Elle fait appel à la macro "Codage" ci-dessous,
' qui en est indissociable
Dim TrCent As Boolean
Dim CenTouRon As Boolean
Dim Entiers As Long
Dim Centimes As Long
Dim TrUnités As Integer
Dim TrMilles As Integer
Dim TrMlions As Integer
Dim QuUnités As Long
Dim QuMilles As Long
Dim QuMlions As Long
Dim Lib As String
If Nombre > 999999999.99 Then
CHIFLETR = ""
Exit Function
End If
Entiers = Int(Nombre)
Centimes = (Nombre - Entiers) * 100
TrUnités = Entiers Mod 1000
QuUnités = Entiers \ 1000
TrMilles = QuUnités Mod 1000
QuMilles = QuUnités \ 1000
TrMlions = QuMilles Mod 1000
QuMlions = QuMilles \ 1000
Lib = ""
CenTouRon = (Entiers Mod 100) = 0
If TrMlions <> 0 Then
Call Codage(TrMlions, Lib, CenTouRon, False)
If TrMlions = 1 Then
Lib = Lib & "million "
Else
Lib = Lib & "millions "
End If
End If
If TrMilles <> 0 Then
If TrMilles <> 1 Then
Call Codage(TrMilles, Lib, CenTouRon, False)
End If
Lib = Lib & "mille "
End If
If TrUnités <> 0 Then
Call Codage(TrUnités, Lib, CenTouRon, True)
End If
If Entiers >= 2 Then
Lib = Lib & Monnaie & "s "
ElseIf Entiers >= 1 Then
Lib = Lib & Monnaie & " "
Else
Lib = "zéro " & Monnaie & " "
End If
If Centimes <> 0 Then
Lib = Lib & "et "
Call Codage(Centimes, Lib, CenTouRon, False)
If Centimes = 1 Then
Lib = Lib & "centime "
Else
Lib = Lib & "centimes "
End If
End If
CHIFLETR = Lib
If Maju Then CHIFLETR = UCase(CHIFLETR)
End Function
Sub Codage(Tranche, Lib, CenTouRon, TrCent)
' CETTE MACRO EST INDISSOCIABLE DE LA FONCTION CHIFLETR
' CI-DESSUS, ET TRADUIT EN LETTRES UNE TRANCHE DE 3 CHIFFRES
Dim C As Byte, D As Byte, D1 As Byte, U As Byte
Dim T00 As Variant
Dim Tb0 As Variant, Tb1 As Variant, Tb2 As Variant, Tb3 As Variant, Tb4 As Variant
Dim Tb5 As Variant, Tb6 As Variant, Tb7 As Variant, Tb8 As Variant, Tb9 As Variant
T00 = Array("", "", "deux ", "trois ", "quatre ", "cinq ", "six ", "sept ", "huit ", "neuf ")
Tb0 = Array("", "un ", "deux ", "trois ", "quatre ", "cinq ", "six ", "sept ", "huit ", "neuf ")
Tb1 = Array("dix ", "onze ", "douze ", "treize ", "quatorze ", "quinze ", "seize ", "dix-sept ", "dix-huit ", "dix-neuf ")
Tb2 = Array("vingt ", "vingt-et-un ", "vingt-deux ", "vingt-trois ", "vingt-quatre ", "vingt-cinq ", "vingt-six ", "vingt-sept ", "vingt-huit ", "vingt-neuf ")
Tb3 = Array("trente ", "trente-et-un ", "trente-deux ", "trente-trois ", "trente-quatre ", "trente-cinq ", "trente-six ", "trente-sept ", "trente-huit ", "trente-neuf ")
Tb4 = Array("quarante ", "quarante-et-un ", "quarante-deux ", "quarante-trois ", "quarante-quatre ", "quarante-cinq ", "quarante-six ", "quarante-sept ", "quarante-huit ", "quarante-neuf ")
Tb5 = Array("cinquante ", "cinquante-et-un ", "cinquante-deux ", "cinquante-trois ", "cinquante-quatre ", "cinquante-cinq ", "cinquante-six ", "cinquante-sept ", "cinquante-huit ", "cinquante-neuf ")
Tb6 = Array("soixante ", "soixante-et-un ", "soixante-deux ", "soixante-trois ", "soixante-quatre ", "soixante-cinq ", "soixante-six ", "soixante-sept ", "soixante-huit ", "soixante-neuf ")
Tb7 = Array("soixante-dix ", "soixante-et-onze ", "soixante-douze ", "soixante-treize ", "soixante-quatorze ", "soixante-quinze ", "soixante-seize ", "soixante-dix-sept ", "soixante-dix-huit ", "soixante-dix-neuf ")
Tb8 = Array("quatre-vingt ", "quatre-vingt-un ", "quatre-vingt-deux ", "quatre-vingt-trois ", "quatre-vingt-quatre ", "quatre-vingt-cinq ", "quatre-vingt-six ", "quatre-vingt-sept ", "quatre-vingt-huit ", "quatre-vingt-neuf ")
Tb9 = Array("quatre-vingt-dix ", "quatre-vingt-onze ", "quatre-vingt-douze ", "quatre-vingt-treize ", "quatre-vingt-quatorze ", "quatre-vingt-quinze ", "quatre-vingt-seize ", "quatre-vingt-dix-sept ", "quatre-vingt-dix-huit ", "quatre-vingt-dix-neuf ")
C = Tranche \ 100
If C <> 0 Then
If TrCent And CenTouRon And C <> 1 Then
Lib = Lib & T00(C) & "cents "
Else
Lib = Lib & T00(C) & "cent "
End If
End If
D1 = Tranche Mod 100
D = D1 \ 10
U = Tranche Mod 10
Select Case D
Case 0: Lib = Lib & Tb0(U)
Case 1: Lib = Lib & Tb1(U)
Case 2: Lib = Lib & Tb2(U)
Case 3: Lib = Lib & Tb3(U)
Case 4: Lib = Lib & Tb4(U)
Case 5: Lib = Lib & Tb5(U)
Case 6: Lib = Lib & Tb6(U)
Case 7: Lib = Lib & Tb7(U)
Case 8: Lib = Lib & Tb8(U)
Case 9: Lib = Lib & Tb9(U)
End Select
End Sub
et puis enregistrer comme nouvelle macro, après ça, il suffit de sélectionner une cellule de chiffres, faire: = CHIFLETR, dans la cellule ou on veut avoir la traduction en lettres (à redimensionner le cas échéant), utile pour les factures...Mais ce n'est peut-être pas exactement ton but, ça manque de précision quand même
Résultat, ça pourra être utile à quelqu'un(e)
Cordialement