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

XL 2016 Ne pas lancer une macro suivant info cellule

Nikoko

XLDnaute Nouveau
Bonjour à tous,

J'utilise le code ci-dessous pour envoyer un mail via excel en fonction des critères d'une ligne.
Je souhaiterai que si dans la colonne K, il y a le texte "envoyé", que la macro se bloque et n'envoie pas le mail.

Avez-vous une idée?

VB:
'************Envoyer les mails via outlook
Private Sub CommandButton1_Click()

Dim LeMail As Variant
Dim ligne As Integer

Set LeMail = CreateObject("Outlook.Application") 'création d'un objet outlouk

For ligne = 6 To 9

    If Range("j" & ligne) = "Validé" Or Range("j" & ligne) = "Recu" Then 'critère des cellules pour envoyer le mail

        With LeMail.CreateItem(olMailItem) ' informe le programme que nous voulons envoyer un mail.
            .Subject = Range("A" & ligne) & Range("D11") 'le sujet + le nom
            .To = Range("D" & ligne) 'placer l'adresse mail de la ligne
            .CC = "marielle@xxxxx.fr" 'placer l'adresse mail en copie
            .Body = Range("D13") & Range("A" & ligne) & Range("F11") & Range("b" & ligne) & Range("D15") 'placer message dans le mail
            .Attachments.Add "C:\Users\xxxxxxx\Desktop\signature.JPG" 'joindre l'image de la signature
            .HTMLBody = .HTMLBody & "<br><img src='cid:signature.JPG' width='700' height='350'><br>" 'Placer l'image de la signature
            .Display 'afficher le mail avant de l'envoyer sinon placer send pour envoyer
          End With
    End If
Next ligne

End Sub

J'ai essayé avec :
Code:
 If Range("k" & ligne) = "envoyé" and not Range("j" & ligne) = "Validé" Or Range("j" & ligne) = "Recu" Then
mais cela ne fonctionne pas.

Merci par avance,
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Nikoko,
Vous dites : "Je souhaiterai que si dans la colonne K, il y a le texte "envoyé", que la macro se bloque et n'envoie pas le mail."
et vous faites le contraire :
VB:
If Range("j" & ligne) = "Validé" ... then j'envoie un mail.
Le mieux est de faire un petit fichier test comme en PJ. Ca permet de cibler le problème et le résoudre .
Ca marche avec :
Code:
If LCase(Range("k" & ligne)) <> "envoyé" And Range("j" & ligne) <> "Validé" Or Range("j" & ligne) = "Recu" Then
Le Lcase met tout en minuscules donc accepte "envoyé", "Envoyé" ...
 

Pièces jointes

  • Nikoko.xlsm
    15.6 KB · Affichages: 20

Nikoko

XLDnaute Nouveau
Bonjour Sylvanu,

Avant tout je te remercie pour ton aide.
Merci pour cette info sur les minuscules en Lcase .

Est-ce que le Lcase fonctionne avec des chiffres?

Tu as raison avec un exemple c'est mieux. Voici le résultat que je cherche à obtenir :


Je n'arrive pas à adapter ta macro.
Quand je remplace des chiffres plus rien ne fonctionne.

Merci par avance.
 

Nikoko

XLDnaute Nouveau
Bonjour Sylvanu,

Mes meilleurs vœux pour cette nouvelle année 2021 et une bonne santé.
Merci pour le retour, je vais regarder le fichier et voir cela.
Je vous tiens informé.

Bonne fin de journée
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…