Rapport de message :*
 

Re: Exécution d'une Macro selon donnée sélectionnée dans une liste déroulante

Titre du sujet : Re: Exécution d'une Macro selon donnée sélectionnée dans une liste déroulante
par Guy le 20/07/2013 20:22:45

Bonjour targa,

 

Je passe sur le côté approximatif du montage de l'application et la méthode choisie pour filtrer les données.

 

En attendant de peaufiner davantage essaie de remplacer

Private Sub Worksheet_Change(ByVal Target As Range)
 If [G1] = "MT10" Then MacroMT_10
 If [G1] = "MT31" Then MacroMT_31
 If [G1] = "MT34" Then MacroMT_34
 If [G1] = "MT36" Then MacroMT_36
 If [G1] = "MT36_pont" Then MacroMT_36_pont
 If [G1] = "MT41" Then MacroMT_41
 If [G1] = "MT42" Then MacroMT_42
 If [G1] = "MT44" Then MacroMT_44
 If [G1] = "MT45" Then MacroMT_45
 End Sub

par

Private Sub Worksheet_Change(ByVal Target As Range)
 If [G1] = "MT10" Then Call MT_10
 If [G1] = "MT31" Then Call MT_31
 If [G1] = "MT34" Then Call MT_34
 If [G1] = "MT36" Then Call MT_36
 If [G1] = "MT36_pont" Then Call MT_36_pont
 If [G1] = "MT41" Then Call MT_41
 If [G1] = "MT42" Then Call MT_42
 If [G1] = "MT44" Then Call MT_44
 If [G1] = "MT45" Then Call MT_45
 End Sub

Le mot réservé Call est indiqué mais pas obligatoire.

Aussi tu auras remarqué qu'en compilant, habitude à prendre impérativement, une erreur se produit sur l'une quelconque des lignes

If [G1] = "UneValeur" Then MacroUneValeur

Aucune procédure publique du module ne porte Macro en préfixe, d'où l'erreur de compilation. Par exemple MacroMT_45 n'existe pas alors que MT_45 est bien nommée.

 

Voilà, remplace ton bout de code par celui fourni et dis-moi si ça fonctionne.

 

Cordialement,

 

Guy