Comment passer du VBA par bouton en fonction (utilisable partout)?

25crc-maxim.xlsm (56.23 Ko)

Bonjour à tous,

Merci pour toute l'aide que vous allez m'apporter.

Mon niveau en VBA est malheureusement faible, j'ai une page qui permet de calculer un CRC sur un certain nombre d'octet aléatoire.

Un bouton permet de calculer le CRC et de le réinjecter dans la trame.

Je souhaite développer une fonction qui permettra de l'utiliser ou bon me semble et sur n'importe quel page Excel.

Je n'arrive pas à passer à cette étape malgré mes efforts, même mes points de débug pour afficher certaines valeurs ne marchent pas.

Pour faire simple:

J'ai une trame:

001016cr10500704020102010102

J’enlève le "cr" :

00101610500704020102010102

Je la retourne (module1 => function inverse):

02010102010204075010161000

je calcul le CR que je réinjecte dans la trame de base

0010168010500704020102010102

Malheureusement ma fonction (B21) =CRCMAxim(ElaJon) sur le module 2 ne marche pas je suis en erreur, alors que le bouton lui fonctionne.

Le pompom serait bien sur de pouvoir imbriquer toutes les fonctions afin de partir de la trame de base

Je vous serais reconnaissant de m'aider à me débloquer ....merci beaucoup.

Bonne soirée

Olivier

bonsoir,

une correction de ta fonction, sans modifier ta logique.

Function CRCMAxim(valeur As Variant)
    Dim Nombredevaleur, NombredevaluerOctets As Integer
    Dim ElaSTR As String
    Dim InHex, OutBinStr As String
    Dim OutBinArr(1 To 6400) As Integer
    Dim OutDec, I, CRC(1 To 800), CRCTemp As Integer

    Dim Nbcaract As Double

    Nbcaract = Len(valeur)

    Nbcaract = Nbcaract / 2
    Nombredevaleur = Nbcaract
    NombredevaluerOctets = Nombredevaleur * 8
        InHex = valeur '<-correction de l'erreur ici ********************************************************
    OutBinStr = HexToBin(InHex)

    ' Convert string to array, LSB = OutBinArr(1)
    For I = 1 To NombredevaluerOctets
        OutBinArr((NombredevaluerOctets + 1) - I) = Mid$(OutBinStr, I, 1) ' Split(OutBinStr)
    Next I

    'Initialize CRC
    For I = 1 To Nombredevaleur
        CRC(I) = 0
    Next I

    'Calculate CRC
    For I = 1 To NombredevaluerOctets
        CRCTemp = CRC(1) Xor OutBinArr(I)
        CRC(1) = CRC(2)
        CRC(2) = CRC(3)
        CRC(3) = CRC(4) Xor CRCTemp
        CRC(4) = CRC(5) Xor CRCTemp
        CRC(5) = CRC(6)
        CRC(6) = CRC(7)
        CRC(7) = CRC(8)
        CRC(8) = CRCTemp
    Next I

    DecCRC = BinToDec(CRC)

    ' Range("DecCRCValue").Value = DecCRC

    CRCMAxim = DecCRC

End Function

Bonsoir h2so4

Merci beaucoup pour la rapidité de réponse et l'aide.

Comme quoi il en faut peu quelque fois pour qu'un code ne marche pas.

Encore merci pour tout cela fonctionne très bien.

Il reste néanmoins une chose ou je reviendrais par la suite ...celui de pouvoir envoyer le résultat sur un lecteur NFC en VBA ... mais j'ouvrirais un nouveau sujet pour cela

Bonne soirée

Rechercher des sujets similaires à "comment passer vba bouton fonction utilisable partout"