Liens dynamiques dans macros complémentaires

JeanMikael

XLDnaute Junior
Bonjour le forum, voilà mon problème en fait j'ai une macro complémentaires qui me sert pour plusieurs fichiers et le programme principale fait une comparaison entre plusieurs colonnes et me renvoi dans la colonne AN le mot "Erreur" s'il y a une erreur détecté le soucil c'est que quand je dois cliquez sur "Erreur" cela me renvoi a l'endroit ou il y a l'erreur mais sa ne marche pas en tant que macro complémentaires, par contre si je le met dans un module d'une feuille les liens dynamiques fonctionnent niquel, voici le code dans la feuil1 de la macro complémentaires

Code:
Public Sub Workbook_SheetSelectionChange(ByVal Target As Range)
If Target.Column = 33 And Target.Row > 2 And Not IsEmpty(ActiveCell) Then
  If ActiveCell = "Erreur" And ActiveCell.Offset(0, -9) = 0 Then
    ActiveCell.Offset(0, -9).Select

  End If
End If
If Target.Column = 34 And Target.Row > 2 And Not IsEmpty(ActiveCell) Then
  If ActiveCell = "Erreur" And ActiveCell.Offset(0, -9) = 0 Then
    ActiveCell.Offset(0, -9).Select

  End If
End If
If Target.Column = 35 And Target.Row > 2 And Not IsEmpty(ActiveCell) Then
  If ActiveCell = "Erreur" And ActiveCell.Offset(0, -9) = 0 Then
    ActiveCell.Offset(0, -9).Select

  End If
End If
If Target.Column = 36 And Target.Row > 2 And Not IsEmpty(ActiveCell) Then
  If ActiveCell = "Erreur" And ActiveCell.Offset(0, -9) = 0 Then
    ActiveCell.Offset(0, -9).Select

  End If
End If
If Target.Column = 37 And Target.Row > 2 And Not IsEmpty(ActiveCell) Then
  If ActiveCell = "Erreur" And ActiveCell.Offset(0, -17) = 0 Then
    ActiveCell.Offset(0, -17).Select

  End If
End If
If Target.Column = 38 And Target.Row > 2 And Not IsEmpty(ActiveCell) Then
  If ActiveCell = "Erreur" And ActiveCell.Offset(0, -17) = 0 Then
    ActiveCell.Offset(0, -17).Select

  End If
End If
If Target.Column = 39 And Target.Row > 2 And Not IsEmpty(ActiveCell) Then
  If ActiveCell = "Erreur" And ActiveCell.Offset(0, -17) = 0 Then
    ActiveCell.Offset(0, -17).Select

  End If
End If
If Target.Column = 40 And Target.Row > 2 And Not IsEmpty(ActiveCell) Then
  If ActiveCell = "Erreur" And ActiveCell.Offset(0, -17) = 0 Then
    ActiveCell.Offset(0, -17).Select

  End If
End If
End Sub

J'espère vraiment que vous m'aidrez car c'est très urgent et très important s'il faut je peux envoyé un fichier exmple bonne appetit.

Cordialement,
Jean-Mikaël
 

Luki

XLDnaute Accro
Re : Liens dynamiques dans macros complémentaires

salut JeanMikael

Sauf erreur, ta macro ne se déclenche que si elle est dans le classeur concerné.

Je pense que pour qu'elle fonctionne comme macro complémentaire, il faut que tu passe par la création d'un gestionnaire d'événements.

Pour vérifier si elle se déclenche, place un point d'arrêt en début de celle-ci et vois si tu passe en debbugage quand tu sélectionne une cellule. Si ce n'est pas le cas, c'est que ta macro ne se déclenche pas.

A suivre. N'hésites pas si besoin.
 

JeanMikael

XLDnaute Junior
Re : Liens dynamiques dans macros complémentaires

Bonjour Luki et merci de ta réponse, en fait dans la feuil1 de la macro complémentaires j'ai juste la création des liens dynamiques ma macro de comparaison fonctionne a partir d'un module de la macro complémentaires cette macro de comparaison fonctionne très bien étant donné quelle est dans le module, peut tu m'indiquer comment passer par un "gestionnaire d'évènement" s'il te plait c'est un peu flou pour moi merci d'avance.

Cordialement,
Jean-Mikaël
 

Luki

XLDnaute Accro
Re : Liens dynamiques dans macros complémentaires

Re,

je vais te préparer un exemple.

