Exécuter une macro sous excel quand je change de ligne ou quand j'appuie sur la

cs_lulu85 Messages postés 5 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 15 novembre 2008 - 13 nov. 2008 à 23:53
cs_lulu85 Messages postés 5 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 15 novembre 2008 - 15 nov. 2008 à 11:39
Bonjour,

Je suis débutant et je galère...
En faite j'arrive à éxécuter une macro en cliquant sur un bouton par exemple, mais je souhaiterais que cette macro s'exécute automatiquement quand je passe à une autre cellule ou à une autre ligne plus précisement.
Sachant qu'à chaque ligne une macro différente doit s'éxécuter.

Il me faudrait donc une solution où la macro se lance quand j'arrive sur une nouvelle ligne ou quand j'appuie sur la flèche du haut ou du bas.

Si qq un peut m'aider, un grand merci d'avance...
A voir également:

9 réponses

cs_Orohena Messages postés 577 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 20 novembre 2010 4
14 nov. 2008 à 03:19
Bonjour lulu85

>> Je suis débutant et je galère. ça ne te consolera peut-être pas, mais moi je suis vétéran et je galère toujours

Dans le code de ta feuille de calcul, colle le bout de programme ci-dessous :

Option Explicit
Private ancLigne as long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    dim ligne as Long
    ligne = Target.Row
    if ligne <> ancLigne then maMacro   ' appelle maMacro si changement de ligne
    ancLigne = ligne
End Sub

Ce code événementiel s'exécutera chaque fois que tu changes de cellule. S'il y a un changement de ligne, la macro maMacro (change le nom) s'exécutera.

Seul le code ci-dessus doit obligatoirement se trouver dans le code de ta feuille de calcul (car il est lié à celle-ci par les événements). Tu peux mettre maMacro dans un module.

Ta macro maMacro peut savoir quelle ligne est atteinte, par ActiveCell.Row

Voilà, j'espère avoir répondu à ta question.

Cordialement
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 nov. 2008 à 08:08
Salut,
"Sachant qu'à chaque ligne une macro différente doit s'éxécuter."

est tu sur que tu ne peux pas essayer de factoriser TOUTE tes macro en une seule (ce sera plus lisible) car sinon il va falloir faire un Select Case sur la Ligne pour savoir quoi lancer.

@+: Ju£i€n
Pensez: Réponse acceptée
0
cs_lulu85 Messages postés 5 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 15 novembre 2008
14 nov. 2008 à 11:16
Bonjour,

merci pour la réponse. Pour être très précis, à chaque ligne correspond sa macro.

J'espère que je vais réussir à m'en sortir avec ce que tu m'as donné sinon je ferais de nouveau appel à tes compétences

Encore merci

Cordialement
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 nov. 2008 à 11:21
Salut,
Est ce que les macros à appeler ont une "logique" de nommage?

Exemple: MacroLigne1 pour la ligne 1 MacroLigneX pour la ligne X?

Si oui tu peux peu être utiliser CallByName

Essaide de nous donner le plus d'infos possibles, sans forcément attendre qu'on te les demandes nous irons plus vite.

Si non tu devras comme je le disais plus haut utliser Select Case

Exemple

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim ligne As Long
   Select Case Target.Row
       Case 1: Call Macrop 'MacroP pour ligne1
       Case 2, 3: Call MacroX 'MacroX pour ligne 2 et 3
   End Select
End Sub , ----
[../code.aspx?ID=41455 By Renfield]
Bref, il manque plus d'infos pour avoir toutes les clés en mains...

@+: Ju£i€n
Pensez: Réponse acceptée
0

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

Posez votre question
cs_lulu85 Messages postés 5 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 15 novembre 2008
14 nov. 2008 à 12:03
Bonjour,

Ok désolé, je vais être plus précis. (je n'ai pas encore l'habitude!)

Donc, j'ai un tableau excel à 2 colonnes et 280 lignes 
Actuellement en face les 2 cellules de chaque ligne, j'ai un bouton pour lancer la macro (lance un fichier son .wav). Je clic donc sur le bouton et après je complète les 2 cellules (c'est un test phonétique.)
Le problème c'est que je perd du temps à cliquer sur le bouton alors qu'à chaque fois que je change de ligne avec la flêche du bas il faudrait que la macro correspondante à la ligne s'exécute automatiquement que je sois dans la première ou la deuxième colonne.

Voilà. Est-ce que tu as besoin d'informations complémentaires?

Merci beaucoup pour votre aide.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 nov. 2008 à 14:53
Re,
bah déjà essaie de répondre aux questions que l'on te pose.

"Est ce que les macros à appeler ont une "logique" de nommage?
Exemple: MacroLigne1 pour la ligne 1 MacroLigneX pour la ligne X?"

@+: Ju£i€n
Pensez: Réponse acceptée
0
cs_lulu85 Messages postés 5 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 15 novembre 2008
14 nov. 2008 à 15:55
Je sais pas si ça va répondre à ta question.(je pense que oui)

Actuellement c'est par exemple ligne 5 bouton 1 -> macro 1
                                                ligne 6 boutton 2 ->macro 2
                                                .........................................

Tout se suit donc je pense que c'est ce que tu appelles logique de nommage.

Sachant que s'il faut, je peux renommer ma macro1 "macroligne5".

Voilà merci
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
14 nov. 2008 à 16:01
Salut,
dans ce cas regarde peut être si tu peux t'en sortir avec CallByName
quitte à mettre les macro dans un Module de Classe
@+: Ju£i€n
Pensez: Réponse acceptée
0
cs_lulu85 Messages postés 5 Date d'inscription lundi 17 décembre 2007 Statut Membre Dernière intervention 15 novembre 2008
15 nov. 2008 à 11:39
Salut

Merci je vais essayer de m'en sortir avec ce que tu m'as donné.

Cordialement
0
Rejoignez-nous