![]() |
|
Forum
|
|
|
#1 (permalink) |
|
XLDnaute Junior
Date d'inscription: juillet 2006
Messages: 85
|
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. |
|
|
|
| ANNONCES | |||
|
|
|
|
#2 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Localisation: Saint Philbert de Grand Lieu
Version Excel : Excel XP (PC)
Messages: 4 597
|
Re Tonino,
Ca m'a l'air d'être la suite de ta question précédente. Si tu posais ta question en entier, ça nous avancerait. Tu n'as droit qu'à un seul évènement Worksheet_Change par feuille (bah oui c'est comme ça). A toi de tester l'adresse de la Target pour agir en conséquence dans ta macro. Bonne soirée.
__________________
![]() A+ ![]() |
|
|
|
|
|
#3 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Localisation: Saint Philbert de Grand Lieu
Version Excel : Excel XP (PC)
Messages: 4 597
|
Je m'explique avant qu'on ne me soupçonne d'avoir "la grosse tête" une fois de plus :
Si tu fais deux Sub Worksheet_Change(blabla...), je ne vois pas comment Excel saurait vers lequel se diriger en cas de changement. Il faut tester l'adresse de ta cellule modifiée qui est donnée par l'argument Target pour agir en conséquence. Exemple : Private Sub Worksheet_Change(ByVal Target As Range) Select Case Target.Address Case "$A$1" ' Ton traitement pour A1 Case "$A$2" ' Ton traitement pour A2 Case Else ' Ton traitement pour autre chose End Select End Sub Il y a d'autres façons de faire, mais c'est le principe. Je suis à ta disposition si tu as besoin de plus de précisions. Bonne soirée. EDIT : Ceci-dit, c'est vrai que j'ai une grosse tête (sur l'avatar), mais les chevilles ça va... ![]() ![]() ![]()
__________________
![]() A+ ![]() Dernière modification par jmps ; 08/07/2006 à 21h49. |
|
|
|
|
|
#4 (permalink) |
|
XLDnaute Junior
Date d'inscription: juillet 2006
Messages: 85
|
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. |
|
|
|
|
|
#5 (permalink) |
|
XLDnaute Junior
Date d'inscription: juillet 2006
Messages: 85
|
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. |
|
|
|
|
|
#6 (permalink) |
|
XLDnaute Junior
Date d'inscription: juillet 2006
Messages: 85
|
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. |
|
|
|
|
|
#7 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 100
|
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 |
|
|
|
|
|
#9 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Localisation: Liège
Version Excel : Excel 2004 (MAC)
Messages: 3 551
|
Hello,
Comme le dit Thierry... "Application.EnableEvents = False"...faire gaffe... en tout cas FALSE à remettre à TRUE à la fermeture du fichier !! |
|
|
|
|
|
#10 (permalink) | |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 100
|
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 Citation:
Bonne Soirée @+Thierry |
|
|
|
|
|
|
#11 (permalink) |
|
XLDnaute Junior
Date d'inscription: juillet 2006
Messages: 85
|
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.
|
|
|
|
|
|
#12 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 100
|
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 |
|
|
|
|
|
#13 (permalink) | ||
|
XLDnaute Accro
Date d'inscription: avril 2006
Localisation: Basse Goulaine
Version Excel : Excel 2003 (PC)
Messages: 1 408
|
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 Citation:
le mieux serait bien sûr : Citation:
|
||
|
|
|
|
|
#14 (permalink) |
|
XLDnaute Barbatruc
Date d'inscription: février 2005
Messages: 3 100
|
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 |
|
|
|
|
|
#15 (permalink) | |
|
XLDnaute Accro
Date d'inscription: avril 2006
Localisation: Basse Goulaine
Version Excel : Excel 2003 (PC)
Messages: 1 408
|
Citation:
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+ |
|
|
|
|
|
| ANNONCES | ||
![]() |
| Liens sociaux |
| Outils de la discussion | |
|
|
Discussions similaires
|
||||
| Discussion | Auteur | Forum | Réponses | Dernier message |
| creer un nouveau type de graphique | vincente | Forum Excel | 1 | 21/06/2005 18h13 |
| 2 macros évènementielles??? | Jacques | Forum Excel Downloads - Archives | 2 | 05/02/2005 00h56 |
| créer un bouton et une feuille type | petchy | Forum Excel Downloads - Archives | 3 | 03/02/2005 09h38 |
| Macros Evenementielles | Vincent | Forum Excel Downloads - Archives | 0 | 13/10/2004 19h27 |
| Effacer Workbook.save de mes macros | nicole | Forum Excel Downloads - Archives | 2 | 03/06/2004 15h26 |