Macro qui renvoi l'adresse d'une cellule

reenot

XLDnaute Nouveau
Bonjour à tous,

Je fais appel à vous car je suis bloqué depuis 2 jours...

J'ai un fichier de suivi dans laquelle j'ai fait une macro qui lorsque je modifie un case, envoie un mail.

Mon problème est que j'aimerai renvoyer la colonne "D" de la ligne qui contient la cellule que je viens de modifier dans l'objet (reperer 'ICI') du mail!!!

Je n'arrive pas trouver comment integrer le numéro de ligne dans "i" afin de renvoyer via " Range("D"&i).value "...
Sachant que ça se compose de 2 macros : 1 macro qui lance l'autre lors de la modification de la cellule.

voici mes macros :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("H:H")) Is Nothing Then
Call mail_delai_achat
End If

End Sub

___________________________________________________________________________________________________

Sub mail_delai_achat()
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Dim olFormatHTML As String
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
strbody = "Information sur la mise à jour"
On Error Resume Next
With OutMail
.To = "marie@entreprise.fr"
.CC = ""
.BCC = ""
.Subject = "Délai achat accusé dossier spécial" 'ICI'
.BodyFormat = olFormatHTML
.HTMLBody = "Bonjour, <BR><BR>Ce message est un mail automatique, il vous informe que " & Environ("username") & " a validé le délai achat.<BR><BR>" _
& "<A href=" & """" & "\\HPSrv2012\Commun\Suivi des dossiers spéciaux\Gestion commandes spéciales.xls" & """" & ">Gestion commande spéciales.</A>" & Chr(10) & "<BR><BR>Cordialement"
.Display
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing
End Sub

___________________________________________________________________________________________________



De plus sachant que j'ai glaner ces macros sur le net et adapter à mes besoins merci de me dire s'il n'y a pas d'erreur ou de ligne en trop?

Merci d'avance à tous
 

Jacou

XLDnaute Impliqué
Re : Macro qui renvoi l'adresse d'une cellule

Bonjour reenot,
je déclarerais "i" en public en début du module ("Public i")
puis dans la macro Worksheet_Change j'ajouterai l'instruction "i = Target.Row"
et enfin à la place de 'ICI' je mettrais "& Range("D" & i).Value "
Bonne journée
 
Dernière édition:

reenot

XLDnaute Nouveau
Re : Macro qui renvoi l'adresse d'une cellule

comme ceci? :

Public i
________________________________________________________________________________________________________________

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Range("H:H")) Is Nothing Then
Call mail_delai_achat
End If

i = Target.Row

End Sub
________________________________________________________________________________________________________________

Sub mail_delai_achat()
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Dim olFormatHTML As String
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
strbody = "Information sur la mise à jour"
On Error Resume Next
With OutMail
.To = "marie@entreprise.fr"
.CC = ""
.BCC = ""
.Subject = "Délai achat accusé dossier spécial" & Range("D" & i).Value
.BodyFormat = olFormatHTML
.HTMLBody = "Bonjour, <BR><BR>Ce message est un mail automatique, il vous informe que " & Environ("username") & " a validé le délai achat.<BR><BR>" _
& "<A href=" & """" & "\\HPSrv2012\Commun\Suivi des dossiers spéciaux\Gestion commandes spéciales.xls" & """" & ">Gestion commande spéciales.</A>" & Chr(10) & "<BR><BR>Cordialement"
.Display
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing
End Sub



SI c'est ça, ça ne marche pas, l'objet du mail est carrement vide...
 

Jacou

XLDnaute Impliqué
Re : Macro qui renvoi l'adresse d'une cellule

Bonsoir,
je ferais comme suit :

Public i
__________________________________________________ __________________________________________________ ____________

Private Sub Worksheet_Change(ByVal Target As Range)
i = Target.Row
If Not Application.Intersect(Target, Range("H:H")) Is Nothing Then
Call mail_delai_achat
End If

End Sub
__________________________________________________ __________________________________________________ ____________

Sub mail_delai_achat()
Dim OutApp As Object
Dim OutMail As Object
Dim strbody As String
Dim olFormatHTML As String
Set OutApp = CreateObject("Outlook.Application")
OutApp.Session.Logon
Set OutMail = OutApp.CreateItem(0)
strbody = "Information sur la mise à jour"
On Error Resume Next
With OutMail
.To = "marie@entreprise.fr"
.CC = ""
.BCC = ""
.Subject = "Délai achat accusé dossier spécial " & Range("D" & i).Value
.BodyFormat = olFormatHTML
.HTMLBody = "Bonjour, <BR><BR>Ce message est un mail automatique, il vous informe que " & Environ("username") & " a validé le délai achat.<BR><BR>" _
& "<A href=" & """" & "\\HPSrv2012\Commun\Suivi des dossiers spéciaux\Gestion commandes spéciales.xls" & """" & ">Gestion commande spéciales.</A>" & Chr(10) & "<BR><BR>Cordialement"
.Display
End With
On Error GoTo 0

Set OutMail = Nothing
Set OutApp = Nothing
End Sub

il faudrait essayer avec un fichier test.
Si l'objet du mail est vide, c'est qu'il y a autre chose qui ne fonctionne pas car même si i n'est pas renseigné (ou est vide), on devrait avoir au minimum "Délai achat accusé dossier spécialD".