Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 13/01/2012, 11h38   #1
Invité de passage
 
Inscription : juin 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 5
Points : 1
Points : 1
Par défaut Supprimer des lignes

Bonjour,

Après quelques recherches et copiés/collés j'ai réussi à faire ces lignes de VBA :

Code :
1
2
3
4
5
6
 
Sub SupTelFixes()
For i = 2 To ActiveSheet.UsedRange.Rows.Count Step 1
    If Not (Cells(i, 4) Like "06*" Or Cells(i, 5) Like "06*" Or Cells(i, 6) Like "06*") Then Rows(i).Delete Rows.e
Next
End Sub
Comme vous le constatez ça permet de supprimer les lignes dont au moins une des colonnes 4, 5 et 6 ne commencent pas par 06.

Mon problème est simple : lorsque je lance la macro, le résultat contient toujours des lignes qui auraient dû être supprimées... je dois la lancer 5 ou 6 fois de suite (le nombre est variable suivant le fichier de base) pour que la liste soit épurée des lignes ne comportant aucun tel portable...

Une idée de ce qui se passe et de la manière de le corriger ?

Merci !
fthouret est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 11h47   #2
Membre Expert
 
Avatar de ZebreLoup
 
Homme Sebastien L
Ingénieur Financier
Inscription : mars 2010
Messages : 880
Détails du profil
Informations personnelles :
Nom : Homme Sebastien L
Âge : 33
Localisation : France, Val de Marne (Île de France)

Informations professionnelles :
Activité : Ingénieur Financier
Secteur : Finance

Informations forums :
Inscription : mars 2010
Messages : 880
Points : 1 867
Points : 1 867
Quand tu supprimes par exemple la ligne 6, la ligne 7 devient la ligne 6 et la boucle va chercher la ligne 7 (qui est l'ancienne ligne 8). Du coup, le test n'a pas été fait sur l'ex-ligne 7.
C'est une peu confus, mais je te propose autre chose

Tout simplement
Code :
1
2
3
4
5
Sub SupTelFixes()
For i = ActiveSheet.UsedRange.Rows.Count To 2 Step -1
    If Not (Cells(i, 4) Like "06*" Or Cells(i, 5) Like "06*" Or Cells(i, 6) Like "06*") Then Rows(i).Delete Rows.e
Next
End Sub
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer
« Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell
ZebreLoup est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 11h48   #3
Expert Confirmé Sénior
 
Avatar de mercatog
 
Inscription : juillet 2008
Messages : 5 848
Détails du profil
Informations forums :
Inscription : juillet 2008
Messages : 5 848
Points : 13 907
Points : 13 907
problème récurrent
pour supprimer, commence toujours du bas en remontant
Code :
1
2
3
4
5
6
7
Sub SupTelFixes()
Dim i as long
 
For i = ActiveSheet.UsedRange.Rows.Count To 2 Step -1
    If Not (Cells(i, 4) Like "06*" Or Cells(i, 5) Like "06*" Or Cells(i, 6) Like "06*") Then Rows(i).Delete
Next i
End Sub
__________________
Cordialement.
mercatog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 11h49   #4
Candidat au titre de Membre du Club
 
Homme
Informaticien chargé des bases de données et du traitement des données statistiques
Inscription : juin 2011
Messages : 35
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Vaucluse (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Informaticien chargé des bases de données et du traitement des données statistiques
Secteur : Associations - ONG

Informations forums :
Inscription : juin 2011
Messages : 35
Points : 11
Points : 11
Salut,

Juste une petite idée, a la place de faire de 1 a n, fait de n à 1.
Thordek est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/01/2012, 11h54   #5
Invité de passage
 
Inscription : juin 2006
Messages : 5
Détails du profil
Informations forums :
Inscription : juin 2006
Messages : 5
Points : 1
Points : 1
haaaa merci, "vous m'avez sauvé ma vie" !!!

enfin j'ai pas encore testé... mais je gage que c'est bon, je suspectais bien un pb comme l'a décris ZebreLoup !

EDIT : donc en effet, ça marche trèèèèèèès bien. Merci pour le temps que je gagne désormais !!! MERCI !
fthouret est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 19h22.


 
 
 
 
Partenaires

Hébergement Web