Bug éditeur VBA

Signaler
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
-
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
-
Bonjour tout le monde,

Avez-vous déjà remarqué ce sublime bug dans l'éditeur VBA (Test effectué dans VBA Excel 2003 Pro) :

Commencez par écrire ce bête morceau de code :
Dim Var1 as Integer
Dim Var2 as Boolean

If Var1 = 100 And Not Var2 Then
End If


Jusqu'ici tout va bien, rien de bien méchant.

Mais la magie s'opère si vous supprimez le "And" et que vous déplacez le curseur à l'aide des fleches ou de la souris.

On obtient le joli résultat :
Dim Var1 as Integer
Dim Var2 as Boolean

If Not Var1 = 100 Then
End If


Et oui, il supprime la partie droite du "Not" et la remplace par la partie gauche au lieu de marquer la ligne en erreur de syntaxe.

On dit merci qui ? Merci Bill !!!

Bonne prog a tous. :)

6 réponses

Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
13
Testé et c'est vrai que c'est bizarre ça. M'enfin, pas étonnant de la part de Microsoft

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
Oui, c'est vrai qu'il vaut mieux s'attendre à tout avec les éditeurs, surtout en VBA.

Mais mon clavier et mon écran ont bien faillit y passer quand j'ai vu ma condition disparaitre comme par magie.

Surtout que lorsque ca met arrivé, je n'étais pas en train d'effacer un "And" (ce qui pourait à la limite être un peut bête).

Je venais de faire un copié/collé du style
Ifvar1 = 100 Not var2 then

ou le collage était "var1 = 100".

Et le bug c'est produit quand j'ai voulu ajouter un espace après le "If". Ne m'étant pas rendu compte que j'avais oublié de copier le "And" avec, je peux vous dire qu'il y a eu un cri primal avant de trouver le schmil. :)

Par contre, je n'ai pas d'Office 2007 sous la main. Si quelqu'un fait l'essai sous 2007 ca m'interresse.

(Note pour plus tard : Bannir le copier/coller)
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
13
Le cut/paste va très bien, il faut juste coller ce qu'on veut au bon endroit si on ne veut pas que la moitié de la condition disparaisse

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
74
Même effet sous 2007
Ce n'est pas un bug, mais la traduction des priorités des opérateurs dans l'analyse des conditions.
D'où l'intérêt des parenthèses pour séparer les conditions à tester :

If (Var1 = 100) And (Not Var2) Then

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
[quote="jack"]Ce n'est pas un bug, mais la traduction des priorités des opérateurs dans l'analyse des conditions./quote

Tout à fait d'accord, mais dans ce cas la ligne ne devrait-elle pas tout simplement pacer en rouge comme toute autre erreur de syntaxe ? Plutot que de faire disparaitre une partie de la condition ?
Messages postés
420
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
15 juillet 2014
5
Pour appuyer un peut ce que je veux dire jack, si vous écrivez en VB.NET :
If var1 = 100 Not var2 then
End If


Vous aurez une erreur de syntaxe "Fin d'instruction attendue" mais rien ne diparait.

(Je tiens à préciser que je n'essai pas de défendre l'immonde horreur d'avoir écrit une telle condition )