Double click
Bonjour,
Je tente de créer une macro pour me simplifier la vie au travail.
Sur chaque ligne j'ai des informations concernant des paiements reçus que je dois confirmer par email.
J'aimerais quand je double click sur une cellule de la colonne B, créer un mail avec des données de la même ligne sur laquelle j'ai cliqué.
Je ne sais pas, dans mon code pour envoyer le mail, comment me référer à ce numéro de ligne sur laquelle j'ai cliqué.
Je vous met mon code ci-dessous. Pour l'instant j'ai juste mis "test" pour toutes mes valeurs.
D'avance merci mille fois
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Set plage = Range("B5:B100")
Dim objOutlook As Object
Dim objOutlookMsg As Object
' Create the Outlook session.
Set objOutlook = CreateObject("Outlook.Application")
' Create the message.
Set objOutlookMsg = objOutlook.CreateItem(0)
With objOutlookMsg
.To = "test"
.cc = "test"
.Subject = "test"
.body = "test"
.display
End With
Set objOutlookMsg = Nothing
Set objOutlook = Nothing
End Sub
Bonjour,
Je ferais comme ceci :
Dans un Module standard :
Public Sub PrepareMailRecap(Plage As Range)
Dim OutApp As Object, OutMail As Object
Set OutApp = CreateObject("Outlook.Application")
Set OutMail = OutApp.CreateItem(0)
On Error Resume Next
With OutMail
.From = LCase$(Environ("UserName")) & "@gmail.com"
'Destinataire = cellule colonne C de la ligne double-cliquée
.To = Plage.Cells(1, 3).Text
.cc = ""
'sujet = cellules colonnes A et B de la ligne double-cliquée
.Subject = Plage.Cells(1, 1).Text & " " & Plage.Cells(1, 2).Text
'Body = cellules colonnes H, I et S de la ligne double-cliquée
.Body = Plage.Cells(1, 8).Text & vbCrlf & _
Plage.Cells(1, 9).Text & vbCrlf & _
Plage.Cells(1, 19).Text
.Display '.Send 'pour envoi auto
End With
On Error GoTo 0
Set OutMail = Nothing
Set OutApp = Nothing
End SubDans le module de la feuille concernée :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Target.Column = 20 Then 'fonctionne uniquement pour un double-clic colonne T
Call PrepareMailRecap(Target.EntireRow)
End If
End SubBonjour,
Cette macro se déclenche automatiquement sur un double clique n'importe où dans la feuille concernée, et pas uniquement la colonne B.
Actuellement votre objet "plage" (qui n'est ni déclaré, ni situé au bon endroit) ne sert donc à rien...
Dans un premier temps, pour limiter l'exécution du code à la colonne B, on peut faire :
If Not Intersect(Target,Range(B1:B100)) Is Nothing Then
'Instructions
End IfOu encore :
If Target.Column = 2 Then
'Instructions
End IfTarget correspond à la cellule concernée par le double clique.
Pour déterminer la ligne, c'est donc :
Target.RowEdit : salut pijaku !