Boucle sur toute une feuille ou jusqu'à première cellule vid

Bonjour,

Je débute complètement en programmation VBA donc je me tourne vers vous pour résoudre un problème que je ne parviens pas à résoudre seul.

Je vous présente rapidement la situation : je gère une base de prêt de mobiles et je souhaite envoyer un mail lorsque la date d'échéance du prêt est arrivé à expiration.

J'ai donc créé une macro qui permet :

1. D'envoyer un mail de rappel si la date inscrite dans la ligne est arrivée à expiration

2. Ecrire "OK" lorsqu'un mail est envoyé à la fin de la ligne en question

3. Ne pas envoyer de mail si un "OK" est déjà inscrit dans la ligne

Mon problème : pour le moment, la boucle fonctionne plus les lignes 2 à 4 (For i = 2 to 4) mais je souhaiterais que la boucle fonctionne sur toute la feuille, ou à défaut jusqu'à la première cellule vide.

Voici mon code :

Public Sub EnvoiAutomatiqueMail()
Dim OutlookApp As Object
Dim OutlookMail As Object
Dim adresse As String
Dim message As String
Dim sujet As String

sujet = "Retour Prêt"
For i = 2 To 4
If Range("h" & i) = "" Then 'Si aucun mail n'a été envoyé alors on lance la recherche sur la date

If Now() > Range("g" & i) Then

adresse = Range("e" & i)
message = "Bonjour" 

Set OutlookApp = CreateObject("outlook.application")
Set OutlookMail = OutlookApp.createitem(0)
With OutlookMail
.Subject = sujet
.To = adresse
.body = message
.send

Range("h" & i).Value = "OK" 'lorsqu'un mail a été enovyé, la cellule en H est marquée OK

End With

End If
End If
Next i

End Sub

Merci beaucoup pour votre aide !

Salut et bienvenue sur le Forum,

Tu ne dis pas à quelle ligne doit commencer la boucle ; admettons que ce soit la ligne 2.

Je ne sais pas sur quelle colonne il faut contrôler le nombre total de lignes possibles ; admettons que ce soit la E.

Alors remplace ta ligne For i = 2 to 4 par

For i = 2 to Range("E" & Rows.Count).End(xlUp).Row

A te relire.

Merci beaucoup Yvouille, c'est exactement ce que je cherchais à faire, c'est parfait !

Par contre j'ai une autre question car je viens de prendre conscience d'un autre problème. Si aucune date de retour n'est renseignée, un mail est quand même envoyé. Du coup, comment est-ce que je peux faire pour ne pas envoyer de mail dans ce cas mais continuer à faire les tests sur les lignes suivantes ?

Merci pour ton aide (ou celle d'un autre).

Cordialement.

Salut,

Tu joues un peu à cache-cache en ne joignant pas ton fichier.

Selon ton code, il semble que les dates sont placées en colonne G et que tu ne veux pas envoyer de courriel si la cellule de la colonne G de la ligne concernée est vide.

Si c’est bien le cas, essaie de remplacer la ligne If Now() > Range("g" & i) Then par

If Range("g" & i)  <> "" And Now() > Range("g" & i) Then

Si ce n’est pas ça, merci de joindre ton fichier.

Amicalement.

Encore une fois c'est niquel, exactement ce dont j'avais besoin !

Désolé, je suis nouveau sur le forum donc c'est vrai que j'ai pas encore pris le reflex de joindre mon fichier. J'essayerai d'y penser à l'avenir !

Merci pour tout et bonne journée.

Rechercher des sujets similaires à "boucle toute feuille premiere vid"