bonjour Mapomme,
Un tout grand merci, cela fonctionne à merveille. J'ai passé plusieurs heures à chercher et n'aurais pas pu trouver par moi-même. Je vais pouvoir bien avancer sur mon fichier.
Je tente de comprendre le code. J'ai l'habitude de noter une explication après chaque ligne si je devais y revenir. Serais-ce abuser de vous demander si vous accepteriez de m'expliquer les cinq lignes de code où il y a un point d'interrogation en mauve?
Encore merci.
Excellente journée!
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim der&, ID, ligID
der = Application.CountA(Columns("a:a")) '?
With Sheets("facture") ' sur la feuille facture
.Range("a11:f" & Rows.Count).Resize(der).ClearContents 'nettoie les cellules a11 à colonne f (données du tableau)
.Range("f1:f3,g1,b8,g1,g6").ClearContents 'nettoie le contenu de ces cellules (coordonnées client)
End With
If Target <> "" And Target.Column = Range("g1").Column And Target.Row > 1 And Target.Row <= der Then 'détermine la colonne G de la feuille ventes comme cible
Range("a1:i" & der).AutoFilter Field:=7, Criteria1:=Target.Value '?
ID = Me.Cells(Rows.Count, "h").End(xlUp).Value '?
With Sheets("facture") 'sur la feuille facture
Me.Range("a1:i" & der).Resize(, 6).SpecialCells(xlCellTypeVisible).Copy .Range("a10") '?
If Me.FilterMode Then Me.ShowAllData
On Error Resume Next: ligID = Application.Match(ID, Sheets("clients").Columns(1), 0): On Error GoTo 0 '?
If Not IsError(ligID) Then
.Range("f1") = Sheets("clients").Cells(ligID, 2) 'implémente le nom en F1
.Range("g1") = Sheets("clients").Cells(ligID, 3) 'implémente le prénom en G1
.Range("f2") = Sheets("clients").Cells(ligID, 4) 'implémente l'adresse en F2
.Range("f3") = Sheets("clients").Cells(ligID, 5) & " " & Sheets("clients").Cells(ligID, 6) 'implémente cp + espace + ville en F3
End If
.Range("g6") = Date 'implémente la date en G6
.Range("b8") = Target.Value 'implémente la cible (le numéro de vente) en B8
Application.Goto .Range("a1"), True 'se place en A1 en fin de macro
End With
End If
End Sub