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
Bonjour à Tous

J'ai mis ce code pour supprimer une plage de cellules mais pour que la macro s'exécute il faut que j'ailles sur la feuille et que je clique sur A1 pour qu'enfin la plage de cellules s'efface et ce n'est pas pratique et je ne sais pas où est l'erreur dans ce code.

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

Merci


A voir également:

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
Bonsoier Saidtoufik, bonsoir le forum,

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.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
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

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                                                                 
0
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.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
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

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
0
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 .
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
11 sept. 2016 à 11:07
Bonjour,

teste d'abord...
Jordane ne t'a pas mis la même chose.
eric
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonsoir Mr eriiic
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
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
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.
0
saidtoufik > eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024
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
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
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
0
Merci Eric et bonne réinstallation
je vais essayer de mettre le module et worksheet ensemble
Said
0