Bonsoir le Forum,
J'ai un petit souci avec 1 code implémenté dans une de mes feuilles...
Il fait bien le taf mais je souhaiterai en ligne 59 que Cel soit égal à la cellule que je viens de renseigner. Or quand je tape sur entrée ou tabulation le Cel.Offset dans e mail part de la cellule sur laquelle j’atterris quand je tape entrée ou tabulation soit celle d'en dessous ou celle d'à côté, ce qui me décale toutes les infos que je voudrai faire apparaître dans le mail... (logique...).
Comment indiqué que Cel soit égal à la dernière cellule de la ligne remplie de la colonne W ?
De plus, j'ai fais du bricolage sur cette macro et parfois, mais je n'arrive pas à comprendre la raison et c'est vraiment aléatoire pour moi, je rencontre des bugs qui me rapporte un message d'erreur du type
Je vous remercie par avance pour votre aide..
Le code :
Merci par avance pour votre aide
J'ai un petit souci avec 1 code implémenté dans une de mes feuilles...
Il fait bien le taf mais je souhaiterai en ligne 59 que Cel soit égal à la cellule que je viens de renseigner. Or quand je tape sur entrée ou tabulation le Cel.Offset dans e mail part de la cellule sur laquelle j’atterris quand je tape entrée ou tabulation soit celle d'en dessous ou celle d'à côté, ce qui me décale toutes les infos que je voudrai faire apparaître dans le mail... (logique...).
Comment indiqué que Cel soit égal à la dernière cellule de la ligne remplie de la colonne W ?
De plus, j'ai fais du bricolage sur cette macro et parfois, mais je n'arrive pas à comprendre la raison et c'est vraiment aléatoire pour moi, je rencontre des bugs qui me rapporte un message d'erreur du type
erreur d’exécution -2147467259 (80004005)
De plus cela me fait planter Outlook également et je suis obligé de le redémarrer. Sauriez-vous où j'ai fait une erreur (mis à part créer une macro "Frankenstein"..) ?Je vous remercie par avance pour votre aide..
Le code :
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Cel As Range
Dim OL As Object, myItem As Object, wDoc As Object, rng As Object
Dim fichier As String, plage_mail As Range
Dim PJ As Variant
Dim j As Integer
Set OL = CreateObject("Outlook.Application")
Set myItem = OL.CreateItem(olMailItem)
Set wDoc = myItem.GetInspector.WordEditor
If Not Intersect(Target, Columns("Q:Q")) Is Nothing Then
If Target.Count <> 1 Then Exit Sub
If Target = "" Then Exit Sub
If Application.WorksheetFunction.CountIf(Range("Q:Q"), Target) <= 1 Then Exit Sub
If MsgBox("This invoice number already exists." & vbLf & "Are you sure that this invoice number is correct ?", vbYesNo + vbCritical, "WARNING !!!") = vbYes Then
Exit Sub
Else
MsgBox "Please contact support", vbExclamation, "Information"
Target = "": Target.Select
End If
End If
If Not Intersect(Target, Columns(22)) Is Nothing Then
If ActiveCell = "" Then
Exit Sub
End If
Set Cel = Feuil4.UsedRange.Find(Target.Value, , xlValues, xlWhole)
If Cel Is Nothing Then
MsgBox "PO doesn't exists" & Chr(10) & "Please contact support", vbCritical, "WARNING !!!"
ActiveCell.Value = ""
Else
If Not Cel Is Nothing And Cel.Offset(0, 10) > 0 Then
MsgBox "Remaining provisions on PO :" & Chr(10) & Format(Cel.Offset(0, 10), "#,##0.00 €"), vbInformation, "NOTE"
Else
If Not Cel Is Nothing And Cel.Offset(0, 10) < 0 Then
MsgBox "No more provision on PO :" & Chr(10) & Format(Cel.Offset(0, 10), "#,##0.00 €") & Chr(10) & "Please contact support", vbCritical, "WARNING !!!"
Else
If Not Cel Is Nothing And Cel1.Offset(0, 10) = 0 Then
MsgBox "PO closed" & Chr(10) & "Please contact support" & Chr(10) & "Otherwise payment will not be able to made.", vbInformation, "NOTE"
End If
End If
End If
End If
End If
Set Cel = ActiveCell
If Not Intersect(Target, Columns("W:W")) Is Nothing Then
If Target.Count <> 1 Then Exit Sub
If Target = "" Then Exit Sub
If MsgBox("New invoice implemented." & vbLf & "Do you want send email to requestor ?", vbYesNo + vbInformation, "Information") = vbYes Then
MsgBox "Please select PO to attach.", vbExclamation
PJ = Application.GetOpenFilename("Tous les fichiers (*.*),*.* ", 1, "Select your PO.", , True)
If IsArray(PJ) = False Then
MsgBox "Operation cancelled !", vbCritical, "Information"
Target = ""
Exit Sub
End If
MsgBox "Email in preparation..." , vbExclamation
If Worksheets("Feuil1").Activate Then
With myItem
.To = Cel.Offset(0, 14) & "; xxxx@xxxx.com"
.CC = ""
.Subject = "Local invoice - Validation and payment - " & Cel.Offset(0, -17)
.Body = "Hi," & vbCrLf & vbCrLf & _
"For validation and payment please." & vbCrLf & vbCrLf & _
"Invoice number : " & Cel.Offset(0, -6) & vbCrLf & _
"Due date : " & Cel.Offset(0, -3) & vbCrLf & _
"PO attached"
For j = 1 To UBound(PJ)
.attachments.Add PJ(j)
Next
.Display
End With
End If
Else
Target = ""
End If
End If
Set OL = Nothing: Set myItem = Nothing: Set wDoc = Nothing
End Sub
Merci par avance pour votre aide