Bonsoir,
Un essaie, mais je ne suis pas très satisfait c'est un peu lent niveau boucle, vu le nombre de colonne que tu as et de ligne :
Si quelqu'un passe pour l'améliorer ou proposer mieux et apprendre :)
Code a coller dans la feuille
J'ai préferer partir sur des tableaux, donc j'ai insérer un tableau dans facture et base facturation et observe le résultat
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
Dim Ligne As Long, Dl As Long, LigneFac As long, Colonne As Integer
If Not Intersect(Target, Range("H2")) Is Nothing Then
Dl = Sheets("Base facturation").[A10].End(xlDown).Row
'Vider la facture
With Sheets("Facture")
On Error Resume Next
.ListObjects(1).DataBodyRange.Delete
On Error GoTo 0
End With
For Ligne = 11 To Dl
For Colonne = 3 To 1002
If Sheets("Base facturation").Cells(2, Colonne) = Sheets("Facture").Range("H2") Then
If Sheets("Base facturation").Cells(Ligne, Colonne) > 0 Then
If Sheets("Facture").Range("C21") <> Empty Then
Sheets("Facture").ListObjects(1).ListRows.Add
LigneFac = Sheets("Facture").Range("C20").End(xlDown).Row + 1
Else
LigneFac = 21
End If
'Placer les infos des articles
Range("C" & LigneFac) = Mid(Sheets("Base facturation").Range("A" & Ligne), 5, 5)
End If
End If
Next Colonne
Next Ligne
End If
Application.ScreenUpdating = True
End Sub
Bon courage