IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Conversion des chiffres en lettre [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 390
    Points : 179
    Points
    179
    Par défaut Conversion des chiffres en lettre
    Bonjour,

    J'ai essayé de créer un macro pour convertir des chiffres (montant) en lettres d'un ensemble de cellules et j'ai trouvé sur le net la fonction suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
     
    Function chiffretolettre(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", "Dinars", "billion", _
    "milliard", "million", "mille", "Dinar")
    sp = Space(1)
    chaine = "00000000000000"
    millime = s * 1000 - (Int(s) * 1000)
    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 = "Dinars" & sp: GoTo fin
    If T <> "" And c = "" And d = "un" Then mydz = "un Dinar" & sp: GoTo fin
    If T <> "" And t2 = "" And c & d = "" Then mydz = "de Dinar" & 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(millime)
    If millime < 100 Then
    d = a(millime)
    Else
    If Left(millime, 1) = 1 Then d = " cent " & a(Right(millime, 2))
    If Left(millime, 1) > 1 Then d = a(Left(millime, 1)) & " cent " & a(Right(millime, 2))
    End If
    If T <> "" Then myct = IIf(millime = 1, " millime", " millimes")
    If T = "" Then myct = IIf(millime = 1, " millime", " millimes")
    If millime = 0 Then d = "": myct = ""
    chiffretolettre = T & d & myct
    End Function
    Pour exécuter le macro je sélectionne une cellule et je dois écrire : =chiffretolettre($C$7)

    Comment je peux réutiliser ce macro en défilant sur le reste des cellules pour convertir des chiffres en toute lettre?

    Merci.

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 232
    Points : 5 632
    Points
    5 632
    Par défaut
    Bonjour,

    Enlevez les dollars qui figent la cellule en C7
    Cdlt

  3. #3
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 390
    Points : 179
    Points
    179
    Par défaut
    Merci pour votre réponse.

    J'ai enlevé les dollars et j'ai eu dans la cellule l'erreur "#NOM?".

  4. #4
    Community Manager

    Avatar de Malick
    Homme Profil pro
    Community Manager
    Inscrit en
    Juillet 2012
    Messages
    9 121
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Sénégal

    Informations professionnelles :
    Activité : Community Manager
    Secteur : Conseil

    Informations forums :
    Inscription : Juillet 2012
    Messages : 9 121
    Points : 83 910
    Points
    83 910
    Billets dans le blog
    15
    Par défaut
    Salut,

    Et pourtant la formule proposée par ARTURO83() fonctionne.

    Nom : Capture.PNG
Affichages : 5093
Taille : 20,1 Ko
    Vous avez envie de contribuer au sein du Club Developpez.com ? Contactez-nous maintenant !
    Vous êtes passionné, vous souhaitez partager vos connaissances en informatique, vous souhaitez faire partie de la rédaction.
    Il suffit de vous porter volontaire et de nous faire part de vos envies de contributions :
    Rédaction d'articles/cours/tutoriels, Traduction, Contribution dans la FAQ, Rédaction de news, interviews et témoignages, Organisation de défis, de débats et de sondages, Relecture technique, Modération, Correction orthographique, etc.
    Vous avez d'autres propositions de contributions à nous faire ? Vous souhaitez en savoir davantage ? N'hésitez pas à nous approcher.

  5. #5
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 390
    Points : 179
    Points
    179
    Par défaut
    Merci beaucoup je vais réessayer et merci de me dire comment je peux enregistrer le macro pour qu'il soit utilisable dans des nouveau classeur.

  6. #6
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 913
    Points : 5 119
    Points
    5 119
    Par défaut
    C'est une fonction et n'est pas un code ...a enregistrer via l'onglet developpeur .. Une fois enregistré vous aurez une fonction comme somme ou si ou autre .. A n'importe quelle cellule vous écrivez : =nomdevotrefonction ( cellule concernée) et vous aurez le montant en toute lettre
    J'espère que ça t'aide à avancer
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  7. #7
    Membre habitué
    Inscrit en
    Novembre 2007
    Messages
    390
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 390
    Points : 179
    Points
    179
    Par défaut
    ça marche dans le classeur mais suite à la fermeture et le lancement d'un nouveau classeur j'ai rencontré l'erreur ci-dessous :

    Nom : 2020-01-09_185504.png
Affichages : 4927
Taille : 65,8 Ko

  8. #8
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 913
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 913
    Points : 5 119
    Points
    5 119
    Par défaut
    Bonjour
    Si vous êtes débutant et/ou autodidacte comme moi je conseille d'insérer cette fonction personnalisée dans chaque classeur qui utilise cette fonction
    si non appliquer la procédure suivante décris dans l'adresse suivante :
    Une fonction est disponible uniquement lorsque le classeur qui contient la procédure est ouvert. Vous devez créer un complément pour que votre fonction personnelle soit disponible dès l'ouverture de l'application.

    Créez un nouveau classeur vierge.
    Insérez un module standard depuis l'éditeur de macros.
    Copiez-y les fonctions de votre choix.
    Sauvegardez le fichier au format .xlam pour Excel2007 et .xla pour les versions antérieures d'Excel.
    Vous remarquerez que la boîte de dialogue s'ouvre automatiquement sur le répertoire spécifique des macros complémentaires, lorsque vous choisissez ces types d'extension.
    Ce chemin est généralement:
    C:\Documents and Settings\nom_utilisateur\Application Data\Microsoft\Macros complémentaires (ou AddIns)
    Nommez votre complément.
    Cliquez sur le bouton OK pour valider.

    Pour activer la macro complémentaire (avant Excel2007):
    Menu Outils
    Macros complémentaires
    Si vous avez bien enregistré le classeur dans le répertoire spécifique des macros complémentaires, votre fichier doit apparaitre dans la boîte de dialogue qui s'affiche à l'écran (Cliquez sur le bouton "Parcourir" si votre complément n'apparait pas dans la liste).

    Image non disponible

    Cochez la ligne correspondante.
    Cliquez sur le bouton OK pour valider.
    Refermez puis ré-ouvrez Excel.
    Faites des essais d'utilisation. Vous constatez que vos fonctions sont désormais automatiquement disponibles.


    Sous Excel2007:
    Cliquez sur le bouton "Office".
    Cliquez sur le bouton "Options Excel".
    Sélectionnez le menu Compléments.
    Choisissez "Compléments Excel" dans le menu déroulant "Gérer" (en bas de la fenêtre).
    Cliquez sur le bouton "Atteindre".


    Remarque :
    Lorsque vos classeurs utilisent des fonctions issues d'un complément, et doivent être transmis à d'autres utilisateurs, assurez vous que ceux-ci disposent aussi du complément. Sinon, les formules placées dans la feuille de calcul ne seront plus opérationnelles et renverront une valeur d'erreur #NOM?.
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. conversion des chiffres en lettres
    Par Msysteme dans le forum C#
    Réponses: 4
    Dernier message: 28/05/2015, 17h07
  2. conversion des chiffres en lettres
    Par sinda1 dans le forum Shell et commandes POSIX
    Réponses: 10
    Dernier message: 22/12/2010, 22h28
  3. conversion des chiffres en lettres
    Par hoc4304 dans le forum Débuter
    Réponses: 4
    Dernier message: 08/09/2010, 20h49
  4. composant pour convzrtir des chiffres en lettres
    Par ouldfella dans le forum Composants VCL
    Réponses: 6
    Dernier message: 01/06/2006, 12h40
  5. Conversion de chiffres en lettres
    Par Driss35 dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 30/01/2006, 16h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo