Vba - arret d'une macro après 1ere execution
jim35
-
jim35 -
jim35 -
Bonjour,
voici mon code
dans la macro audit48 : il y a du code qui permet de recopier toutes les valeurs "en retard" dans un tableau et d'envoyer un mail avec le tableau en PJ.
Jusque là tout va bien, c'est après lorsque la valeur a été remplacé par "mail envoyé", et que je clique seulement sur la ligne ou la valeur "mail envoyé" est inscrite, le macro se rééxecute et renvoi le mail etc...
a cause de l'évenement worksheet_change.
j'ai pourtant ecrit dans la macro audit48 : If .Cells(lig, 26).Value = "mail envoyé then end if. jai aussi testé If .Cells(lig, 26).Value = "mail envoyé" then exit sub, mais là plus rien ne marche.
Comment faire pour q'une fois le mail envoyé, la macro ne s'execute plus sur la ligne avec la valeur "mail envoyé ? merci !
voici mon code
Application.EnableEvents = False Dim date48 As Date Dim datejour As Date date48 = 48 datejour = Now Dim lig As Long For lig = 158 To [E65536].End(xlUp).Row If datejour - Cells(lig, 5) > date48 / 24 And Cells(lig, 5) <> "" Then Cells(lig, 26) = "en retard" Call Audit.audit48_Click Cells(lig, 26) = "Mail envoyé" End If Next lig Application.EnableEvents = True End Sub
dans la macro audit48 : il y a du code qui permet de recopier toutes les valeurs "en retard" dans un tableau et d'envoyer un mail avec le tableau en PJ.
Jusque là tout va bien, c'est après lorsque la valeur a été remplacé par "mail envoyé", et que je clique seulement sur la ligne ou la valeur "mail envoyé" est inscrite, le macro se rééxecute et renvoi le mail etc...
a cause de l'évenement worksheet_change.
j'ai pourtant ecrit dans la macro audit48 : If .Cells(lig, 26).Value = "mail envoyé then end if. jai aussi testé If .Cells(lig, 26).Value = "mail envoyé" then exit sub, mais là plus rien ne marche.
Comment faire pour q'une fois le mail envoyé, la macro ne s'execute plus sur la ligne avec la valeur "mail envoyé ? merci !
A voir également:
- Vba - arret d'une macro après 1ere execution
- Arrêt maladie - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Télécharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Réinitialiser chromecast 1ere génération - Guide
- Jitbit macro recorder - Télécharger - Confidentialité
11 réponses
jai essayé de placer exit for après le end if et avant, ca ne fonctionne pas, il envoit toujours le mail malgré que ma valeur est prie: "mail envoyé".
Re,
Essaie comme ça
106485010510997108
Essaie comme ça
Sub TaProcedure()
Application.EnableEvents = False
Dim date48 As Date
Dim datejour As Date
date48 = 48
datejour = Now
Dim lig As Long
For lig = 158 To [E65536].End(xlUp).Row
If datejour - Cells(lig, 5) > date48 / 24 And Cells(lig, 5) <> "" Then
Cells(lig, 26) = "en retard"
Call Audit.audit48_Click
Exit For
End If
Next lig
Cells(lig, 26) = "Mail envoyé"
Application.EnableEvents = True
End Sub--
106485010510997108
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Re,
J'ai lu en peu en diagonale.
En fait le Exit For n'a rien à avoir.
Ta boucle ne fait rien saut le If...End If
C'est l'evenement worksheet_change qui pose des problèmes.
Essaie de mettre ta macro dans un module et tu verras s'il y a encore des problèmes.
J'ai lu en peu en diagonale.
En fait le Exit For n'a rien à avoir.
Ta boucle ne fait rien saut le If...End If
C'est l'evenement worksheet_change qui pose des problèmes.
Essaie de mettre ta macro dans un module et tu verras s'il y a encore des problèmes.
Ok je vais tester ca, par contre si ca marche comment je remplace mon évenement worksheet_change?
je pourrai m'adapater avec thisworkbook_open je pense
je pourrai m'adapater avec thisworkbook_open je pense
Pourquoi lorsque je place ma macro dans un module en public sub et que je l'appel avec workbook_open, ma macro ne s'execute pas, j'ai même essayer de la placer derriere un bouton_click et l'appeler avec workbook_open et elle ne se lance pas, une idée ?
Salut,
Si je me rappelle bien, j'ai déjà eu ce problème en ce qui concerne le lancement automatique :
il faut mettre ton code dans ThisWorkbook et pas dans un module ou une feuille.
Par contre, je n'ai pas d'explication du pourquoi on doit faire ça dont je suis sûr !
Bon courage !
ed
Si je me rappelle bien, j'ai déjà eu ce problème en ce qui concerne le lancement automatique :
il faut mettre ton code dans ThisWorkbook et pas dans un module ou une feuille.
Par contre, je n'ai pas d'explication du pourquoi on doit faire ça dont je suis sûr !
Bon courage !
ed
Maintenant, même si ma valeur est à "mail envoyé" le mail est toujours envoyé avec la tableau, je ne comprends pas !
J'ai enfin trouvé, j'ai modifié la macro, le problème était qu'a chaque ouverture du fichier excel, le test était refait, donc dans le workbook_open j'ai placé à peu près la même macro sauf que j'ai supprimé l'étape de test :
Private Sub envoi_mail_retard()
Application.EnableEvents = False
Dim date48 As Date
Dim datejour As Date
date48 = 48
datejour = Now
Dim lig As Long
For lig = 158 To [E65536].End(xlUp).Row
If Cells(lig, 26).Value = "en retard" Then
Call envoi_mail
.cells(lig, 26).Value = "Mail envoyé"
End If
Next lig
Application.EnableEvents = True
End Sub
merci !
Private Sub envoi_mail_retard()
Application.EnableEvents = False
Dim date48 As Date
Dim datejour As Date
date48 = 48
datejour = Now
Dim lig As Long
For lig = 158 To [E65536].End(xlUp).Row
If Cells(lig, 26).Value = "en retard" Then
Call envoi_mail
.cells(lig, 26).Value = "Mail envoyé"
End If
Next lig
Application.EnableEvents = True
End Sub
merci !