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

VBA Access Discussion :

Utiliser une macro Excel sous access


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Exploitant d'applications
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Exploitant d'applications
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut [Résolu]Utiliser une macro Excel sous access
    Bonjour, je possède une macro excel qui transforme un montant en chiffre en lettres.
    la formule utilisée sous excel est =chiffreslettres$A$1
    la macro est la 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
    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
    l'interet de cette macro est que lorsque l'on tape un montant (en chiffres) dans un champ, le montant écrit en toutes lettres aparait (après validation) dans un autre champ. Mais je ne sais pas comment l'executer sous access.
    Merci . Manu
    EDIT : j'ai essayé avec ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Texte673_LostFocus()
    Me.Texte675 = chiffrelettre(Me.Texte673.Value)
    End Sub
    mais ca ne fonctionne pas (incompatibilité de type)

  2. #2
    Membre Expert Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Par défaut
    Hello !

    Je me suis un peu cassé les dents pour les mêmes raisons que toi puis j'ai bidouillé et j'ai trouvé quelque chose (certainement pas vraiment gracieux...) mais qui fonctionne :

    Voici mon code (le tien, très très légèrement modifié à la fin et restructuré):
    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
    68
    69
    70
    71
    72
    73
    74
    Option Compare Database
    Public strLettres   As String
     
    Public Function ChiffreLettres(s As String) As String
    Dim a       As Variant
    Dim 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 aux 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 = ""
     
        strLettres = t & d & myct
     
    End Function
    Puis pour activer cette nouvelle fonction, sur l'évènement MAJ de mon champ nommé "Chiffre" (le champ de destination étant "Lettres", ces deux lignes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub Chiffre_AfterUpdate()
        Call ChiffreLettres(Me!Chiffre)
        Me.Lettres = strLettres
    End Sub
    Voilà !

    C'est intéressant cette fonction.. et ça en jette

  3. #3
    Membre Expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Par défaut
    Bonjour,

    Il existe également une fonction toute faites dans la ....
    http://access.developpez.com/sources...ffresEnLettres

    Bonne lecture...

  4. #4
    Membre Expert Avatar de bernardmichel
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2004
    Messages
    1 181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 181
    Par défaut
    Hello FreeAccess !

    J'ai fait bonne lecture... Merci à toi d'avoir réalisé cette fonction, elle est superbe !

  5. #5
    Membre Expert
    Avatar de FreeAccess
    Homme Profil pro
    Un monde ou prendre est plus facile qu'apprendre.
    Inscrit en
    Mars 2006
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Un monde ou prendre est plus facile qu'apprendre.

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 745
    Par défaut
    Citation Envoyé par bernardmichel Voir le message
    Hello FreeAccess !

    J'ai fait bonne lecture... Merci à toi d'avoir réalisé cette fonction, elle est superbe !
    Houla....ce n'est pas moi qu'il faut remercier..........mais plutôt l'auteur de cette contribution..
    Moi, je n'ai fais que signaler que cette fonction existait déjà dans la
    "Rendons à César ce qui appartient à César....."

  6. #6
    Membre averti
    Homme Profil pro
    Exploitant d'applications
    Inscrit en
    Août 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Exploitant d'applications
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Août 2007
    Messages : 14
    Par défaut
    Merci beaucoup à tous ceux qui m'ont répondu.
    problème résolu.
    Manu

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

Discussions similaires

  1. [AC-2003] Comment executer une macro Excel sous Access
    Par Deustalos dans le forum VBA Access
    Réponses: 6
    Dernier message: 04/11/2009, 12h30
  2. [AC-2000] Utilisation d'une macro excel sous access
    Par Syrliane dans le forum VBA Access
    Réponses: 1
    Dernier message: 19/06/2009, 13h17
  3. exécuter une macro excel sous access
    Par smix13 dans le forum VBA Access
    Réponses: 10
    Dernier message: 03/02/2009, 08h51
  4. Utiliser des macros Excel sous open office
    Par Memes dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 08/11/2007, 21h46
  5. Comment copier une feuille EXCEL sous ACCESS?
    Par PAULOM dans le forum Access
    Réponses: 7
    Dernier message: 28/04/2006, 10h01

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