Plusieurs Worksheet_Change dans un classeur ?

chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   -  
chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   -
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.



--
Ce mec la n'était pas une lumière, car il était niais.

7 réponses

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    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
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      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
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      OK pour ce soir
      0
  4. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      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
    2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      OK, Merci
      De toutes façons le top one c'est le Barça... :o)
      0
    3. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      Ca on n'en doute pas, même si je suis un peu plus 'Parisien' dans l'âme :)
      0
    4. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      je regarde demain matin ( ton pb, pas le PSG) à la fraiche
      0
    5. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      Okay !

      Merci de prévenir. Bonne soirée !
      0
  7. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
     
    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
    1. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      Pour le moment le code plante à l'appel de la fonction, il m'ouvre une popup avec
      'Erreur de compilation : erreur de syntaxe'
      0
    2. Le Pingou Messages postés 12273 Date d'inscription   Statut Contributeur Dernière intervention   1 476
       
      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
    3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
    4. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
       
      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
    5. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
  8. chossette9 Messages postés 6855 Date d'inscription   Statut Contributeur Dernière intervention   1 313
     
    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