Auparavant, ce qu'il faut savoir:

une procédure évènementielle telle que "selection_change" ne peut pas être détectée par un classeur externe à ton classeur. c'est la cas ic, donc géstionnaire d'événement.

les macros sub et fonctions qui sont dans ton fichier macro comp peuvent être appelés par des boutons ou d'autres procédures.

A +
 

Luki

XLDnaute Accro
Re : Liens dynamiques dans macros complémentaires

Re,

voici un exemple qui comprend :
  1. 1 module de classe "Class_event" avec une proc évènementielle selection_change
  2. 1 module standard "Start_module"
  3. 1 module ThisWokbook avec une procédure "auto open"
Hormis la procédure selection change, c'est le minimum pour gérer des événements de classeur en dehors du classeur qui contient le code.

De plus, dans l'exemple de procédure, j'ai utilisé "select case" qui pourrait avantageusement remplacer tes blocs IF.
A+
 

Pièces jointes

  • exmeple gestionnaire événements.xls
    23 KB · Affichages: 56
  • exmeple gestionnaire événements.xls
    23 KB · Affichages: 57
  • exmeple gestionnaire événements.xls
    23 KB · Affichages: 58

Luki

XLDnaute Accro
Re : Liens dynamiques dans macros complémentaires

Re,

Voici ta procédure simplifiée, à coller dans le module Class_event

Code:
Private Sub xlApp_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)
' action à faire dès que la sélection change dans une feuille



    If Target.Row > 2 And Not IsEmpty(ActiveCell) Then
        Select Case Target.Column
            Case 33, 34, 35, 36
                If ActiveCell = "Erreur" And ActiveCell.Offset(0, -9) = 0 Then ActiveCell.Offset(0, -9).Select
            Case 37, 38, 39, 40
                If ActiveCell = "Erreur" And ActiveCell.Offset(0, -17) = 0 Then ActiveCell.Offset(0, -17).Select
        End Select
    End If

End Sub

regarde si ça marche et dis moi.
 

JeanMikael

XLDnaute Junior
Re : Liens dynamiques dans macros complémentaires

Hum... sa ne marche pas veux tu que je tenvoi le fichier par ce que la je bloque vraiment je sais plus du tout quoi faire je met le fichier en piece jointe si tu le veux bien.
 

Pièces jointes

  • test.xls
    22 KB · Affichages: 50
  • test.xls
    22 KB · Affichages: 52
  • test.xls
    22 KB · Affichages: 54

Luki

XLDnaute Accro
Re : Liens dynamiques dans macros complémentaires

Re,

je ne vois pas l'intérêt de passer par un lien Hypertexte, dans la mesure où tu cherches simplement à savoir si la cellule contient "Erreur". Si le lien a une autre utilité, il faudra peut-être corriger la macro. Dans l'immédiat, j'ai corrigé ton exemple en supprimant le lien.

Pour essayer :
  1. tu ouvres exemple macro complémentaire.xla ( pas de feuille visible, uniquement dans le vba)
  2. tu ouvres test xls
  3. tu cliques sur ta cellule "erreur"
Chez moi ça marche. Regarde et dis-moi.

A+
 

Pièces jointes

  • test.xls
    24.5 KB · Affichages: 41
  • test.xls
    24.5 KB · Affichages: 49
  • test.xls
    24.5 KB · Affichages: 40

Luki

XLDnaute Accro
Re : Liens dynamiques dans macros complémentaires

Re,
J'avais oublié que le xla ne passe pas.

Le même en XLS, c'est pareil.
 

Pièces jointes

  • exmeple gestionnaire événements.xls
    30.5 KB · Affichages: 39
  • exmeple gestionnaire événements.xls
    30.5 KB · Affichages: 42
  • exmeple gestionnaire événements.xls
    30.5 KB · Affichages: 42

Luki

XLDnaute Accro
Re : Liens dynamiques dans macros complémentaires

En fait, ta macro ne s'occupe pas du lien, mais seulement du contenu de la cellule ( Attention à la casse). Donc le lien ne sert à rien et ça devrait donc marcher.

Fais attention à une chose : tant que ton fichier de macro complémentaire est ouvert, il surveille tous tes classeurs. il faudra éventuellement lui apporter des restrictions si ça pose problèmes.
A+
 

Discussions similaires

Réponses
21
Affichages
883

Statistiques des forums

Discussions
311 711
Messages
2 081 783
Membres
101 817
dernier inscrit
carvajal