Rechercher : dans
Par :

Je veux ecrire une macro dans exel

Dernière réponse le 28 sep 2006 à 19:08:08 soubonoi, le 25 sep 2006 à 08:02:07 
 Signaler ce message aux modérateurs

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

Meilleures réponses pour « je veux ecrire une macro dans exel » dans :
Capture d'écran / Copie d'écran VoirPas besoin de logiciel pour effectuer une capture d'écran 1. Comment faire ? 2. Tout l’écran 2.1. Sur PC / Windows 2.2. Sur Mac 3. Une partie de l’écran 3.1. Sur PC / Windows 3.2. Sur Mac 3.3. Sur PC / Linux 4. Une page à scroller
Écran LCD ou Plasma ? VoirLCD VS Plasma : lequel est fait pour vous ? Ces deux types d'écran plat et large présentent chacun des avantages et des inconvénients. Pour être sûr de ne pas faire le mauvais choix, posez-vous une question simple : sur quel aspect êtes-vous...
Fond d’écran de Noël VoirPour illustrer la magie du moment - la magie de Noël - personnalisez votre ordinateur ou votre téléphone portable avec un fond d’écran de Noël ! Un fond d’écran de Noël pour votre ordinateur Choisir un fond d’écran de Noël Composer votre...
Télécharger MOREFUNC (Macro complémentaire EXCEL) VoirMorefunc est une macro complémentaire proposant 67 nouvelles fonctions de feuille de calcul pour Excel. Ces fonctions sont compatibles avec Excel 95 à 2007. Elles ne sont pas portables sur d'autres plate-formes que Windows, ni sur d'autres...
Le moniteur ou écran d'ordinateur VoirIntroduction aux écrans d'ordinateur On appelle écran (ou moniteur) le périphérique d'affichage de l'ordinateur. On distingue habituellement deux familles d'écrans : Les écrans à tube cathodique (notés CRT pour Cathod Ray Tube), équipant la...
Écran plat VoirLes moniteurs à écran plat Les moniteurs à écran plat (notés parfois FPD pour Flat panel display) se généralisent de plus en plus dans la mesure où leur facteur d'encombrement et leur poids sont très inférieurs à ceux des écrans CRT...
Écran à tube cathodique (CRT) VoirLe moniteur à tube cathodique Le moniteur couleur Caractéristiques techniques Ressources sur le même sujet Le moniteur à tube cathodique Les moniteurs (écrans d'ordinateur) sont la plupart du temps des tubes cathodiques (notés CRT, soit...

1

JvDo, le 25 sep 2006 à 14:10:08

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

Répondre à JvDo

2

soubonoi, le 25 sep 2006 à 18:33:44

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.

Répondre à soubonoi

3

JvDo, le 25 sep 2006 à 23:03:50
  • +1

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.

Répondre à JvDo

4

soubonoi, le 27 sep 2006 à 19:05:41

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.

Répondre à soubonoi

5

JvDo, le 27 sep 2006 à 23:29:51

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

Répondre à JvDo

6

soubonoi, le 28 sep 2006 à 06:59:03

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.

Répondre à soubonoi

7

 soubonoi, le 28 sep 2006 à 19:08:08

SA MARCHE JVDO.
je te remerci bien pour ton aide.
A biento.

Répondre à soubonoi