Suppression ligne en fonction d'une lettre
Bonjour à tous,
Aujourd'hui un petit problème mais je cr
ois que c'est pas grave. J'ai réalisé plusieurs macros sur Excel qui réalisent un tri automatique en fonction de différentes gares dont les données sont répertoriées sur la liste "Base de données". Je cherche à supprimer les lignes de ma base de données qui ne commencent pas par "P, D ou F". J'ai donc trouvé un code sur internet et il a l'air de bien fonctionner. Sauf que lorsque je lance ma macro depuis la feuille "Infos" cela me supprime la ligne 37 de toute les feuilles ? En tout cas c'est visible sur la dernière feuille "Bilan". Je pense que cela vient de la boucle for de ce sub.
Sub Supression_données()
Sheets("Extraction").Select
Dim I As Integer
Dim Ws As Object
For Each Ws In ThisWorkbook.Worksheets
For I = Ws.Range("C" & Rows.Count).End(xlUp).Row To 1 Step -1
If Ws.Range("C" & I).Value Like "*R*" Then Ws.Rows(I).Delete
If Ws.Range("C" & I).Value Like "*T*" Then Ws.Rows(I).Delete
If Ws.Range("C" & I).Value Like "*Z*" Then Ws.Rows(I).Delete
If Ws.Range("C" & I).Value Like "*G*" Then Ws.Rows(I).Delete
If Ws.Range("C" & I).Value Like "0*" Then Ws.Rows(I).Delete
If Ws.Range("C" & I).Value Like "1*" Then Ws.Rows(I).Delete
If Ws.Range("C" & I).Value Like "2*" Then Ws.Rows(I).Delete
If Ws.Range("C" & I).Value Like "3*" Then Ws.Rows(I).Delete
If Ws.Range("C" & I).Value Like "4*" Then Ws.Rows(I).Delete
If Ws.Range("C" & I).Value Like "5*" Then Ws.Rows(I).Delete
If Ws.Range("C" & I).Value Like "6*" Then Ws.Rows(I).Delete
If Ws.Range("C" & I).Value Like "7*" Then Ws.Rows(I).Delete
If Ws.Range("C" & I).Value Like "8*" Then Ws.Rows(I).Delete
If Ws.Range("C" & I).Value Like "9*" Then Ws.Rows(I).Delete
If Ws.Range("C" & I).Value Like "-*" Then Ws.Rows(I).Delete
Next I
Next Ws
End SubEst-ce que vous savez comment corriger le problème ?
Cordialement
Antoine_56610
bonjour,
une proposition
Sub Supression_données()
Dim I As Long
Dim Ws As Object
Set Ws = Sheets("Extraction")
For I = Ws.Range("C" & Rows.Count).End(xlUp).Row To 1 Step -1
Select Case Left(Ws.Range("C" & I), 1)
Case "P", "D", "F"
Ws.Rows(I).Delete
End Select
Next I
End SubSuper ça fonctionne je me doutais que ce n'était pas grand chose j'ai juste modifié les lettres car je voulais justement garder "P, D et F". Sinon tout marche ! Merci beaucoup.
Antoine_56610