Private Sub CommandButton1_Click()
Dim ws1 As Worksheet 'feuille 1
Dim ws3 As Worksheet 'feuille 3
Dim rng1 As Range 'plage des cellules à vérifier en feuille 1
Dim rng4 As Range 'plage des cellules à coller en feuille 4
Dim c As Range 'cellule courante
Dim i As Long 'indice de ligne
Dim j As Long 'indice de colonne
Set ws1 = Worksheets("MANQUANT MENSUEL") 'nom de la feuille 1
Set ws3 = Worksheets("CADEAUX MANQUANTS") 'nom de la feuille 3
Set rng1 = ws1.Range("B5:BI20") 'à adapter selon la plage des cellules à vérifier en feuille 1
Set rng4 = ws3.Range("B5:AE5") 'à adapter selon la plage des cellules à coller en feuille 3
For i = 1 To rng1.Rows.Count 'pour chaque ligne de la plage en feuille 1
If ws1.Cells(i + 4, 1).Font.Color = 0 Or ws1.Cells(i + 4, 1).Font.Color = RGB(30, 30, 206) Or ws1.Cells(i + 4, 1).Font.Color = RGB(255, 204, 153) Then 'ne pas copier les cellules de la colonne A dont la police est rouge ou verte
If Not IsEmpty(ws1.Cells(i + 4, 1)) Then 'ne pas tenir compte de la couleur de fond des cellules de la colonne A
j = 1 'initialiser l'indice de colonne à 1
For Each c In rng1.Rows(i).Cells 'pour chaque cellule de la ligne courante
If c.Value = 0 And j <= 30 Then 'si la cellule est égale à 0 et que l'indice de colonne est inférieur ou égal à 30
rng4.Cells(i, j).Value = ws1.Cells(4, c.Column).Value 'copier la valeur de la ligne 4 dans la même colonne et la coller dans la feuille 4 à la ligne et colonne correspondantes
j = j + 1 'incrémenter l'indice de colonne
End If
Next c
End If
End If
Next i
End Sub