Bonjour à tous,
Cédric, .SpecialCells(xlCellTypeBlanks) récupère le Nb de cellules vides, étant donné que tes cellules contiennent toutes des formules, c'est normal au niveau du bug, donc plus besoin de cela:
Le code suivant fonctionne chez moi, j'ai rajouté Ucase pour pouvoir comparer en majuscules et donc ne pas oublier d'éventuelles saisies mal faites....
Sub Soldes()
Dim Tab1(0 To 11) As String, Tab2(0 To 11) As String
Dim K As Byte, L As Integer, I As Byte, T As Byte
Dim Ws1 As Worksheet, Ws2 As Worksheet
Set Ws1 = Sheets("Saisie 0203") 'Affectation de la feuille Feuille de saisie à la variable Ws1
Set Ws2 = Sheets("Fichier SAP") 'id pour fichier SAP
Set cell = Ws1.Range("C6")
L = Ws2.Range("N32768").End(xlUp).Row 'Je récupère la dernière ligne vide de la colonne N dans Fichier SAP
If IsEmpty(cell) Then 'Je teste si cell(C4) est vide
MsgBox "La cellule contenant le N° de matricule est vide", vbOKOnly, "ERREUR"
GoTo Fin
End If
K = 0
T = 0
For I = 2 To 13
If UCase(Ws1.Cells(28, I)) = "OK" Then 'on remplit le tableau 2002
Tab1(K) = Ws1.Cells(24, I)
K = K + 1
End If
If UCase(Ws1.Cells(20, I)) = "OK" Then 'on remplit le tableau 2003
Tab2(T) = Ws1.Cells(16, I)
T = T + 1
End If
Next I
For I = 1 To L
If cell = Ws2.Range("N" & I) Then
For J = 0 To UBound(Tab1)
If Tab1(J) = Ws2.Range("S" & I) Then
Ws2.Rows(I).Delete
Exit For
I = I - 1
End If
Next J
For J = 0 To UBound(Tab2)
If Tab2(J) = Ws2.Range("S" & I) Then
Ws2.Rows(I).Delete
Exit For
I = I - 1
End If
Next J
End If
Next I
Fin:
End Sub
A+++