Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Répéter une macro

  • Initiateur de la discussion Initiateur de la discussion emilienoel
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

E

emilienoel

Guest
Bonjour,

J'ai recopié une macro qui crée un rappel sur Outlook à partir d'Excel.
Par contre, je ne sais pas comment répéter cette macro pour toutes les lignes de mon tableau.

Voici ma macro qui fonctionne mais uniquement pour la première ligne, je ne sais pas comment lui indiquer qu'elle passe à la ligne suivante.

Sub AjoutTache()
Dim OlApp As Object
Dim NS As Object, ObjTask As Object
Set OlApp = CreateObject("Outlook.Application")
Set NS = OlApp.GetNamespace("MAPI")
Set ObjTask = OlApp.CreateItem(olTaskItem)
With ObjTask
.Subject = "Visite médicale" & " " & [c2]
'.Body = "texte"
.ReminderTime = [g2]
.ReminderSet = True
.Display 'mettre en commentaire après mise au point
End With
ObjTask.Save
End Sub



Merci par avance,
Bonne journée,
Emilie
 
Re : Répéter une macro

Bonjour emilie, le forum

essaie de la mettre dans une boucle
Code:
 Sub AjoutTache()
Dim OlApp As Object
Dim NS As Object, ObjTask As Object
Set OlApp = CreateObject("Outlook.Application")
Set NS = OlApp.GetNamespace("MAPI")
Set ObjTask = OlApp.CreateItem(olTaskItem)
for i = 1ère ligne To dernière ligne
ton code tu remplaces les numéros de ligne par i (par exemple [g2] devient cells(i,7))
With ObjTask
.Subject = "Visite médicale" & " " & [c2]
'.Body = "texte"
.ReminderTime = [g2]
.ReminderSet = True
.Display 'mettre en commentaire après mise au point
End With
ObjTask.Save
Next
end sub
 
Re : Répéter une macro

Bonjour titiborregan5,

Merci pour l'info et voici ce que j'ai fait mais ça ne fonctionne pas.
Quand on exécute la macro, on voit bien que tous les rappels se créent mais après il ne reste dans mes rappels sur Outlook que ma dernière ligne d'Excel.

Alors que je voudrais que pour chaque échéance un rappel se crée


Sub AjoutTache()
Dim OlApp As Object
Dim NS As Object, ObjTask As Object
Set OlApp = CreateObject("Outlook.Application")
Set NS = OlApp.GetNamespace("MAPI")
Set ObjTask = OlApp.CreateItem(olTaskItem)
For i = 2 To 78
With ObjTask
.Subject = "Visite médicale" & " " & Cells(i, 3)
'.Body = "texte"
.ReminderTime = Cells(i, 7)
.ReminderSet = True
.Display 'mettre en commentaire après mise au point
End With
ObjTask.Save
Next
End Sub
 
Re : Répéter une macro

Bonjour Emilenoel

la boucle est bonne. Le souci ici c'est que tu sauvegardes ton objet sans en recréer un nouveau donc ta boucle sauvegarde sur le même objet ce qui fait que tu ne vois que le dernier à la fin.

L'idée est donc de mettre ceci :
Code:
Set ObjTask = OlApp.CreateItem(olTaskItem)
dans ta boucle.

Voir ci dessous ce que ça donne :

Code:
Sub AjoutTache()
  Dim OlApp As Object
  Dim NS As Object, ObjTask As Object
  Set OlApp = CreateObject("Outlook.Application")
  Set NS = OlApp.GetNamespace("MAPI")
  For i = 2 To 78
     Set ObjTask = OlApp.CreateItem(olTaskItem)
     With ObjTask
        .Subject = "Visite médicale" & " " & Cells(i, 3)
        '.Body = "texte"
        .ReminderTime = Cells(i, 7)
        .ReminderSet = True
        .Display 'mettre en commentaire après mise au point
      End With
      ObjTask.Save
   Next
End Sub

Bonne journée
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
756
  • Question Question
Microsoft 365 Code VBA
Réponses
7
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…