Exécuter une macro à chaque changement de cellule (déplacement)

Bonsoir,

Malgré mes efforts de recherche je ne trouve pas de solution et je désespère.

J'ai une macro qui me permet d'aller chercher et afficher dans une ligne, des données contenues dans une autre feuille en fonction de la ligne sur laquelle je me trouve actuellement.

J'aimerais exécuter celle-ci à chaque déplacement dans ma matrice, ou encore mieux, à chaque fois que je change de ligne.

Ci-joint une version très simplifiée de ma macro et de son application:

Ma feuille utilisée est Sheet2

En gros je fais une RechercheV glorifiée de Sheet2.(A, ligne active) dans Sheet1 et affiche les informations correspondantes en Sheet2.B14 et Sheet2.C14.

J'aimerais que lorsque je passe de la ligne 2 à la ligne 3 les données affichées en B14 et C14 changent de façon dynamique et je ne sais pas comment faire.

D'avance merci de votre aide

Bonjour PotatoSho et bienvenue,

à tester,

copier ce code sur la page code de la feuille "Sheet2"

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
rw = Application.Match(Target, Sheets("Sheet1").Range("A:A"), 0)
If Not IsError(rw) Then
 Range("B16") = Sheets("Sheet1").Range("B" & rw).Value
 Range("C16") = Sheets("Sheet1").Range("C" & rw).Value
End If
End Sub

Bonjour,

Merci beaucoup pour ta réponse i20100.

La macro fonctionne mais ne s'exécute que sur un mouvement sur la colonne A, si je passe de A1 à A2 le changement d'informations affichées s'effectue bien, si je passe de X1 à X2 ou n'importe quelle autre colonne de [Colonne]1 à [Colonne]2, ça ne fait rien.

Comment la macro peut-elle évoluer de sorte que si je suis dans le second cas, la macro fonctionne aussi?

A savoir que je me sers bien de la donnée en Colonne A sur la ligne active pour afficher mes informations.

Merci encore!

La macro fonctionne mais ne s'exécute que sur un mouvement sur la colonne A, si je passe de A1 à A2 le changement d'informations affichées s'effectue bien, si je passe de X1 à X2 ou n'importe quelle autre colonne de [Colonne]1 à [Colonne]2, ça ne fait rien.

Comment la macro peut-elle évoluer de sorte que si je suis dans le second cas, la macro fonctionne aussi?

pour débuter il faudrait connaitre quel est la ou les plages à intersecter pour déclencher la macro ?

et puis selon la cellule qui a déclencher la macro, quel est ou sont les cellules à modifier ?

J'ai du mal à exprimer l'intersection à faire mais le comportement que j'aimerais est le suivant:

Lorsque je me situe sur la ligne 1, peu importe la colonne, je vais toujours comparer Sheet2.A1 à Sheet2.A

Lorsque je me situe sur la ligne 3, peu importe la colonne, je vais toujours comparer Sheet2.A3 à Sheet2.A

Les cellules à modifier sont statiques: Sheet2.B16 et Sheet2.C16 (ci-après appelées cellules cible)

Les données à afficher dans ces colonnes sont toujours celles contenues dans les cellules B et C de la ligne correspondante.

Ainsi, sur mon fichier, lorsque je travaille sur Sheet2

Je me situe en B1 : mes cellules cible affichent "Info(2;B)" "Info(2;C)"

Je bouge en C1: mes cellules cible affichent toujours la même chose.

Je bouge en C2: mes cellules cible affichent "Info(6;B)" "Info(6;C)"

Je bouge en X3: mes cellules cible affichent "Info(1;B)" "Info(1;C)"

En espérant avoir été en mesure de répondre aux questions.

Merci de ta patience et de ton aide.

re,

peux-tu joindre un fichier reflétant ton explication ?

Bonjour,

Désolé, je n'ai pas pu répondre avant.

Ma macro était un peu foireuse dans le fichier de base. Lancer la macro ShowMeTheData enregistrée dans le fichier en PJ illustre le comportement que je souhaite, juste pas de manière automatisée.

Exécuter la macro en sur n'importe quelle cellule de la ligne 1, A1, C1 ou J1 par exemple, retourne en B16 [ Info(2;B) ] et en C16 [ Info(2;C) ]

Exécuter la macro en A2, C2 ou J2 retourne en B16 [ Info(6;B) ] et en C16 [ Info(6;C) ]

Exécuter la macro en A3, C3 ou J3 retourne en B16 [ Info(1;B) ] et en C16 [ Info(1;C) ]

EDIT: Je précise, même si c'est peut être assez explicite, que mon exemple n'est qu'un exemple pour illustrer le comportement que j'attends. Le tableur sur lequel je travaille comporte beaucoup plus de lignes mais a le même comportement.

Je reste à disposition si ce n'est toujours pas clair.

Encore une fois merci !

re,

dans ce nouveau cas je ne comprend plus la relation entre la feuille Sheet1 et Sheet2 ?

Bonjour i20100,

J'affiche en Sheet2 des valeurs contenues en Sheet1:

  • La macro va lire la valeur de la cellule en Colonne A sur la ligne actuellement sélectionnée.
  • Elle va comparer cette valeur à la Colonne A de Sheet1
  • Elle renvoie les valeurs en Colonne B et Colonne C sur la ligne correspondante dans les cellules cible.

D'où:

J'exécute ma macro en Sheet2, colonne D, ligne 2:

  • La macro lit Sheet2.A2, la valeur trouvée est 6.
  • La macro cherche 6 dans la Sheet1.A:A
  • La valeur est trouvée en Sheet1.A6
  • On renvoie les valeurs de Sheet1.B6 et Sheet1.C6 dans les cellules cible (Sheet2.B16, Sheet2.C16)

re,

désolé je ne comprend pas plus

Bonjour à tous,

c'est presque ce que tu faisais isabelle :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim v
    v = Cells(Target.Row, 1)
    rw = Application.Match(v, Sheets("Sheet1").Range("A:A"), 0)
    If Not IsError(rw) Then
        Range("B16") = Sheets("Sheet1").Range("B" & rw).Value
        Range("C16") = Sheets("Sheet1").Range("C" & rw).Value
    Else
        Range("B16").ClearContents
        Range("C16").ClearContents
    End If
End Sub

eric

Bonjour,

Merci beaucoup eriiic, c'est exactement ce qu'il me fallait.

Merci beaucoup à toi aussi i20100, désolé pour le manque de clarté dans mes explications.

Rechercher des sujets similaires à "executer macro chaque changement deplacement"