Problème de code vba d'access

katane79 Messages postés 2 Date d'inscription lundi 3 juillet 2023 Statut Membre Dernière intervention 4 juillet 2023 - 3 juil. 2023 à 18:31
Whismeril Messages postés 19095 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 juillet 2024 - 5 juil. 2023 à 11:31

Chers membres de la communauté,

Je me permets de vous adresser ce message pour solliciter votre aide précieuse dans l'adaptation du code permettant la conversion des chiffres en lettres dans un état Access.

Malheureusement, chaque tentative d'exécution du code se solde par un message d'erreur indiquant : "Impossible de faire référence à une propriété ou de la définir pour un contrôle si ce dernier n'est pas activé".

En attendant avec impatience votre assistance,

Je vous prie d'agréer mes salutations les plus cordiales.

3 réponses

Whismeril Messages postés 19095 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 juillet 2024 660
3 juil. 2023 à 20:06

Bonjour

De quel code parles-tu?

Il y en a des milliers sur CodeS SourceS (pour peu que ce soit un code d'ici)

Le lien vers la page est indispensable pour avoir une petite chance de pouvoir commencer à t'aider


katane79 Messages postés 2 Date d'inscription lundi 3 juillet 2023 Statut Membre Dernière intervention 4 juillet 2023
Modifié le 5 juil. 2023 à 09:55

Bonjour,

merci pour cette réaction.

il s'agit d'un code source que j'avais copié ici dans cette communauté.

voici le code :

Public Function NbVersTexte(ValNum As Double) As String
    Static Unites(0 To 9) As String
    Static Dixaines(0 To 9) As String
    Static LesDixaines(0 To 9) As String
    Static Milliers(0 To 4) As String
    
    Dim i As Integer
    Dim nPosition As Integer
    Dim ValNb As Integer
    Dim LesZeros As Integer
    Dim strResultat As String
    Dim strTemp As String
    Dim tmpBuff As String
    
    Unites(0) = "zero"
    Unites(1) = "un"
    Unites(2) = "deux"
    Unites(3) = "trois"
    Unites(4) = "quatre"
    Unites(5) = "cinq"
    Unites(6) = "six"
    Unites(7) = "sept"
    Unites(8) = "huit"
    Unites(9) = "neuf"

    Dixaines(0) = "dix"
    Dixaines(1) = "onze"
    Dixaines(2) = "douze"
    Dixaines(3) = "treize"
    Dixaines(4) = "quatorze"
    Dixaines(5) = "quinze"
    Dixaines(6) = "seize"
    Dixaines(7) = "dix-sept"
    Dixaines(8) = "dix-huit"
    Dixaines(9) = "dix-neuf"

    LesDixaines(0) = ""
    LesDixaines(1) = "dix"
    LesDixaines(2) = "vingt"
    LesDixaines(3) = "trente"
    LesDixaines(4) = "quarante"
    LesDixaines(5) = "cinquante"
    LesDixaines(6) = "soixante"
    LesDixaines(7) = "soixante-dix"
    LesDixaines(8) = "quatre-vingt"
    LesDixaines(9) = "quatre-vingt-dix"

    Milliers(0) = ""
    Milliers(1) = "mille"
    Milliers(2) = "million"
    Milliers(3) = "millard"
    Milliers(4) = "mille"

    On Error GoTo NbVersTexteError
    
    strTemp = CStr(Int(ValNum))
    
    For i = Len(strTemp) To 1 Step -1
        ValNb = Val(Mid$(strTemp, i, 1))
        nPosition = (Len(strTemp) - i) + 1
        Select Case (nPosition Mod 3)
            Case 1
                LesZeros = False
                If i = 1 Then
                    If ValNb > 1 Then
                        tmpBuff = Unites(ValNb) & " "
                    Else
                        tmpBuff = ""
                    End If
                ElseIf Mid$(strTemp, i - 1, 1) = "1" Then
                    tmpBuff = Dixaines(ValNb) & " "
                    i = i - 1
                ElseIf Mid$(strTemp, i - 1, 1) = "9" Then
                    tmpBuff = LesDixaines(8) & " " & Dixaines(ValNb) & " "
                    i = i - 1
                ElseIf Mid$(strTemp, i - 1, 1) = "7" Then
                    tmpBuff = LesDixaines(6) & " " & Dixaines(ValNb) & " "
                    i = i - 1
                ElseIf ValNb > 0 Then
                    tmpBuff = Unites(ValNb) & " "
                Else
                    LesZeros = True
                    If i > 1 Then
                        If Mid$(strTemp, i - 1, 1) <> "0" Then
                            LesZeros = False
                        End If
                    End If
                    If i > 2 Then
                        If Mid$(strTemp, i - 2, 1) <> "0" Then
                            LesZeros = False
                        End If
                    End If
                    tmpBuff = ""
                End If
                If LesZeros = False And nPosition > 1 Then
                    tmpBuff = tmpBuff & Milliers(nPosition / 3) & " "
                End If
                strResultat = tmpBuff & strResultat
            Case 2
                If ValNb > 0 Then
                            strResultat = LesDixaines(ValNb) & " " & strResultat
                End If
            Case 0
                If ValNb > 0 Then
                    If ValNb > 1 Then
                        strResultat = Unites(ValNb) & " cent " & strResultat
                    Else
                        strResultat = "cent " & strResultat
                    End If
                End If
        End Select
    Next i
    If Len(strResultat) > 0 Then
        strResultat = UCase$(Left$(strResultat, 1)) & Mid$(strResultat, 2)
    End If

EndNbVersTexte:
    NbVersTexte = strResultat
    Exit Function

NbVersTexteError:
    strResultat = "Une Erreur !"
    Resume EndNbVersTexte
End Function
Whismeril Messages postés 19095 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 17 juillet 2024 660
5 juil. 2023 à 11:31

Tout d'abord, merci à Karamel d'avoir corrigé la présentation de ton code.

Pour tes prochains posts, merci d'utiliser la coloration syntaxique voir https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code

Ensuite, VBA ce n'est pas mon fort et surtout, je n'en ai jamais fait sur Access.

J'ai donc commencé mon test avec Excel, et ce code fonctionne sans erreurs.

J'ai donc essayé avec Access, et ça marche aussi


À noter, que je n'ai pas eu à modifier les références par défaut.

Donc avoir plus de contexte de ta part va être essentiel.

  • le lien où tu as trouvé ce code, pour voir s'il y est indiqué des compatibilités, des configurations etc...
  • ta version d'Access
  • le nombre que tu veux convertir
  • et toute information, configuration que tu jugeras utile

Rejoignez-nous