Exécuter une macro sous excel quand je change de ligne ou quand j'appuie sur la
cs_lulu85
Messages postés5Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention15 novembre 2008
-
13 nov. 2008 à 23:53
cs_lulu85
Messages postés5Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention15 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:
Exécuter une macro sous excel quand je change de ligne ou quand j'appuie sur la
cs_Orohena
Messages postés577Date d'inscriptionvendredi 26 septembre 2008StatutMembreDernière intervention20 novembre 20104 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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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...
cs_lulu85
Messages postés5Date d'inscriptionlundi 17 décembre 2007StatutMembreDernière intervention15 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?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 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