IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

probleme de for next [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Par défaut probleme de for next
    Bonjour,

    dans le code ci dessous, il ne prend qu'une ligne sur 2. Pourquoi?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For i = 1 To Range("A65536").End(xlUp).Row
     
    If Range("A" & i).Value = 3 Then
     
    Range("A" & i).EntireRow.Copy Sheets("feuil2").Cells(Rows.Count, 1).End(xlUp)(2)
    Range("A" & i).EntireRow.Delete
     
    End If
     
    Next i

  2. #2
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour,

    Il existe de nombreux exemples pour ce problème récurrent.

    Lorsque l'on fait un delete il faut parcourir les lignes du bas vers le haut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i =Range("A65536").End(xlUp).Row to 1 step -1 
    '...
    Next i

  3. #3
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,
    Il ne prends qu'une ligne sur 2 car à chaque itération de ta boucle tu supprimes une ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A" & i).EntireRow.Delete
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 1 To 10
    Range("A" & i).EntireRow.Delete
    Next
    Lors de la suppression de la ligne 1 (i=1), la ligne 2 devient la ligne 1, la ligne 3 devient la ligne 2.
    La boucle continue, i = 2 traite la ligne 2 (qui était en fait la ligne 3 au départ)...

    Pour contourner ce souci, la boucle doit commencer à la fin et boucler avec Step -1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For i = 10 To 1 Step - 1
    Range("A" & i).EntireRow.Delete
    Next

  4. #4
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    Si tu supprimes des lignes, excel décalera les lignes vers le haut.
    Il faut donc a chaque suppression reculer de 1 la variable i

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For i = 1 To Range("A65536").End(xlUp).Row
     
    If Range("A" & i).Value = 3 Then
     
    Range("A" & i).EntireRow.Copy Sheets("feuil2").Cells(Rows.Count, 1).End(xlUp)(2)
    Range("A" & i).EntireRow.Delete
    i=i-1
    End If
     
    Next i

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 93
    Par défaut
    Bonjour,

    Oui c'est clair maintenant. De plus j'avais déja eu le cas que je suis bête.

    Merci à tous.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Probleme de boucle for / next
    Par @rkane dans le forum VBA Access
    Réponses: 4
    Dernier message: 13/03/2011, 14h18
  2. Réponses: 3
    Dernier message: 03/11/2005, 19h22
  3. Nom de Champ pour utiliser For/Next
    Par Mulele dans le forum Access
    Réponses: 2
    Dernier message: 21/10/2005, 19h57
  4. Nom de Champ dans une table pour utiliser For/Next
    Par Mulele dans le forum Access
    Réponses: 6
    Dernier message: 30/10/2004, 13h28
  5. qbasic : pause avec FOR-NEXT
    Par clood200 dans le forum Langages de programmation
    Réponses: 2
    Dernier message: 08/08/2003, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo