VBA - Fonction Run - lancer une macro

Hub

XLDnaute Occasionnel
Bonjour à tous,

Dans le fichier joint, vous trouverez la macro suivante :

Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("Feuil1").Select
Dim C4_X As Variant
C4_X = "C4_" & Range("C1")
Range("A4").Value = C4_X 'permet de vérifier le résultat de la variable
If Intersect(Sheets("Feuil1").Range("C4"), Range("C4")) Is Nothing Then Exit Sub
' Application.Run C4_X
End Sub

Lorsque la fonction Application.Run C4_X est inhibée, on peut exécuter manuellement les macros C4_1 C4_2 ou C4_3.
(c'est la cas actuellement)

Lorsque la fonction Application.Run C4_X est opérationnelle, ca beug. De plus, on ne peut plus exécuter les macros manuellement !

L’erreur serait elle dans « If Intersect(Sheets("Feuil1").Range("C4"), Range("C4")) Is Nothing » ? Faut-il répeter Range("C4"), Range("C4") ?

D’avance merci pour vos suggestions.
 

Pièces jointes

  • Fct Run - lance une macro.xls
    46.5 KB · Affichages: 39

Dranreb

XLDnaute Barbatruc
Re : VBA - Fonction Run - lancer une macro

Bonjour.
Oui… ça risque pas de se terminer autrement que par une saturation de la pile avec ces procédures qui n'arrêtent pas de provoquer tout le temps la réexécution de la Worksheet_Change initiale en modifiant des cellules !
Mettez au moins Application.EnableEvents = False devant Application.Run C4_X et Application.EnableEvents = True derrière.
 

Hub

XLDnaute Occasionnel
Re : VBA - Fonction Run - lancer une macro

Bonjour Bernard,

Je ne pense pas me tromper de beaucoup en écrivant Dranereb en « vers l’en » => Bernard !

Le fait de rajouter « Application.EnableEvents = » n’a pas résolu le problème.
Mes notions en VBA sont trops basics. Je n’ai aucune connaissance des capacités d’empilage d’information de VBA et de ses limites de performance. Je ne sais pas où trouver ces infos.
Que conseillez-vous pour rester dans un contexte similaire au fichier « Fct Run - lance une macro » ?

En attendant votre réponse, je vais essayer de lancer les macros C4_1 C4_2 ou C4_3 du module 1 non plus à l’aide « Private Sub Worksheet_Change » mais à partir de cases à options liées aux macros C4_1 C4_2 ou C4_3. Cette solution résoudra peut être les contraintes liées aux capacités d’empilage de VBA mais présentera d’autres problèmes pour une plage de possibiltés supérieure à 10, autant de case à option que de possibilité…

@+
 

Discussions similaires

Réponses
7
Affichages
321

Statistiques des forums

Discussions
312 201
Messages
2 086 166
Membres
103 149
dernier inscrit
Deepkneec