Bonjour,

J'ai créé une macro qui va récupérer des données dans diverses feuilles de mon classeur afin de les coller sur une feuille nommée "Synthèse".
Au déclenchement de ma macro, une boite de dialogue demande à l'utilisateur de saisir un processus (ex: M10 ou M11 ou M20, etc... ). Ce processus choisi va permettre à la macro de faire des tris avancés afin d'extraire des tableaux qui seront collés dans "Synthèse". à la fin de la macro, la synthèse est transmise via OUTLOOK au responsable du processus concerné
Lorsque je dois effectuer cette macro pour la totalité ou un bon nombre de processus, je perd un temps fou a déclencher la macro X fois.
J'ai dois créé un Userform avec des case à cocher représentant la totalité des processus.
Je voudrais, lorsque j'ai coché X processus, pouvoir faire une boucle sur ma macro afin qu'elle s'exécute.

Voici une copie de mon userform
Nom : Image1.png
Affichages : 1965
Taille : 52,6 Ko
Et voici mon code. Je suppose que la modif doit se faire aux lignes 13 et 14 mais que dois mettre ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
Sub Fiche_Synthese_Processus()
    '
    Dim Processus As String
 
    'Activation et déprotection de la feuille nommée Synthese par processus
    Sheets("Synthese par processus").Activate
    ActiveSheet.Unprotect
 
    ' Masquage du déroulé de la macro
    'Application.ScreenUpdating = False
 
   'Inscrit le processus choisi dans le MsgBox en cellule A2 et en majuscule grace au UCase
    Processus = ucase(InputBox("Veuillez saisir le processus à extraire :" & Chr$(13) & Chr$(13) & "Liste des processus :" & Chr$(13) & Chr$(13) & "M10 - M11 - M20 - M21 - M30 - M31 - M40 - M41 - M42 - M43" & Chr$(13) & Chr$(13) & "P10 - P11 - P12 - P13 - P20 - P21 - P22 - P23 - P30 - P31 - P32 - P40 - P41 - P42" & Chr$(13) & Chr$(13) & "S10 - S20 - S21 - S22 - S30 - S40 - S50" & Chr$(13) & Chr$(13) & Chr$(13) & Chr$(13) & "ATTENTION : la saisie est obligatoire.", "PROCESSUS"))
    Range("A2").FormulaR1C1 = Processus
 
    'Inscrit en B5 l'intitulé du processus sauf si A2 est vide
    Range("B5").FormulaR1C1 = _
    "=IF(ISBLANK(R2C1),"""",VLOOKUP(R2C1,Links!C[-1]:C[2],2,FALSE))"
 
       'Boite dialogue de confirmation d envoi du mail
    Select Case MsgBox("Désirez-vous transmettre cette fiche de synthèse au pilote de processus ?", vbYesNo, "Application développée par .")
 
            'Procédure si click sur Oui
        Case vbYes
 
          'Envoi du mail
 
            'Contrôler dans Visual Basic/Outils/Références/que Microsoft Outlook --,- Object Librairy est bien coché
            Dim olapp As Outlook.Application
            'Contrôle la validité ou la présence d'adresse mail en B7
            Dim msg As MailItem
            Set olapp = New Outlook.Application
            Set msg = olapp.CreateItem(olMailItem)
            'Adresse de la cellule contenant la liste des adresses mails
            msg.To = Range("B7").Value
            'Envoi en copie
            msg.CC = "xxx.gmail.com"
            'Envoi en copie cachée
            msg.BCC = " "
            'Saisir le sujet de l'envoi
            msg.Subject = "Fiche de synthese du processus " & Feuil9.Range("A2")
            'Saisie du message
            'Saisir Corps du message
            msg.Body = "votre texte."
            'Adresse de la pièce jointe
            msg.Attachments.Add Source:=sNomPdf
 
            msg.Display
            'Transmission du message
            msg.Send
 
 
            'procédure si click sur Non
        Case vbNo
 
            'ActiveWindow.Close
            rep = MsgBox("Votre courriel ne sera pas transmis.", vbYes + vbInformation, "Annulation transmission de courriel / Application développée par .")
 
    End Select
 
 
    'Affichage feuille
    Application.ScreenUpdating = True
 
    'Protection de la feuille
    ActiveSheet.Protect
    Range("A9").Select
End Sub
Cordialement