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
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.
A voir également:

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

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+.
1
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
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 !!
0
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

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+.
0
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
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 !
0