Je veux ecrire une macro dans exel

Résolu/Fermé
soubonoi Messages postés 48 Date d'inscription dimanche 24 septembre 2006 Statut Membre Dernière intervention 20 décembre 2016 - 25 sept. 2006 à 08:02
 manalcoeur@hotmail.fr - 21 mars 2010 à 19:43
Bonjor les ami, je travail sur un macro en exel qui converti un nombre dans la selule selectioné à l'ecriture en caracter
par exemple : 121 = cent vingt et un,
et sa dans la meme selule
merci d'avence
A voir également:

5 réponses

JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
25 sept. 2006 à 14:10
Bonjour,

En macro évènementielle derrière ta feuille de calcul où tu veux que la transformation s'effectue tu mets
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 Then
    If IsNumeric(Target.Value) Then
        Target.Value = chiffrelettre(Target.Value)
    End If
End If
End Sub
cette macro teste la saisie en colonne A seulement. A adapter le cas échéant.

Ensuite, tu insères un module et tu y mets la fonction que j'ai récupérée sur excelabo.net :
Function chiffrelettre(s)
Dim a As Variant, gros As Variant
a = Array("", "un", "deux", "trois", "quatre", "cinq", "six", "sept", _
"huit", "neuf", "dix", "onze", "douze", "treize", "quatorze", "quinze", "seize", "dix sept", _
"dix huit", "dix neuf", "vingt", "vingt et un", "vingt deux", "vingt trois", "vingt quatre", _
"vingt cinq", "vingt six", "vingt sept", "vingt huit", "vingt neuf", "trente", "trente et un", _
"trente deux", "trente trois", "trente quatre", "trente cinq", "trente six", "trente sept", _
"trente huit", "trente neuf", "quarante", "quarante et un", "quarante deux", "quarante trois", _
"quarante quatre", "quarante cinq", "quarante six", "quarante sept", "quarante huit", _
"quarante neuf", "cinquante", "cinquante et un", "cinquante deux", "cinquante trois", _
"cinquante quatre", "cinquante cinq", "cinquante six", "cinquante sept", "cinquante huit", _
"cinquante neuf", "soixante", "soixante et un", "soixante deux", "soixante trois", _
"soixante quatre", "soixante cinq", "soixante six", "soixante sept", "soixante huit", _
"soixante neuf", "soixante dix", "soixante et onze", "soixante douze", "soixante treize", _
"soixante quatorze", "soixante quinze", "soixante seize", "soixante dix sept", _
"soixante dix huit", "soixante dix neuf", "quatre-vingts", "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", _
"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")
gros = Array("", "billions", "milliards", "millions", "mille", "Euros", "billion", _
"milliard", "million", "mille", "Euro")
sp = Space(1)
chaine = "00000000000000"
centime = s * 100 - (Int(s) * 100)
s = Str(Int(s)): lg = Len(s) - 1: s = Right(s, lg): lg = Len(s)
If lg < 15 Then chaine = Mid(chaine, 1, (15 - lg)) Else chaine = ""
s = chaine + s
'billions au centaines
gp = 1
For k = 1 To 5
x = Mid(s, gp, 1): c = a(Val(x))
x = Mid(s, gp + 1, 2): d = a(Val(x))
If k = 5 Then
If t2 <> "" And c & d = "" Then mydz = "Euros" & sp: GoTo fin
If t <> "" And c = "" And d = "un" Then mydz = "un Euros" & sp: GoTo fin
If t <> "" And t2 = "" And c & d = "" Then mydz = "d'Euros" & sp: GoTo fin
If t & c & d = "" Then myct = "": mydz = "": GoTo fin
End If
If c & d = "" Then GoTo fin
If d = "" And c <> "" And c <> "un" Then mydz = c & sp & "cents " & gros(k) & sp: GoTo fin
If d = "" And c = "un" Then mydz = "cent " & gros(k) & sp: GoTo fin
If d = "un" And c = "" Then myct = IIf(k = 4, gros(k) & sp, "un " & gros(k + 5) & sp): GoTo fin
If d <> "" And c = "un" Then mydz = "cent" & sp
If d <> "" And c <> "" And c <> "un" Then mydz = c & sp & "cent" + sp
myct = d & sp & gros(k) & sp
fin:
t2 = mydz & myct
t = t & mydz & myct
mydz = "": myct = ""
gp = gp + 3
Next
d = a(centime)
If t <> "" Then myct = IIf(centime = 1, " centime", " centimes")
If t = "" Then myct = IIf(centime = 1, " centime d'Euro", " centimes d'Euro")
If centime = 0 Then d = "": myct = ""
chiffrelettre = t & d & myct
End Function
Dès que tu tapes un nombre dans la colonne A, il est transformé en lettres.

