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
Et voici mon code. Je suppose que la modif doit se faire aux lignes 13 et 14 mais que dois mettre ?
Cordialement
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
Partager