Supprimer ligne en fonction valeur de cellule

Résolu/Fermé
Alaindeg
Messages postés
33
Date d'inscription
mardi 16 septembre 2014
Statut
Membre
Dernière intervention
8 juin 2016
- 16 avril 2015 à 15:40
Thorak83
Messages postés
1051
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
- 16 avril 2015 à 16:05
Bonjour à tous,

Lien fichier: https://www.cjoint.com/c/EDqpYzB3qkH

J'ai fais la macro suivante mais elle ne fonctionne pas:

Sub Suppr()
Dim i As Long
Dim Plage As String

For i = 2 To 65536
If Cells(i, 5).Value = Chr(34) Then
Plage = i & "Annulé" & i
Rows(Plage).Delete Shift:=xlUp
i = i - 1
End If
Next i
End Sub

Je voudrais supprimer les lignes qui contiennent en colonne "statut" les mots annulés ou non réalisés..

Mais j'ai beau executer et cela ne fonctionne pas.

Pourriez-vous m'aider à trouver la solution?

Merci pour votre aide!!

Alain


A voir également:

1 réponse

Thorak83
Messages postés
1051
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
152
Modifié par Thorak83 le 16/04/2015 à 15:50
Bonjour,

normal le problème car faire une boucle for i=... et à l'intérieur faire i = i-1 il va pas du tout aimer
faire plutot une boucle while
i = 2
While i <= 65536
...
wend


Cordialement
0
Thorak83
Messages postés
1051
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
152
16 avril 2015 à 15:51
Sub Suppr()
  Dim i As Long
  Dim Plage As String
  
  i = 2
  While i <= 65536
    If Cells(i, 5).Value = Chr(34) Then
      Plage = i & "Annulé" & i
      Rows(Plage).Delete Shift:=xlUp
      i = i - 1
    Else
      i = i + 1
    End If
  Wend
End Sub
0
Alaindeg
Messages postés
33
Date d'inscription
mardi 16 septembre 2014
Statut
Membre
Dernière intervention
8 juin 2016
> Thorak83
Messages postés
1051
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017

16 avril 2015 à 15:57
Non ça ne fonctionne pas, je ne comprends pas où est le problème
ce que j'ai fait: https://www.cjoint.com/c/EDqqjSixDEU
0
Alaindeg
Messages postés
33
Date d'inscription
mardi 16 septembre 2014
Statut
Membre
Dernière intervention
8 juin 2016

16 avril 2015 à 15:52
Merci pour votre réponse si rapide. Je viens de mettre ceci:
Sub Suppr()
Dim i As Long
Dim Plage As String

For i = 2 To 65536
If Cells(i, 5).Value = Chr(34) Then
Plage = i & "Annulé" & i
Rows(Plage).Delete Shift:=xlUp
i = 2
While i < 65536
Wend
End If
Next i
End Sub

Mais ça ne marche pas non plus. J'avoue ne pas vraiment maitriser les boucles While.. Dois-je mettre quelque chose entre While et wend en plus?
0
Thorak83
Messages postés
1051
Date d'inscription
jeudi 20 juin 2013
Statut
Membre
Dernière intervention
22 décembre 2017
152
16 avril 2015 à 15:57
Désolé je me suis un peu loupé (j'ai pas fait assez attention à votre code)
voici le bon code
Sub Suppr()
  Dim i As Long
  Dim Plage As String
  
  i = 2
  While i <= 65536
    If Cells(i, 5).Value = "Annulé" Then
      Plage = i & ":" & i
      Rows(Plage).Delete Shift:=xlUp
    Else
      i = i + 1
    End If
  Wend
End Sub
0
Alaindeg
Messages postés
33
Date d'inscription
mardi 16 septembre 2014
Statut
Membre
Dernière intervention
8 juin 2016

16 avril 2015 à 16:01
Ca fonctionne!! un immense merci!
0