Execution automatique d'une macro
Fermé
saidtoufik
Messages postés
4
Date d'inscription
lundi 31 mars 2014
Statut
Membre
Dernière intervention
9 septembre 2016
-
9 sept. 2016 à 19:43
saidtoufik - 12 sept. 2016 à 18:47
saidtoufik - 12 sept. 2016 à 18:47
A voir également:
- Execution automatique d'une macro
- Réponse automatique thunderbird - Guide
- Recherche automatique des chaînes ne fonctionne pas - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Logiciel de sauvegarde automatique gratuit - Guide
- Sommaire automatique word - Guide
6 réponses
ThauTheme
Messages postés
1442
Date d'inscription
mardi 21 octobre 2014
Statut
Membre
Dernière intervention
29 juillet 2022
160
9 sept. 2016 à 19:50
9 sept. 2016 à 19:50
Bonsoier Saidtoufik, bonsoir le forum,
Supprime la première ligne de ton code :
qui dit clairement : si A1 n'est pas la cellule active, sort de la procédure... Donc la suite du code n'est exécutée qui si tu sélectionnes A1.
Supprime la première ligne de ton code :
If Target.Address <> "$A$1" Then Exit Sub
qui dit clairement : si A1 n'est pas la cellule active, sort de la procédure... Donc la suite du code n'est exécutée qui si tu sélectionnes A1.
jordane45
Messages postés
38464
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 avril 2025
4 741
Modifié par jordane45 le 9/09/2016 à 19:54
Modifié par jordane45 le 9/09/2016 à 19:54
Bonjour,
La macro se déclenche lorsque tu change de cellule dans ta feuille....et uniquement lorsque que tu te places sur la cellule A1 (normal puisque ton IF lui demande de faire ça !! )
Pour la rendre automatique à l'ouverture du classeur tu dois utiliser workbook_open
et modifier un peu ton code
https://silkyroad.developpez.com/VBA/EvenementsClasseur/#LII-12
.
Cordialement,
Jordane
La macro se déclenche lorsque tu change de cellule dans ta feuille....et uniquement lorsque que tu te places sur la cellule A1 (normal puisque ton IF lui demande de faire ça !! )
Pour la rendre automatique à l'ouverture du classeur tu dois utiliser workbook_open
et modifier un peu ton code
Private Sub Workbook_Open() Dim sh As Worksheet Set sh = ThisWorkbook.Sheets(1) ' ou une autre feuille.. a toi de voir With sh If .Range("A1").Value = 405 Then Call supprimer End If End With End Sub
https://silkyroad.developpez.com/VBA/EvenementsClasseur/#LII-12
.
Cordialement,
Jordane
Merci pour vos réponses
Je ne veux pas que la macro s’exécute à l'ouverture du classeur mais seulement lorsque A1 prend la valeur 405 comme exemple.
et quand j’enlève la ligne If Target.Address <> "$A$1" Then Exit Sub la macro s’exécute là où je clique aussi.
Ce que je veux c'est quand A1=405 alors la macro s’exécute automatiquement sans y aller sur la feuille et cliquer sur la cellule .
J’espère que c'est plus clair.
Je ne veux pas que la macro s’exécute à l'ouverture du classeur mais seulement lorsque A1 prend la valeur 405 comme exemple.
et quand j’enlève la ligne If Target.Address <> "$A$1" Then Exit Sub la macro s’exécute là où je clique aussi.
Ce que je veux c'est quand A1=405 alors la macro s’exécute automatiquement sans y aller sur la feuille et cliquer sur la cellule .
J’espère que c'est plus clair.
jordane45
Messages postés
38464
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
12 avril 2025
4 741
11 sept. 2016 à 00:27
11 sept. 2016 à 00:27
Ben pour détécter un changement dans la feuille... tu dois utiliser la méthode : Worksheet_change()
https://docs.microsoft.com/fr-fr/office/vba/api/excel.worksheet.change?redirectedfrom=MSDN
https://docs.microsoft.com/fr-fr/office/vba/api/excel.worksheet.change?redirectedfrom=MSDN
Private Sub Worksheet_Change(ByVal Target as Range) If Target.Address <> "$A$1" Then Exit Sub If Range("A1").Value = 405 Then Call supprimer End If End Sub
Merci Jordane45 pour la réponse .
Oui c'est ce que j'ai fait et que j'ai posté sur mon premier message mais ça ne fonctionne que quand je clique sur la cellule A1 et seulement quand je clique sinon rien ne se passe .
Oui c'est ce que j'ai fait et que j'ai posté sur mon premier message mais ça ne fonctionne que quand je clique sur la cellule A1 et seulement quand je clique sinon rien ne se passe .
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
11 sept. 2016 à 11:07
11 sept. 2016 à 11:07
Bonjour,
teste d'abord...
Jordane ne t'a pas mis la même chose.
eric
teste d'abord...
Jordane ne t'a pas mis la même chose.
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonsoir Mr eriiic
voila ce que j'ai mis :
et c'est pareil et j'ai essayé avec "405" et 405 et cela a donné le mème résultat et je ne sais ou est le problème et j'ai entendu parler de :
mais je n'arrive pas à bien le manipuler et il me donne des messages d’erreurs du genre
Microsoft Visual Basic for Applications
---------------------------
Compile error:
Constants, fixed-length strings, arrays, user-defined types and Declare statements not allowed as Public members of object modules
voila ce que j'ai mis :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub If Range("A1").Value = 405 Then Call supprimer End If End Sub </bold><ital></ital> et voila ce qu'a mis Jordane : <bold>Private Sub Worksheet_Change(ByVal Target as Range) If Target.Address <> "$A$1" Then Exit Sub If Range("A1").Value = 405 Then Call supprimer End If End Sub
et c'est pareil et j'ai essayé avec "405" et 405 et cela a donné le mème résultat et je ne sais ou est le problème et j'ai entendu parler de :
Declare Sub mouse_event Lib "user32" Alias "mouse_event" (ByVal dwFlags As Integer, ByVal dx As Integer, ByVal dy As Integer, ByVal cButtons As Integer, ByVal dwExtraInfo As Integer) Public Const MOUSEEVENTF_LEFTDOWN = &H2 Public Const MOUSEEVENTF_LEFTUP = &H4
EDIT : Ajout des balises de code (la coloration syntaxique).
Explications disponibles ici :ICI Merci d'y penser dans tes prochains messages. |
mais je n'arrive pas à bien le manipuler et il me donne des messages d’erreurs du genre
Microsoft Visual Basic for Applications
---------------------------
Compile error:
Constants, fixed-length strings, arrays, user-defined types and Declare statements not allowed as Public members of object modules
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
12 sept. 2016 à 00:58
12 sept. 2016 à 00:58
Bonjour,
Worksheet_SelectionChange et Worksheet_Change ce n'est pas pareil...
Pas besoin de Declare Sub mouse_event Lib...
Dépose ton fichier avec ce que tu as fait sur cjoint.com et colle ici le lien fourni.
Worksheet_SelectionChange et Worksheet_Change ce n'est pas pareil...
Pas besoin de Declare Sub mouse_event Lib...
Dépose ton fichier avec ce que tu as fait sur cjoint.com et colle ici le lien fourni.
saidtoufik
>
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
12 sept. 2016 à 11:18
12 sept. 2016 à 11:18
Bonjour
Avec Private Sub Worksheet_SelectionChange(ByVal Target As Range) ça marche quand je clique sur A1 mais avec Private Sub Worksheet_Change(ByVal Target As Range) ça ne fonctionne pas
Et voici le lien pour le fichier
http://www.cjoint.com/c/FImjpNznyu1
Avec Private Sub Worksheet_SelectionChange(ByVal Target As Range) ça marche quand je clique sur A1 mais avec Private Sub Worksheet_Change(ByVal Target As Range) ça ne fonctionne pas
Et voici le lien pour le fichier
http://www.cjoint.com/c/FImjpNznyu1
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 257
12 sept. 2016 à 18:06
12 sept. 2016 à 18:06
Je dois réinstaller mon PC, je vais en avoir pour qq jours et ne peux contrôler ce que tu as fait...
Tu ne dois mettre qu'une seule procédure : Worksheet_Change().
Comme tu as demandé déclenchement sur une saisie c'est ce que t'a proposé Jordane. il faut saisir et valider A1 pour que ça fonctionne, que ce code soit dans le module de la feuille concernée, et que tu aies accepté les macros.
eric
Tu ne dois mettre qu'une seule procédure : Worksheet_Change().
Comme tu as demandé déclenchement sur une saisie c'est ce que t'a proposé Jordane. il faut saisir et valider A1 pour que ça fonctionne, que ce code soit dans le module de la feuille concernée, et que tu aies accepté les macros.
eric