faire agir une macro sur plusieurs lignes

steven542304

XLDnaute Nouveau
Bonjour a tous,

J'ai besoin de votre aide, je vous explique :

J'ai créé une macro me permettant d'envoyer un mail depuis Mozilla Thunderbird en appuyant sur un bouton.

Voici mon code :

Sub relanceformateur()

Dim destinataire, cc, sujet As String


destinataire = Range("K4")
cc = Range("M4")
sujet = "Émargement manquant " & "dispositif " & Range("B4")



text1 = "Bonjour," & "<br><br>"
text2 = "Vous êtes intervenu(e) en qualité de formateur sur le stage suivant :" & "<br><br>"
text3 = "Identifiant du dispositif : " & Range("B4") & " : " & Range("C4") & "<br>"
text4 = "Date(s) : " & Range("H4") & "<br><br>"
text5 = "Or sauf erreur de ma part, je n'ai pas reçu la liste d'émargement." & "<br><br>"
text6 = "Je vous remercierai de me la retourner dès que possible" & "<br><br>"
text7 = "Bien cordialement"


body = text1 & text2 & text3 & text4 & text5 & text6 & text7

strcommand = "C:\Program Files\Mozilla Thunderbird\thunderbird"
strcommand = strcommand & " -compose " & "to='" & destinataire & "'"
strcommand = strcommand & "," & "subject=" & sujet & sujet1 & ","
strcommand = strcommand & "body='" & body & "'"




Call Shell(strcommand, vbNormalFocus)
End Sub


Ma question est la suivante : comment copier cette macro sur les autres lignes ? Sans la recopier manuellement à chaque fois, étant donné que mon tableau peut contenir jusqu'à 200 lignes. Je ne veux pas me retrouver avec 200 boutons non plus mais j'ai dans l'idée de faire apparaître une fenêtre me demandant sur qu'elle ligne faire agir la macro. Voila si quelqu'un aurait la gentillesse de m'aider...

Merci par avance,

Belle journée

Steven
 

JCGL

XLDnaute Barbatruc
Re : faire agir une macro sur plusieurs lignes

Bonjour à tous,

Bienvenue sur XLD

Peux-tu essayer avec :
VB:
Sub relanceformateur()
    Dim destinataire, cc, sujet As String
Dim Lig&
For Lig = 4 To Feuil1.Range("K65000").End(xlUp).Row
MsgBox Feuil1.Range("K65000").End(xlUp).Row
    destinataire = Range("K" & Lig)
    cc = Range("M" & Lig)
    sujet = "Émargement manquant " & "dispositif " & Range("B4")


    text1 = "Bonjour," & "<br><br>"
    text2 = "Vous êtes intervenu(e) en qualité de formateur sur le stage suivant :" & "<br><br>"
    text3 = "Identifiant du dispositif : " & Range("B" & Lig) & " : " & Range("C" & Lig) & "<br>"
    text4 = "Date(s) : " & Range("H" & Lig) & "<br><br>"
    text5 = "Or sauf erreur de ma part, je n'ai pas reçu la liste d'émargement." & "<br><br>"
    text6 = "Je vous remercierai de me la retourner dès que possible" & "<br><br>"
    text7 = "Bien cordialement"
    
    body = text1 & text2 & text3 & text4 & text5 & text6 & text7


    strcommand = "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe"
    strcommand = strcommand & " -compose " & "to='" & destinataire & "'"
    strcommand = strcommand & "," & "subject=" & sujet & sujet1 & ","
    strcommand = strcommand & "body='" & body & "'"


    Call Shell(strcommand, vbNormalFocus)
    Next Lig
End Sub

A+ à tous
 

steven542304

XLDnaute Nouveau
Re : faire agir une macro sur plusieurs lignes

Bonjour JCDL,

Merci à toi pour ta réponse rapide.

Apparemment cela ne fonctionne pas non plus. "erreur d'éxécution 53 fichier introuvable" s'affiche. La commande "Call Shell(strcommand, vbNormalFocus)" se surligne en jaune.

Merci de votre aide :)

Steven
 

steven542304

XLDnaute Nouveau
Re : faire agir une macro sur plusieurs lignes

Merci JCGL. Cela fonctionne mais pas exactment comme je le voudrais.

Cette macro ouvre une fenêtre mozilla thunderbird pour chaque destinataire renseigné dans la colonne "k". Moi je voudrai avoir le choix du destinataire, avoir le choix de la ligne sur laquelle actionner la macro.

Bon je ne sais pas si je suis très clair,
 

steven542304

XLDnaute Nouveau
Re : faire agir une macro sur plusieurs lignes

Tu trouveras le fichier ci-joint. C'est encore un prototype...

Mon code de base est renseigné dans le module 7, la tienne module 8.

Les boutons sont sur la droite du tableau...

Merci de ton aide :)

Belle journée
 
Dernière modification par un modérateur:

JCGL

XLDnaute Barbatruc
Re : faire agir une macro sur plusieurs lignes

Bonjour à tous,
Salut 00,

Si ta colonne L est libre : tu mets un X dans les cellules qui nécéssitent l'envoi de la demande :

VB:
Sub RelanceFormateur()
    Dim Dest As String, CC As String, Sujet As String, Body As String
    Dim Lig&
    
    For Lig = 4 To Feuil1.Range("K65000").End(xlUp).Row
    If Cells(Lig, 12) = "X" Then
        Dest = Range("K" & Lig)
        CC = Range("M" & Lig)
        Sujet = "Émargement manquant " & "dispositif " & Range("B4")
        Text1 = "Bonjour," & "<br><br>"
        Text2 = "Vous êtes intervenu(e) en qualité de formateur sur le stage suivant :" & "<br><br>"
        Text3 = "Identifiant du dispositif : " & Range("B" & Lig) & " : " & Range("C" & Lig) & "<br>"
        Text4 = "Date(s) : " & Range("H" & Lig) & "<br><br>"
        Text5 = "Or sauf erreur de ma part, je n'ai pas reçu la liste d'émargement." & "<br><br>"
        Text6 = "Je vous remercierai de me la retourner dès que possible" & "<br><br>"
        Text7 = "Bien cordialement"


        Body = Text1 & Text2 & Text3 & Text4 & Text5 & Text6 & Text7


        strcommand = "C:\Program Files (x86)\Mozilla Thunderbird\thunderbird.exe"
        strcommand = strcommand & " -compose " & "to='" & Dest & "'"
        strcommand = strcommand & "," & "subject=" & Sujet & sujet1 & ","
        strcommand = strcommand & "body='" & Body & "'"


        Call Shell(strcommand, vbNormalFocus)
        End If
    Next Lig
End Sub

Bises ++ à 00
A+ à tous
 

Discussions similaires

Statistiques des forums

Discussions
315 106
Messages
2 116 271
Membres
112 706
dernier inscrit
Pierre_98