Bug éditeur VBA

foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 - 23 juil. 2010 à 15:05
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 - 25 juil. 2010 à 11:23
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

cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
24 juil. 2010 à 16:31
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
0
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
24 juil. 2010 à 18:23
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)
0
cs_ghuysmans99 Messages postés 3982 Date d'inscription jeudi 14 juillet 2005 Statut Membre Dernière intervention 30 juin 2013 16
24 juil. 2010 à 21:57
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
0
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
25 juil. 2010 à 10:27
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)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
25 juil. 2010 à 11:12
[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 ?
0
foliv57 Messages postés 420 Date d'inscription vendredi 17 novembre 2006 Statut Membre Dernière intervention 15 juillet 2014 9
25 juil. 2010 à 11:23
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 )
0
Rejoignez-nous