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 Sub

Dans 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 Sub

Bonjour,

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 If

Ou encore :

If Target.Column = 2 Then
   'Instructions
End If

Target correspond à la cellule concernée par le double clique.

Pour déterminer la ligne, c'est donc :

Target.Row

Edit : salut pijaku !

Rechercher des sujets similaires à "double click"