Vba - suppresion de ligne sous contrainte

Vbebe -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je suis novice en VBA, et j'essaie toujours de trouver moi-meme avant de demander. La je bloque.
Je dois supprimer les lignes d'un tableau dont au moins une des cellules contient "Doc Type". Voici mon code :

Sub SupQdDocType()
Dim i As Integer
For i = 1 To 4000
If Cells(i, 2) = "Doc Type" Then
EntireRow(i).Delete
i = i - 1
End If
Next
End Sub

Il ne marche pas. Help please ?

2 réponses

  1. melanie1324 Messages postés 1561 Statut Membre 156
     
    Bonjour,

    remplaces ton code par :

    Sub SupQdDocType()
    Dim i As Integer
    For i = 1 To 4000
    If Cells(i, 2) = "Doc Type" Then
    rows(i).Delete 'au lieu de entirerow
    i = i - 1
    End If
    Next
    End Sub
    0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    ton pb vient de ce que tu vas de 1 à 4000 lorsque que tu supprimes une ligne par Ex la ligne 25 la ligne 26 devient 25 ce qui pose problème (d'où ton i=i-1)

    donc essaies
    for cptr=4000 to 1 step -1
    If Cells(i, 2) = "Doc Type" Then Rows(cptr).Delete
    Next

    et en début de macro après les déclarations
    Application.screenupdating=false
    figera le défilement de l'écran et te fera gagner un temps fou

    Michel
    0