Activer macro en permanence
Résolu/Fermé
skeumy
Messages postés
5
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
24 novembre 2009
-
27 oct. 2009 à 10:50
skeumy Messages postés 5 Date d'inscription mercredi 21 octobre 2009 Statut Membre Dernière intervention 24 novembre 2009 - 28 oct. 2009 à 13:33
skeumy Messages postés 5 Date d'inscription mercredi 21 octobre 2009 Statut Membre Dernière intervention 24 novembre 2009 - 28 oct. 2009 à 13:33
A voir également:
- Activer macro en permanence
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Comment activer windows 10 - Guide
- Activer le pavé tactile - Guide
- Macro word - Guide
- Macro logiciel - Télécharger - Organisation
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+.
skeumy
Messages postés
5
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
24 novembre 2009
1
27 oct. 2009 à 14:57
27 oct. 2009 à 14:57
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+.
skeumy
Messages postés
5
Date d'inscription
mercredi 21 octobre 2009
Statut
Membre
Dernière intervention
24 novembre 2009
1
28 oct. 2009 à 13:33
28 oct. 2009 à 13:33
bonjour et merci pour tes solutions!
La je n'ai pas trop le temps de tout tester, mais il me reste pas mal de boulot pour que tout fonctionne selon mes desirs ;)
encore merci a bientot sur le fofo !
La je n'ai pas trop le temps de tout tester, mais il me reste pas mal de boulot pour que tout fonctionne selon mes desirs ;)
encore merci a bientot sur le fofo !