créer 2 macros evenementielles de meme type sur le workbook??

Tonino7

XLDnaute Occasionnel
Voilà, j'ai deux macros evenementielles de type worksheet_change , mais avec des target différentes.
Et visiblement, on ne peut pas en créer plusieurs. Pour la deuxieme, excel me dit que le nom de la macro est ambigu.
 

Tonino7

XLDnaute Occasionnel
Re : créer 2 macros evenementielles de meme type sur le workbook??

lol , nan c'est bon, y'a aucun souci avec la grosse tête. Etant un gros posteurs sur d'autres forums, j'ai l'habitude de casser les nouveaux lol

bon ben, en fait, j'vais te montrer ce que j'ai fait comme macro, parce que là, je bloque et ça m'énerve.



Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim c As Variant
If Target.Address = "$C$5" And Range("C5") <> "" Then
Application.EnableEvents = False
For Each c In Range("f1:f45")
If c <> vide Then
With c.Offset(0, 2)
.Value = c.Value
.Font.Bold = True
c.Offset(0, 1).Value = "Perfect"
End With
Sheets("Feuil2").Range(c.Address) = c.Offset(0, 2).Value
End If
Next c
Else
Range("G:G").Clear
Range("H:H").Clear
Sheets("feuil2").Range("F:F").Clear
End If
Application.EnableEvents = True
End Sub


Là où ça bloque, c'est la derniere partie, avec les "clear". C'est justement ça que j'voulais mettre dans une deuxieme macro evenementielle identique.
En fait, quand j'inscris quelque chose en C5, y'a toutes mes cellules non-vides qui se copient, et puis 2,3 conneries qui s'effectuent. Et ce que je veux, c'est que quand j'efface ce que j'ai marqué en C5, et bien, tout ce qui s'est copié précedemment dans les colonnes s'efface également. Et là, en l'occurence, j'ai 3 colonnes à supprimer, mais j'ai l'impression que la boucle met fait un vilain non-retour, ça s'arrete jamais.(hormis quand je n'ai qu'une seule colonne à effacer, mais 2 ou 3 en meme temps ça marche pas).


vOILà, j'te remercie.
 

Tonino7

XLDnaute Occasionnel
Re : créer 2 macros evenementielles de meme type sur le workbook??

Bon j'ai réussi à faire un clear sur les 2 colonnes G et H, en modifiant la plage comme ceci : Range("G:G", "H:H").clear
mais pour la colonne de la feuil2 à effacer, c'est une autre paire de manche. J'attends ton coup d'main.
 

Tonino7

XLDnaute Occasionnel
Re : créer 2 macros evenementielles de meme type sur le workbook??

Bon j'ai réussi à faire un clear sur les 2 colonnes G et H, en modifiant la plage comme ceci : Range("G:G", "H:H").clear
mais pour la colonne de la feuil2 à effacer, c'est une autre paire de manche. J'attends ton coup d'main.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : créer 2 macros evenementielles de meme type sur le workbook??

Bonsoir Amigo José, bonsoir Tonino7, le Forum

Juste une Question, ton évènementielle concerne quelle Feuille ? la Feuil2 ?

Ensuite "Application.EnableEvents = False" est toujours à consommer avec modération car dangereux dans les plantage si il n'est pas restauré....

Bonne Soirée
@+Thierry
 

Dan

XLDnaute Barbatruc
Re : créer 2 macros evenementielles de meme type sur le workbook??

Hello,

Comme le dit Thierry... "Application.EnableEvents = False"...faire gaffe... en tout cas FALSE à remettre à TRUE à la fermeture du fichier !!
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : créer 2 macros evenementielles de meme type sur le workbook??

Bonsoir Dan, re Tonino7

Oui comme dit Dan ;)

Oui j'ai vu que c'était "Workbook_SheetChange" mais j'ai mal formulé ma question, est-ce que cette évènementielle (la partie "Global all sheets")doit intervenir sur cette fameuse "Feuil2" ?, sinon c'est simple, un test suffit en début de code

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Dim c As Range

If Sh.Name <> "Feuil2" Then

Tu noteras "C" as Range mieux que Variant dans ce cas de figure...

Bonne Soirée
@+Thierry
 

Tonino7

XLDnaute Occasionnel
Re : créer 2 macros evenementielles de meme type sur le workbook??

