Calcul assez complexe (pour moi du moins)
Bonjour tout le monde,
Je suis bloqué sur un calcul et je n'arrive pas à m'en sortir, je m'en explique :
Je dispose le 5 colones et ed quelques centaines de lignes :
- Colonne A : code binaire
Colonne B : autre code binaire
Colonne C : rien
Colonne D : numéro d'octet
Colonne E : valeur décimal en fonction du binaire ( de 1 à 128)
Mon problème est que je veux calculer la valeur de chaque octet (du premier octet au 18eme octet inclus) puis additionner toutes ces valeurs puis faire un modulo 256 du résultat de l'addition de mes 18 octets. et faire cela pour mes 2 colonnes binaire.
Je ne sais pas si j'ai été trés clair dans mes explications, c'est pour cela que j'ai mis un fichier d'exemple en piéce jointe.
colonne A et B = codes binaire différents, l'octet 19 (le dernier) sert au contrôle d'erreur (CRC).
Comme vous pouvez le voir en A310 et B310 j'ai calculé ma valeur décimale du CRC à savoir 213 et 212.
Donc si je calcul en décimal chaque octet, que j'additionne ces 18 valeurs et que je fais : valeur modulo 256, je dois retrouver mes valeurs 213 et 212.
Dans cet exemple je n'ai que 2 colonnes en binaire mais dans certains cas j'en ai plusieurs donc je ne peux pas me permettre de me servir une colonne intermédiaire pour chaque colonne binaire, c'est pour cela que idéalement je voudrais faire ce calcul dans une seule cellule.
Je veux donc que en A311 et B311 j'ai le resultat de : (valeur décimal des 18 octets additionés) modulo 256.
Bien evidemment quand le bit est à 0 la valeur vaut 0 et quand le bit est à 1 qu'il prenne la valeur en colonne E.
Ex :
binaire, valeur, resultat
1 1 => 1
0
0 2 => 0
0
1 4 => 1
0
0 8 => 0
0
1 16 => 16
0
0 32 => 0
0
1 64 => 64
0
1 128 => 128
0
Total =213
J'espére avoir été clair dans mes explications
Merci par avance pour votre aide.
Edit : fonction BINDEC ne peut pas fonctionner car j'ai un 0 entre chaque bit utile (voir mon exemple)
Bonjour,
bon finalement j'ai fini par trouver, j'ai tout d'abord récupéré mon code binaire pour chaque octet puis je le transforme en décimal, puis j'ajoute tout ces numéros décimaux puis je fais un modulo 256 en global
Ce qui donne : (une grosse formule oui)
=MOD(BINDEC(CONCATENER(A19;A17;A15;A13;A11;A9;A7;A5))+BINDEC(CONCATENER(A35;A33;A31;A29;A27;A25;A23;A21))+BINDEC(CONCATENER(A51;A49;A47;A45;A43;A41;A39;A37))+BINDEC(CONCATENER(A67;A65;A63;A61;A59;A57;A55;A53))+BINDEC(CONCATENER(A83;A81;A79;A77;A75;A73;A71;A69))+BINDEC(CONCATENER(A99;A97;A95;A93;A91;A89;A87;A85))+BINDEC(CONCATENER(A115;A113;A111;A109;A107;A105;A103;A101))+BINDEC(CONCATENER(A131;A129;A127;A125;A123;A121;A119;A117))+BINDEC(CONCATENER(A147;A145;A143;A141;A139;A137;A135;A133))+BINDEC(CONCATENER(A163;A161;A159;A157;A155;A153;A151;A149))+BINDEC(CONCATENER(A179;A177;A175;A173;A171;A169;A167;A165))+BINDEC(CONCATENER(A195;A193;A191;A189;A187;A185;A183;A181))+BINDEC(CONCATENER(A211;A209;A207;A205;A203;A201;A199;A197))+BINDEC(CONCATENER(A227;A225;A223;A221;A219;A217;A215;A213))+BINDEC(CONCATENER(A243;A241;A239;A237;A235;A233;A231;A229))+BINDEC(CONCATENER(A259;A257;A255;A253;A251;A249;A247;A245))+BINDEC(CONCATENER(A275;A273;A271;A269;A267;A265;A263;A261))+BINDEC(CONCATENER(A291;A289;A287;A285;A283;A281;A279;A277));256)J'espére que ça pourra servir à quelqu'un
Bonjour,
Pas sûr d'avoir tout compris, mais :
=SOMMEPROD(A293:A307;$E293:$E307)A+