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 :confused:

Merci encore.
 

Discussions similaires

Réponses
25
Affichages
665

Statistiques des forums

Discussions
312 248
Messages
2 086 595
Membres
103 252
dernier inscrit
Ersar