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

Microsoft 365 Combiner une condition avec une boucle dans VBA

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 !

CHL1234

XLDnaute Nouveau
Bonjour,

Je cherche à automatiser avec VBA l'envoi d'invitations Outlook à partir d'un planning en deux dimensions (noms des personnes vs dates). J'ai tout d'abord créé un onglet pour ramener les données sous forme d'un fichier plat, ce qui permet à la macro, construite à partir de différents tutos en ligne, de fonctionner plutôt bien, notamment en utilisant une boucle "With / End With". J'aimerais pouvoir intégrer une condition. En effet, il se peut qu'aucune invitation ne doive être envoyée à la personne (car rien de renseigné dans son planning) : j'aimerais que dans ce cas, la macro passe à la ligne suivante. Je suppose qu'il faut intégrer quelque part un If/Then/Else, mais je n'arrive pas à le positionner correctement.
Sauriez-vous m'aider ?
Voici le code ci-après, et un visuel du fichier en pièce jointe

Sub SendInviteToMultiple()
Dim OutApp As Outlook.Application, Outmeet As Outlook.AppointmentItem
Dim I As Long, setupsht As Worksheet

Set setupsht = Worksheets("Envoi Invitations")

For I = 8 To Range("B5")
Set OutApp = Outlook.Application
Set Outmeet = OutApp.CreateItem(olAppointmentItem)

With Outmeet
.Subject = setupsht.Range("G" & I).Value
.RequiredAttendees = setupsht.Range("E" & I).Value
.OptionalAttendees = setupsht.Range("F" & I).Value
.Start = setupsht.Range("C" & I).Value
.Duration = setupsht.Range("D" & I).Value
.Importance = olImportanceHigh
.Body = setupsht.Range("H" & I).Value
.Location = setupsht.Range("G" & I).Value
.MeetingStatus = olMeeting
.ReminderMinutesBeforeStart = 15
.Display
'.Send
End With

Next I
Set OutApp = Nothing
Set Outmeet = Nothing

MsgBox ("La macro s'est correctement exécutée !")

End Sub

Merci d'avance pour votre aide !
 

Pièces jointes

Bonjour @CHL1234 🙂,

On peut n'exécuter les instructions de la boucle que si des conditions sont vérifiées avec un IF... en début de boucle et un End IF en fin de boucle.
VB:
   For I = 8 To setupsht.Cells(Rows.Count, "b").End(xlUp).Row
      If InStr(1, setupsht.Cells(I, "i"), "Pas", vbTextCompare) = 0 And setupsht.Cells(I, "a") <> "" Then
         Set OutApp = Outlook.Application
         Set Outmeet = OutApp.CreateItem(olAppointmentItem)
         With Outmeet
            .Subject = setupsht.Range("G" & I).Value
            .RequiredAttendees = setupsht.Range("E" & I).Value
            .OptionalAttendees = setupsht.Range("F" & I).Value
            .Start = setupsht.Range("C" & I).Value
            .Duration = setupsht.Range("D" & I).Value
            .Importance = olImportanceHigh
            .Body = setupsht.Range("H" & I).Value
            .Location = setupsht.Range("G" & I).Value
            .MeetingStatus = olMeeting
            .ReminderMinutesBeforeStart = 15
            .Display
            '.Send
         End With
      End If
   Next I
 
Dernière édition:
- 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

Discussions similaires

Réponses
4
Affichages
363
Réponses
9
Affichages
386
Réponses
0
Affichages
380
Réponses
6
Affichages
671
Réponses
17
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…