Bonjour à tous,

Je fais appel à vos connaissances pour traduire un programme en langage C vers du vba.
Certaines fonctions de ce programme me sont inconnues et je peine à le faire fonctionner sous Access.

Le principe est de calculer sur 18 caractères, le crc 8 bits polynôme 0x91, en base 10 (0 -> 255 => 3 chiffres).

Exemple : 300314120242907650 résultat du calcul 048

Voici le code en C:
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
const unsigned char CRC7_POLY = 0x91;
 
unsigned char getCRC(unsigned char message[], unsigned char length)
{
 unsigned char i, j, crc = 0;
 
   for (i = 0;i < length; i++)
   {
         crc ^= message[i];
         for (j = 0;j < 8; j++)
         {
               if (crc & 1)crc ^= CRC7_POLY;
               crc >>= 1;
          }
    }
    return crc;
}
En vba cela pourrait donner cela :

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
Function CRC (Message as String, Longueur_a_coder as long)
Dim i,j as Long

CRC=0

For i=1 to  Longueur_a_coder
    CRC=CRC xor Message(i)
    For j=1 to 8
          if le bit de poids faible de CRC est à 1 then
                 CRC=CRC xor 0x91 ou exclusif bit à bit
                 Décaler les bits de CRC de 1 bit à droite // division entière par 2
          end if
    Next j
Next i
CRC=CRC
Je n'arrive pas à traduire la partie en italique. Pouvez-vous m'apporter une aide sur ce sujet ?

Merci.