Plusieurs Worksheet_Change dans un classeur ?

Fermé
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 - 18 janv. 2012 à 07:48
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 - 23 janv. 2012 à 14:13
Bonjour,

j'aurais voulu savoir s'il était possible d'avoir plusieurs routines Worksheet_Change dans un même classeur ? C'est à dire en écrire une sur une feuille pour qu'elle exécute certaines conditions sur cette feuille, et en écrire une sur une autre feuille pour qu'elle exécute d'autres conditions sur cette même feuille ?

Cordialement.


7 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 18/01/2012 à 09:41
Bonjour chossette

Non, 1 seule dans laquelle tu écris les différentes conditions de déclenchement ==> suite de if ou de select case
par ex
i
f not intersect(target, range("A1:A10") is nothing then 
   tonaction1 
end if 
if not intersect(target, range("A11:A20")  is nothing then 
   tonaction2 
end if

mais ça peut être un truc assez piègeux !!!
tu dis si ça coince: plus on est de fous... ;-)
Michel
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
18 janv. 2012 à 09:46
En fait ça coince parce que je veux réaliser une action sur une première feuille, et une seconde action sur d'autres feuilles.

J'ai essayé avec la
Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
seulement ça fonctionne pas.

N'ayant pas mon fichier près de moi (je suis au bureau), je vais essayer de créer rapidement un exemple de mon code macro :
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
	Dim feuilles As String, Feuilles2 As String
	feuilles = ("Bundesliga, Calcio, Ligue 1, Ligue 2, Liga BBVA, Premier League")
	feuilles2 = ("Buts")

	If InStr(feuilles, Sh.Name) > 0 Then
		macro1
	ElseIF InStr(feuilles2, Sh.Name) > 0 Then
		macro2
	End If
End Sub


En fait il s'agit d'un fichier pour suivre les résultats de championnats européens, ainsi que les classements des buteurs.

Si tu as besoin du fichier entier pour voir ce que je veux faire, je ne pourrais pas le donner avant ce soir :/

Cordialement.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 18/01/2012 à 10:05
si j'ai compris qu'il s'agit d'un déclenchement d'action suivant la feuille que tu actives

Private Sub Workbook_SheetActivate(ByVal Sh As Object) 
onglets = Array("feuil1", "feuil2", "feuil3", "feuil4") 
num = Application.Match(Sh.Name, onglets, 0) 
If num = 2 Then 
     MsgBox "action2" 
Else 
     MsgBox "action1" 

End If 

End Sub


Ca, tu peux l'essayer au bureau! :oD
Michel
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
18 janv. 2012 à 10:12
En fait non je me suis mal exprimé. Je vais essayer d'être clair, mais ça ne va pas être facile car sans le fichier sous les yeux, je crains de ne pouvoir me faire comprendre :

- j'ai une première macro qui doit se déclencher sur l'onglet "Buts". Cet onglet permet de faire un récapitulatif des buts marqués dans chaque match des différents championnats. Je marque donc le championnat, la date et l'heure, le buteur, pour quelle équipe, contre quelle équipe, s'il s'agit d'un CSC, d'un penalty, et le score avec ce but. En colonne O, dès que je marque "X" et appuie sur Entrée, la macro doit me rajouter le but dans l'onglet "Buteurs" (ou dans l'onglet "CSC" si le but est marqué contre son camp par le joueur)

- la seconde macro doit me permettre d'insérer une image dans différentes colonnes des feuilles "Bundesliga", "Calcio", "Ligue 1"... Ces feuilles ont le même modèle.
Lorsque je tape le nom d'un club en colonne E ou en colonne H et que j'appuie sur Entrée, la seconde macro affiche le logo du club a côté.

J'ai déjà créé les deux macro, seulement je ne sais pas comment faire pour les déclencher.

Merci de te pencher sur le problème. Si je ne suis toujours pas assez clair, il faudra attendre ce soir que je puisse envoyer mon fichier sur cjoint.com.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
18 janv. 2012 à 11:13
OK pour ce soir
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
18 janv. 2012 à 19:23
Bonsoir,

me revoilà, cette fois-ci avec mon fichier, qui permettra plus facilement de régler le problème auquel je fais face.

https://www.cjoint.com/?BAstvfrxB4E

J'ai mis les onglets sur lesquels portent les deux macros à tester (celle qui fonctionnera sur l'onglet Bundesliga devra fonctionner pour les onglets Calcio, Ligue 1, Ligue 2, Liga BBVA et Premier League).

Cordialement.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 janv. 2012 à 08:48
Bonjour,

Ok, bien reçu.

juste jeté un oeil donc... : où sont tes logos de club ?

je regarde dans la journée mais d'autres trucs à faire, sois patient!
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
19 janv. 2012 à 09:26
Bonjour Michel,

merci d'y avoir déjà jeté un coup d'oeil.

Alors effectivement pour les logo, j'ai mal joué le coup. Si jamais tu peux tester avec une image qui est sur ton ordinateur, et que ça marche, je retenterais chez moi avec le bon chemin.

Aucun problème si tu as d'autres choses à faire. Mon objectif est que ce fichier soit prêt pour la saison 2012-2013, qui ne commencera que fin Juillet au plus tôt :)

Cordialement.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 janv. 2012 à 12:21
OK, Merci
De toutes façons le top one c'est le Barça... :o)
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
Modifié par chossette9 le 19/01/2012 à 17:56
Ca on n'en doute pas, même si je suis un peu plus 'Parisien' dans l'âme :)
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
19 janv. 2012 à 17:58
je regarde demain matin ( ton pb, pas le PSG) à la fraiche
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
19 janv. 2012 à 20:53
Okay !

