bonjour
je ne suis pas experte en vba et j'essaie de me débrouiller en consultant les echanges sur ce forum mais la je bloque.
j'ai créé un formulaire qui alimente une feuille colonnes A à H et qui indique au destinataire que sa demande est prise en compte via envoi de mail : jusqu'ici tout va bien (mais c'est ca qui plante le reste je mets le code tout en bas)
sur cette feuille où les données sont intégrées (tableau de suivi), je dois pouvoir modifier le statut de traitement via liste déroulante (ok aussi) en colonne I et je voudrai que cela envoi l'information au demandeur lorsqu'une modification est réalisée : cela fonctionne mais de manière aléatoire
mes soucis :
- je peux sur ce tableau de suivi mettre des informations dans les colonnes suivantes : colonnes J K et L et là j'ai un soucis parce qu'il m'indique erreur destinataire mais je ne veux pas que les modifications de ces colonnes génèrent l’exécution de ma macro . je pense qu'il y a donc un soucis sur mon worksheet_change. dois je utiliser worksheet_selection change ?
- pourquoi lorsque je créé un nouvel enregistrement via mon formulaire il m'envoie un mail et il me renvoie un mail de modification "vide" quand j'ouvre le tableau de suivi même si je n'ai pas changé la valeur de la cellule ?
Pourriez-vous m'aider ? ce serait super cool merci à ceux qui me liront
Macro de création / insertion via formulaire
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 Private Sub CommandButton1_Click() Dim L As Integer, oApp As Outlook.Application, oMsg As Outlook.MailItem If ComboBox1 = "" Or TextBox2 = "" Or TextBox3 = "" Or TextBox4 = "" Or TextBox5 = "" Or TextBox6 = "" Then MsgBox ("Veuillez renseigner tous les champs") Exit Sub End If If MsgBox("Confirmez-vous l'enregistrement des données ?", vbYesNo, "Demande de confirmation d'ajout") = vbYes Then With Sheets("Tableau Suivi") L = .Range("A" & Rows.Count).End(xlUp).Row + 1 'Pour placer le nouvel enregistrement à la première ligne de tableau non vide .Range("C" & L).Value = ComboBox1 .Range("D" & L).Value = TextBox8 .Range("A" & L).Value = TextBox2 .Range("B" & L).Value = TextBox3 .Range("E" & L).Value = TextBox4 .Range("F" & L).Value = TextBox5 .Range("G" & L).Value = TextBox6 .Range("H" & L).Value = TextBox7 End With Set oApp = Outlook.Application Set oMsg = oApp.CreateItem(olMailItem) With oMsg .To = TextBox8.Value .Subject = "Enregistrement OA par le magasin de Toul" .BodyFormat = olFormatHTML .Body = "Bonjour, je vous confirme l'enregistrement de l'OA - Description du besoin : " & TextBox4 & " avec une date de besoin au " & TextBox5 .Send End With Set oMsg = Nothing Set oApp = Nothing MsgBox " Enregistrement validé" Unload Me Sheets("Intro").Activate End If End Sub
Macro de modification de statut:
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 Private Sub Worksheet_selectionChange(ByVal Target As Range) Dim oApp As Outlook.Application, oMsg As Outlook.MailItem If Target.Value <> "" Or Not Intersect(Target, Range("I1:I10000")) Is Nothing Then With Target sTo = .Offset(0, -5).Value sSubject = .Offset(0, -4).Value End With Set oApp = Outlook.Application Set oMsg = oApp.CreateItem(olMailItem) With oMsg .To = sTo .Subject = "Modification statut traitement OA : " & sSubject .BodyFormat = olFormatHTML .Body = "le statut de votre OA : " & sSubject & " vient d'être modifié : " & ActiveCell.Value .Send End With Set oMsg = Nothing Set oApp = Nothing End If End Sub
Partager