J'ai finalement réussi ce que je voulais :
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim Lg%
Dim Cat
If Not Application.Intersect(Target, Columns("C")) Is Nothing Then
If Target.Count > 1 Then Exit Sub
Lg = Target.Row - 1
Rows(Lg + 1).Copy
Range(Rows(Lg + 1), Rows(Lg + 1)).Insert
Range("A" & Lg + 2).ClearContents
Range("B" & Lg + 2).Font.ColorIndex = 2 'couleur de texte blanche
Cat = Range("B" & Lg + 2).Value
Range("C" & Lg + 2, "O" & Lg + 2).ClearContents
Application.CutCopyMode = False
On Error Resume Next 'si ligne vide
Range("E" & Lg + 2).Value = ("Sous-Total " & Cat & " :")
Range("E" & Lg + 2).Font.Bold = True ' mise en forme du texte en gras
ThisWorkbook.RefreshAll 'MàJ du TCD
With Sheets("Prévisionnel")
.Range("G" & Lg + 2).Value = WorksheetFunction.VLookup(.Range("B" & Lg + 2).Value, Sheets("TCD").Range("A1:C100"), 2, False) 'RechercheV en VBA
.Range("G" & Lg + 2).Font.Bold = True ' mise en forme du texte en gras
.Range("G" & Lg + 2).EntireColumn.AutoFit 'Largeur de la colonne auto
.Range("I" & Lg + 2).Value = WorksheetFunction.VLookup(.Range("B" & Lg + 2).Value, Sheets("TCD").Range("A1:C100"), 3, False) 'RechercheV en VBA
.Range("I" & Lg + 2).Font.Bold = True ' mise en forme du texte en gras
.Range("I" & Lg + 2).EntireColumn.AutoFit 'Largeur de la colonne auto
End With
End If
End Sub
Si vous avez des idées pour faire des simplifications je suis preneur.
J'ai un soucis de stabilité aussi. Excel plante régulièrement avec un message d'erreur : "La méthode 'Insert' de l'objet 'Range' a échoué."