Merci de prévenir. Bonne soirée !
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
Modifié par Le Pingou le 19/01/2012 à 22:33
Bonjour,
Est-vous sur de votre formule, elle devrait correspondre à :
ActiveSheet.Pictures.Insert("C:\Users\jpp\Pictures\Divers\an2_pt.jpg").Select 

Peut-être un problème de [.... \.... ] qui manque ?

Salutations.
Le Pingou
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
19 janv. 2012 à 22:40
Pour le moment le code plante à l'appel de la fonction, il m'ouvre une popup avec
'Erreur de compilation : erreur de syntaxe'
0
Le Pingou Messages postés 12035 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 1 avril 2024 1 425
20 janv. 2012 à 00:09
Bonjour,
Si vous sortez de la routine principal vous pouvez passer la valeur de (Target.value) à un argument de votre procédue secondaire .
Sub secondaire ( targetval as string)
......
Club=targetval
....
End sub
Salutations.
Le Pingou
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 20/01/2012 à 07:45
Bonjour
tiré de mon grenier à adapter: insertion d'images dans un trombinoscope

   design = ThisWorkbook.Path & "\" & Ss_dossier & "\" & ident 
     'prend en compte le format de la photo 
     If Dir(design & ".png") <> "" Then design = design & ".png" 
     If Dir(design & ".jpg") <> "" Then design = design & ".jpg" 
     If Dir(design & ".jpeg") <> "" Then design = design & ".jpeg" 
     If Dir(design & ".gif") <> "" Then design = design & ".gif" 
     
    'mémorise la photo à afficher 
     Set cellule = Cells(lig, col) 
     On Error GoTo absence 'photo non disponible 

     Set image = ActiveSheet.Pictures.Insert(design) 
     'insere la photo dans le trombi 
     With image.ShapeRange 
          .Top = cellule.Top + 2 
          .Left = cellule.Left + 1 
          .Name = "numphoto" & cptr2 
         .Height = cellule.Height - 3 
          .Width = cellule.Width - 2 
          .LockAspectRatio = msoFalse 'garde les proportions de l'original 
    End With 
     Exit Sub 
      
absence: 
    cellule = "photo non disponible"


Evite au maximum les Select-selection et utilise les blocs (with -end with)
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
20 janv. 2012 à 09:02
Merci !! J'arrive à ajouter mes images dans le classeur en m'inspirant de ta macro ci-dessus.

Maintenant, comment dois-je faire pour que l'image s'adapte à la taille de la cellule ?
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
20 janv. 2012 à 09:18
bin tu as
.Height = cellule.Height - 3
.Width = cellule.Width - 2
.LockAspectRatio = msoFalse 'garde les proportions de l'original

-3 et -2 sont à adapter avec des essais

je bosse sur ton classement ; je vais te donner une proposition mais avec pas mal de questions
a' tadleur
0
chossette9 Messages postés 4239 Date d'inscription lundi 20 avril 2009 Statut Contributeur Dernière intervention 12 septembre 2014 1 306
23 janv. 2012 à 14:13
J'ai une autre question : quand j'utilise la macro pour insérer les images, cela fonctionne. Seulement, pour la lancer j'appuie sur Entrée. J'arrive donc à la cellule d'en dessous. Je suis donc obligé de préciser que mon image doit s'implanter sur la ligne d'au dessus.

Ce principe ne fonctionne pas si jamais je me mets à taper sur tabulation, ou en utilisant les flèches directionnelles du clavier.

Ma question est donc : y a-t-il possibilité de tester sur quelle touche j'appuie, et donc de varier certaines valeurs en conséquences ?

Cordialement.
0