Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Macro exécutée 2 fois ?

Iznogood1

XLDnaute Impliqué
Bonjour,

soit un menu (Popup) avec plusieurs boutons.
Les boutons appellent la même procédure en lui passant un paramètre optionnel.

Résultat surprenant :
  • Si pas de paramètre, la procédure est exécutée normalement
  • Si on passe un paramètre, elle est exécutée 2 fois

(et dans ce cas le pas à pas ne fonctionne pas, même avec l'instruction Stop dans la procédure)!

Quelqu’un sait comment résoudre ce problème ?


Ci-joint un exemple :
 

Pièces jointes

  • DemoPopup .xlsm
    18.6 KB · Affichages: 41
  • DemoPopup .xlsm
    18.6 KB · Affichages: 46
  • DemoPopup .xlsm
    18.6 KB · Affichages: 45

gilbert_RGI

XLDnaute Barbatruc
Re : Macro exécutée 2 fois ?

Bonjour,

comme ceci peut-être


VB:
Sub callBack(Optional param As String)
'Static i As Integer
    i = i + 1
    If i > 1 Then Exit Sub
    If param = "" Then
        MsgBox i & " Appel sans paramètre"
    Else
        MsgBox i & " Appel avec paramètre : " & param
    End If
End Sub

en déclarant Public i As Integer et mettre i =0 dans la création de menu
 

Pièces jointes

  • DemoPopup .xlsm
    22.6 KB · Affichages: 26
  • DemoPopup .xlsm
    22.6 KB · Affichages: 29
  • DemoPopup .xlsm
    22.6 KB · Affichages: 35
Dernière édition:

Iznogood1

XLDnaute Impliqué
Re : Macro exécutée 2 fois ?

Merci Gilbert,

je n'y avais pas pensé.

Du coup on peut se passer de variable globale (beurk ) en modifiant le callBack comme suit :
Code:
Sub callBack(Optional param As String = "")
  Static i As Integer
  If param = "" Then
    MsgBox i & " Appel sans paramètre"
    i = i + 1
  Else
    If i = 0 Then
      MsgBox i & " Appel avec paramètre : " & param
      i = i + 1
    Else
      i = 0
    End If
  End If
End Sub

Ces deux solutions résolvent le problème, mais le mystère demeure sur cet étrange comportement

Merci encore.
 

Discussions similaires

Réponses
25
Affichages
768
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…