cordialement
1
mirci baucoup Mr JvDo, je veut savoire le sinification des termes suivent:
Worksheet:
Target As Range:
Target.Column:
et quesque signifié l'extri de cod suivant:
sp = Space(1)
et je veut bien vous remecer baucoup Mr JvDo.
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
25 sept. 2006 à 23:03
Bonsoir,

laisse tomber les "Mr".
tes questions me laissent supposer que tu débutes en VBA.
voilà quelques éléments de réponses :

Worksheet:
Worksheet n'apparait pas seul dans le code que je t'ai envoyé.
il s'agit de Worksheet_Change qui est l'évènement que la procédure évènementielle gère.
Worksheet signifiant feuille de calcul, Worksheet_Change est l'évènement qui est déclenché lorsque la feuille de calcul change, par exemple quand on saisit une valeur dans une cellule de la feuille de calcul.

Target As Range:
il s'agit de la variable de la procédure évènementielle qui mémorise la cellule qui a été modifiée. le "as range" est là pour préciser qu'il s'agit d'un objet "Range".

Target.Column:
Column est une propriété de l'objet Target. Target.Column fournit le n° de colonne de la cellule qui a été modifiée.

sp = Space(1)
sp est une variable qui a pour valeur le résultat de la fonction Space(1). Cette dernière retourne un espace. donc sp équivaut à un espace (space en anglais d'où l'abréviation sp)

cordialement

à tout hasard, 2 précisions :
1) les procédures évènementielles se mettent derrière la feuille de calcul c'est-à-dire là où tu vas quand tu fais un clic droit sur l'onglet et que tu choisis "visualiser le code"
2) les procédures non évènementielles se mettent dans un module que tu insères dans l'éditeur de VB que tu obtiens quand tu fais ALT F11.
1
soubonoi Messages postés 48 Date d'inscription dimanche 24 septembre 2006 Statut Membre Dernière intervention 20 décembre 2016 9
27 sept. 2006 à 19:05
bonsoir JvDo
je vous remercer bien pour votre explication.
je veut dir que je suis vraiment débutant en VBA, mais je ne suis pas débutant en meme temps.
parseque je programe en VB mi je conner pas les objet de exele (propriete mithothe et evenement).
et tu ci bien que VBA est un sous ensemble de VB.
en fin je veut dir ausi que je veut un macro, ou bien un "sub" qui fait refirence a la selule selectionné pour la transferer en lettre.
ou bien je veut connetre la proprité qui me done la selule selectionné.
a la fin je vous remercer bien de votre code qui rendre la faille de calculle un logicele complete pour transformer une chifre en letre.
et je m'excuse pour les faute d'ortographe qui j'arive pas a les dépacer.
0
JvDo Messages postés 1978 Date d'inscription mercredi 27 juillet 2005 Statut Membre Dernière intervention 28 septembre 2020 858
27 sept. 2006 à 23:29
Bonsoir,

la cellule sélectionnée est fournie par la variable Target de la procédure évènementielle.

elle est fournie par le système automatiquement dès que tu saisis une valeur et que tu la valides par la touche ENTER ou TAB, ou une sélection d'une autre cellule ou......

As-tu mis en oeuvre les 2 macros que je t'ai envoyées?

j'aimerais t'entendre dire qu'elles te conviennent et donc qu'elles fonctionnent.

cordialement
0
soubonoi Messages postés 48 Date d'inscription dimanche 24 septembre 2006 Statut Membre Dernière intervention 20 décembre 2016 9
28 sept. 2006 à 06:59
bonjour,
pas encor, et excuse moi, par se que je veut envoyer le macro avec moi au travail dans une boite informatique, et je suis aucuper de tes reponce, et je suis oublié de transfirer le macro.
mi je te promer de le fair pour toi au plus vit posible.
mirci.
0
soubonoi Messages postés 48 Date d'inscription dimanche 24 septembre 2006 Statut Membre Dernière intervention 20 décembre 2016 9
28 sept. 2006 à 19:08
SA MARCHE JVDO.
je te remerci bien pour ton aide.
A biento.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
manalcoeur@hotmail.fr
21 mars 2010 à 19:43
helo
-1