Activer macro en permanence
Résolu
skeumy
Messages postés
5
Date d'inscription
Statut
Membre
Dernière intervention
-
skeumy Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
skeumy Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Ma question vous paraitra peut etre naïve, mais est il possible de faire tourner une macro en parmanence au lieu de cliquer sur un bouton par exemple. Je m'explique:
J'ai une macro qui prend une valeur d'une cellule A1 d'une feuille 1 pour la placer dans une cellule B2 d'une feuille 2. Actuellement, si je modifie la valeur en A1, je dois lancer manuellement ma macro pour que B2 soit effectivement modifiée.
J'aimerai donc que dès que la valeur en A1 est modifiée, cela modifie dessuite la valeur en B2.
Si une solution existe, cela m'arangera grandement car j'ai un paquet de cellules a mettre a jour en fonction d'autre feuilles et j'aimerai passer par le vba au lieu des formules habituelles.
Merci à vous.
Ma question vous paraitra peut etre naïve, mais est il possible de faire tourner une macro en parmanence au lieu de cliquer sur un bouton par exemple. Je m'explique:
J'ai une macro qui prend une valeur d'une cellule A1 d'une feuille 1 pour la placer dans une cellule B2 d'une feuille 2. Actuellement, si je modifie la valeur en A1, je dois lancer manuellement ma macro pour que B2 soit effectivement modifiée.
J'aimerai donc que dès que la valeur en A1 est modifiée, cela modifie dessuite la valeur en B2.
Si une solution existe, cela m'arangera grandement car j'ai un paquet de cellules a mettre a jour en fonction d'autre feuilles et j'aimerai passer par le vba au lieu des formules habituelles.
Merci à vous.
A voir également:
- Macro permanente
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Partage de position permanente - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro maker - Télécharger - Divers Utilitaires
4 réponses
Bonjour,
Ce qui est possible, c'est d'executer une macro chaque fois qu'une cellule est modifiée, en utilisant la procédure évènementielle Worksheet_Change().
Par exemple, ouvre un nouveau classeur et colle cette procédure dans le code de Feuil1
Dans Feuil1, remplis une cellule et appuie sur Enter ou déplace la souris, un message s'affiche avec la référence de la cellule modifiée.
Sur le meme principe, si tu veux executer une macro chaque fois que tu modifie une cellule de la colonne A
A+.
Ce qui est possible, c'est d'executer une macro chaque fois qu'une cellule est modifiée, en utilisant la procédure évènementielle Worksheet_Change().
Par exemple, ouvre un nouveau classeur et colle cette procédure dans le code de Feuil1
Private Sub Worksheet_Change(ByVal Target As Range) MsgBox Target.Address End Sub
Dans Feuil1, remplis une cellule et appuie sur Enter ou déplace la souris, un message s'affiche avec la référence de la cellule modifiée.
Sur le meme principe, si tu veux executer une macro chaque fois que tu modifie une cellule de la colonne A
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 1 Then 'si colonne A Call Macro1 'appeler Macro1 End if End Sub
A+.
Merci pour ta solution. Cela fonctionne. Maintenant, cela soulève deux nouveaux problèmes ;) Voici lequels :
1- j'ai inséré manuellement les lignes de codes à la feuille intéréssée afin de faire le test. Cependant, dans mon fichier, cette fameuse feuille est créée automatiquement par une autre macro (nommons la "creerfeuille"). Du coup, connait tu la procédure (enfin ,le code a priori) qui pemet d'integrer directement ta solution a la nouvelle feuille sans devoir a chaque fois mettre les lignes de code de ta solution manuellement?
En clair, comment integrer ces lignes de code à chaque nouvelles feuilles crées par ma macro "creerfeuille".
2- Ma macro "modifcellule" sert donc a modifier une cellule de la feuille 1 en fct d'une modif' sur la feuille 2. Le soucis est que ta solution me renvoi a la feuille 1 dessuite apres modifier la cellule en feuille 2. Comment eviter cela et rester sur la feuille 2 pour d'autres modifications.
J'espere que mes explications sont claires :X
En tout cas, merci bien !!
1- j'ai inséré manuellement les lignes de codes à la feuille intéréssée afin de faire le test. Cependant, dans mon fichier, cette fameuse feuille est créée automatiquement par une autre macro (nommons la "creerfeuille"). Du coup, connait tu la procédure (enfin ,le code a priori) qui pemet d'integrer directement ta solution a la nouvelle feuille sans devoir a chaque fois mettre les lignes de code de ta solution manuellement?
En clair, comment integrer ces lignes de code à chaque nouvelles feuilles crées par ma macro "creerfeuille".
2- Ma macro "modifcellule" sert donc a modifier une cellule de la feuille 1 en fct d'une modif' sur la feuille 2. Le soucis est que ta solution me renvoi a la feuille 1 dessuite apres modifier la cellule en feuille 2. Comment eviter cela et rester sur la feuille 2 pour d'autres modifications.
J'espere que mes explications sont claires :X
En tout cas, merci bien !!
Re,
1) A la place de la procédure Worksheet_Change() au niveau de la feuille, il faut utiliser la procédure Workbook_SheetChange() au niveau du classeur.
exemple: dans un nouveau classeur colle cette procédure dans le code de ThisWorkbook
Quelle que soit la feuille active, chaque modification de cellule affiche un message avec le nom de la feuille et les références de la cellule.
A toi de bien gérer les propriétés ActiveSheet.Name, Target.Address, Target.Column, Target.Row pour savoir s'il faut executer une macro du genre:
If ActiveSheet.Name="Feuil1" Then Call Macro1
2) termine ta macro par :
tu peux remplacer "feuil1" par une variable; si tu as une feuille nommée "Ventes"
A+.
1) A la place de la procédure Worksheet_Change() au niveau de la feuille, il faut utiliser la procédure Workbook_SheetChange() au niveau du classeur.
exemple: dans un nouveau classeur colle cette procédure dans le code de ThisWorkbook
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range) MsgBox ActiveSheet.Name & " " & Target.Address End Sub
Quelle que soit la feuille active, chaque modification de cellule affiche un message avec le nom de la feuille et les références de la cellule.
A toi de bien gérer les propriétés ActiveSheet.Name, Target.Address, Target.Column, Target.Row pour savoir s'il faut executer une macro du genre:
If ActiveSheet.Name="Feuil1" Then Call Macro1
2) termine ta macro par :
ThisWorkbook.Sheets("feuil1").Activate
tu peux remplacer "feuil1" par une variable; si tu as une feuille nommée "Ventes"
MaFeuille="Ventes" ThisWorkbook.Sheets(MaFeuille).Activate
A+.