Rapport de message :*
 

Re: Explication de code

Titre du sujet : Re: Explication de code
par myDearFriend! le 26/02/2022 14:07:38

Bonjour Eric, le forum,

 

Tout d'abord, et concernant la duplication d'instance de ton fichier, j'avoue que je sèche frown... Je viens de vérifier et je n'ai pas cet effet indésirable sur ma config (Office 365). Ca semble fonctionner correctement chez moi.

 

Ensuite, concernant le code VBA contenu dans la version n°1 du fichier fourni pour BobJazz (voir lien du fil de discussions dans mon post précédent, plus haut) :

Citation :

ericcool a écrit :

Par ailleurs, le fichier n°01 du post que tu as retrouvé possède une ligne de code dont toi seul à le secret et de ce fait, je ne parviens pas à déchiffrer ???. Le code :

 

If V > 0 And V / 111 = V \ 111 Then 

A l'origine, l'ami BobJazz souhaitait remplir la TextBox avec 3 chiffres, et si ces chiffres était identiques (222, 555, etc.), cela devait déclencher l'action de clignotement.

 

L'idée était donc d'analyser la valeur (V) contenue de cette TextBox après chaque caractère saisi :

  1.  on vérifie d'abord que la valeur soit supérieure à zéro (If V > 0)
  2.  on teste ensuite si la valeur saisie est divisible par 111 ou non (la saisie dans cette TextBox étant limitée à 3 caractères maxi grâce à sa propriété MaxLength)

 

Sachant qu'une série de 3 chiffres successifs est automatiquement divisible par 111, je m'assure que c'est bien le cas avec l'expression : "V / 111 = V \ 111".

 

Pour rappel, le signe " \ " (back slash ou slash inversé) est l'opérateur de division entière en VB-VBA. Son résultat est automatiquement un entier (retourne donc, un résultat sans aucune décimale !).

 

Autrement dit : si "V / 111" donne la même chose que son équivalent entier, alors il s'agit bien d'une série de 3 chiffres identiques.

 

Bien évidemment, on peut procéder de bien différentes manières pour obtenir le même test, comme :

  • vérifier que le modulo donne zéro :  "If V Mod 111 = 0"
  • vérifier que le reste de la division donne zéro : "If (V / 111) - Int(V / 111) = 0"
  • ou même comparer directement les 2 expressions, un peu comme je l'ai fait : "If (V / 111) = Int(V / 111)"

 

Voilà, mon cher Eric, j'espère que ça peut t'éclairer un peu sur la façon dont j'ai procédé.

 

Cela dit, je suis navré pour la duplication des instances du fichier lorsque tu l'exécute, car je n'ai aucune idée de ce qui se passe sur ton poste... (Problème de sécurité ? Fichier stocké dans un emplacement non approuvé (voir options Excel) ? Problème d'accès en écriture sur un lecteur réseau ?)

Si tu trouves l'explication, je reste bien évidemment preneur !

 

Bien amicalement,