j'ai pas tres bien compris ce que tu appelles par GLOBAL ALL SHEETS, mais, en tout cas, l'evenementielle intervient sur la feuil1. Tout se passe sur la feuil1. Et le probleme, c'est que je souhaite que 3 colonnes s'effacent dont 1 colonne de la feuil2 , si une cellule de la feuil1 s'efface.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : créer 2 macros evenementielles de meme type sur le workbook??

Re Tonino7

"Global All Sheets" est une expression inventée pour indiquer que cette évènementielle "Workbook_SheetChange" va Interagier sur Toutes les Feuilles Contenues dans la Globalité du Classeur... (c'est comme "Fast Food" et "Restaurant de Restauration Rapide" lol)

Donc si tu n'as pas besoin de faire intervenir ce code sur "GAS" (ça c'est style américain, trois initiales disent tout tout lol) il te suffit de faire une évènementielle en Feuille "Feuil1" (Voir mon Post pour Sacha ce soir "Majuscule", je lui en ai fait une avec le mode d'emploi)


Bonne Soirée
@+Thierry

 

Gorfael

XLDnaute Barbatruc
Re : créer 2 macros evenementielles de meme type sur le workbook??

Salut
le problème est tout simple :
ta macro est activée par une modification de la feuille
comme elle-même modifie la feuille, elle lance une deuxième instance d'elle-même. etc.
il existe une commande VBA qui bloque le lancement des macros événements, mais je ne la retrouve plus
Donc, une solution palliative
Public Flag_Var as boolean

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
if Flag_var = true then exit sub
Flag_var = true
...........
tes instructions
...........
Flag_Var = False
end sub

Tant que ta macro ne se sera pas executé jusqu'à la fin, elle courcircuitera les ligne d'instructions.

le mieux serait bien sûr :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Blocage des événements
...........
tes instructions
...........
Déblocage des événements
end sub
A+
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re : créer 2 macros evenementielles de meme type sur le workbook??

Salut Gorfael, re le Fil

Euh oui oui, je crois que tout le mode avait bien compris ceci, mais parfois il est bon de faire un rappel explicatif.

Par contre ta boolean ne pourra pas vraiment être efficace de la sorte, il faudrait qu'elle soit initialisée/désinitialisée depuis une macro "tiers" mais pas dans l'évènementielle elle-même....

Pour la commande VBA qui bloque le lancement, c'est bien celle que Tonino a utilisé et dont on a parlé avec Dan.

Mais bon, le problème semble solutionné depuis que Tonino n'a plus besoin de passé par une évènementielle Globale pour Tout le Classeur mais juste un évènementielle sur une seule Feuille.

Bonne nuit
@+Thierry
 

Gorfael

XLDnaute Barbatruc
Re : créer 2 macros evenementielles de meme type sur le workbook??

_Thierry à dit:
Salut Gorfael, re le Fil

Euh oui oui, je crois que tout le mode avait bien compris ceci, mais parfois il est bon de faire un rappel explicatif.

Par contre ta boolean ne pourra pas vraiment être efficace de la sorte, il faudrait qu'elle soit initialisée/désinitialisée depuis une macro "tiers" mais pas dans l'évènementielle elle-même....

Pour la commande VBA qui bloque le lancement, c'est bien celle que Tonino a utilisé et dont on a parlé avec Dan.

Mais bon, le problème semble solutionné depuis que Tonino n'a plus besoin de passé par une évènementielle Globale pour Tout le Classeur mais juste un évènementielle sur une seule Feuille.

Bonne nuit
@+Thierry
Salut à tous
Merci de ta réponse Thierry, mais entre le moment où j'ai commencé à répondre et celui où j'ai posté, Il s'est écoulé un temps certain, ce qui fait que je n'ai pas vu les posts donnant EnableEvents.

Et j'ai perdu le fil. Habitué à d'autres forums, j'ai du mal à m'y retrouver sur celui-ci, heureusement qu'il y a la notification qui me permet de retourner sur les problèmes qui m'interessent. Mais il va me falloir trouver une autre méthode qu'attendre un post pour retrouver le fil

Pour ma variable boolean, je la déclare en début de module et ça marche, c'est comme ça que je faisais avant de découvrir EnableEvents. Et comme l'aide VBA est toujours aussi pourrie, si tu ne connais pas la fonction exacte, tu ne la retrouves pas (moi, bêtement, je croyais qu'éventuellement une aide pouvait servir à ça)
A+
 

Discussions similaires

Réponses
26
Affichages
562

Membres actuellement en ligne

Statistiques des forums

Discussions
312 756
Messages
2 091 735
Membres
105 060
dernier inscrit
DEDJAN Gaston