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 09/12/2011, 14h17   #1
Membre du Club
 
Inscription : septembre 2007
Messages : 177
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 177
Points : 50
Points : 50
Envoyer un message via MSN à cynoq
Par défaut Pb avec une boucle For - Next

Bonjour à tous,
Je bloque sur une boucle For.
Lorsque je lance la macro, le code VBA bloque sur ce code :

Code :
1
2
3
For i = 401 To 2 Step -1 ' Boucle de recherche sur les 400 premières lignes de la feuille
        If Cells(i, 1).Value = "" Then Cells(i, 1).EntireRow.Delete ' Si la 1ère colonne de la ligne sélectionnée est vide, la ligne est supprimée)
    Next
La macro tourne en boucle et je suis obligé de stopper la macro à la main.
Quelqu'un peut-il me dire d'où peut venir le problème ?
Merci par avance.
__________________
Cynoq
cynoq est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 14h50   #2
Membre régulier
 
Femme
Inscription : septembre 2011
Messages : 86
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 86
Points : 75
Points : 75
Cynoq,

Juste deux questions :
  • As-tu pu observer ce qui est sélectionné après que t'as première ligne soit supprimée ?
  • Arrives-tu à supprimer au moins une ligne avec ta macro ?

Cocotte278 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 15h07   #3
Membre du Club
 
Inscription : septembre 2007
Messages : 177
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 177
Points : 50
Points : 50
Envoyer un message via MSN à cynoq
Petite correction,
je viens de faire un test en modifiant la quantité de lignes à traiter.
Verdict :
- la macro, au ralenti mais elle tourne
- il ne me supprime pas forcément les lignes où la première colonne est vide

Le plus étrange est que cette même macro, sans aucune modification majeure, fonctionnait encore très bien ce matin.

Je cale complètement...

Je viens d'ajouter des MsgBox() dans la boucle, j'ai bien une reprise ligne par ligne, les lignes avec une première cellule vide sont supprimées.
__________________
Cynoq
cynoq est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 09/12/2011, 15h08   #4
Membre régulier
 
Femme
Inscription : septembre 2011
Messages : 86
Détails du profil
Informations personnelles :
Sexe : Femme
Localisation : France, Nord (Nord Pas de Calais)

Informations professionnelles :
Secteur : Industrie

Informations forums :
Inscription : septembre 2011
Messages : 86
Points : 75
Points : 75
Ca fonctionne comme tu veux alors ?
Cocotte278 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 15h10   #5
Membre Expert
 
Homme
Retraité
Inscription : avril 2011
Messages : 695
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France

Informations professionnelles :
Activité : Retraité

Informations forums :
Inscription : avril 2011
Messages : 695
Points : 1 447
Points : 1 447
Bonjour,

A priori, le problème ne vient pas de ta macro.
N’as-tu pas placé un événement dans ton code (Worksheet_Change par exemple) ?

Si tu exécute ton code en mode pas à pas, tu dois pouvoir constater ce qui se produit réellement.

Cordialement.
gFZT82 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/12/2011, 16h46   #6
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
Par défaut suppression lignes

Bonjour à vous deux,

Si je peux me permettre d'intervenir, je dirais que la méthode qui consiste à balayer les cellules pour effectuer une action ne doit être qu'un dernier recours.

Pour une meilleure efficacité, mieux vaut privilégier les 2 méthodes et .

Soit ici

Code :
Range("A2:A401").SpecialCells(xlCellTypeBlanks).EntireRow.Delete
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 12/12/2011, 11h29   #7
Membre du Club
 
Inscription : septembre 2007
Messages : 177
Détails du profil
Informations forums :
Inscription : septembre 2007
Messages : 177
Points : 50
Points : 50
Envoyer un message via MSN à cynoq
Merci à tous pour votre aide, j'ai repris quelques remarques pour améliorer mon code

Pour mon problème de lenteur, il venait de la recopie d'une formule dans une feuille. J'ai changé la méthode et tout va nettement mieux
__________________
Cynoq
cynoq 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 22h15.


 
 
 
 
Partenaires

Hébergement Web