Je n'arrive pas a étendre ma macro
Résolu/FerméWhismeril Messages postés 19145 Date d'inscription mardi 11 mars 2003 Statut Contributeur Dernière intervention 29 septembre 2024 - 21 oct. 2022 à 08:43
- Je n'arrive pas a étendre ma macro
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Macro word - Guide
- Etendre ecran pc - Guide
- Macro logiciel - Télécharger - Organisation
- Macro recorder - Télécharger - Confidentialité
4 réponses
20 oct. 2022 à 14:19
Bonjour
je te conseille la lecture de la doc concernant les boucle for.
Il sera sage de sortir cette ligne
Set OlApp = CreateObject("Outlook.application")
De la boucle, ça évitera d'initialiser "50" instances de d'outlook alors qu'une suffit
21 oct. 2022 à 08:43
Bonjour
Pour tes prochains posts, merci d'utiliser la coloration syntaxique comme décrit là https://codes-sources.commentcamarche.net/faq/11288-poster-un-extrait-de-code
De plus, l'indentation permet de faciliter la lecture, donc le développement et surtout le déboggage.
Je t'ai conseillé de sortir la création de l'objet outlook de la boucle, yg_be (que je salue) l'a fait dans ses exemples.
Mais toi non, du coup du lances 305 instances d'outlook en toile de fond, ça sature la RAM et prend un temps beaucoup plus important que nécessaire.
Dans ces exemples, yg_be a aussi sorti l'assignation du destinataire de la boucle, comme c'est tout le temps le même, tu crées là encore 305 variables différentes pour stocker la même chose, chargelent de RAM, perte de temps etc...
Bref de manière générale, dans une boucle, on ne fair que ce qui change
20 oct. 2022 à 15:24
bonjour,
peut-être:
dim lg as long Set OlApp = CreateObject("Outlook.application") Destinataire = ***@*** for lg = 1 to 123 If Date > cells(lg,"d") And cells(lg,"e") = "" Then Set M = OlApp.CreateItem(olMailItem) With M .Subject = "Alerte" .Body = "Il faut recommander une " & cells(lg,"b") & " pour " & cells(lg,"a") .Recipients.Add Destinataire .Send End With cells(lg,"e") = "X" End If next lg
20 oct. 2022 à 15:28
On peut aussi arrêter la boucle sur une condition:
dim lg as long lg=1 do while cells(lg,"d") <> "" ' ... lg=lg+1 loop
Voici mon code final qui fonctionne
Sub Auto_Open()
Dim M As Object, OlApp As Object, Destinataire As String, n As Integer
n = 1
Do While n < 305
If Date > Range("I" & n) And Range("J" & n) = "" Then
Destinataire = ***@***
Set OlApp = CreateObject("Outlook.application")
Set M = OlApp.CreateItem(olMailItem)
With M
.Subject = "Alerte"
.Body = "Il faut recommander une " & Range("C" & n) & " pour " & Range("F" & n)
.Recipients.Add Destinataire
.Send
End With
Range("J" & n) = "X"
End If
n = n + 1
Loop
End Sub
20 oct. 2022 à 15:07
Le problème c'est que sur la théorie je comprends mais je n'arrive pas à l'appliquer