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 :

problème suppression ligne et boucle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    gestionnaire
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : gestionnaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Par défaut problème suppression ligne et boucle
    Bonjour,

    j'ai cherché partout avant de poster, mais en vain.
    Pourtant je connais la syntaxe mais elle ne veut pas me donner ce que je veux

    J'ai utilisé dans mon programme le code suivant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("A2").EntireRow.Delete
    et cela fonctionne très bien

    Mais lorsque je souhaite faire un test dans un boucle cela ne fonctionne plus.
    J'ai deux colonnes avec des valeurs. Si la valeur des deux colonnes est égale à zéro alors je veux supprimer la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for i=1 to fin
        if range("A"&i).value="0" then
             if range("B"&i).value="0" then
             range("A"&i).entireRow.Delete
             else blablaba
             end if
        end if
    next
    il me supprime la première ligne puis sur la seconde il laisse un zéro

    merci pour votre aide

  2. #2
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    si tu avais cherché nul part au lieu de partout, peut-être serais-tu tombé sur les milliers de sujets et messages où on explique qu'il faut toujours supprimer tes lignes en partant du bas et pas du haut

    c'est de la pure logique

    si tu supprimes la ligne 1, la ligne 2 devient la ligne 1, la boucle va donc sur la ligne 2 qui était auparavant la ligne 3 ... et donc il ne traite pas la ligne qui à l'origine était la ligne 2

    au passage, quand tu imbriques deux if avec des conditions similaires, il est plus pratique de tout grouper dans un seul If et de lier les deux conditions par l'opérateur logique AND

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Range("A" & i).Value = "0" And Range("B" & i).Value = "0" Then Rows(i).Delete
    on pourrait même n'avoir qu'une condition, en testant si l'addition des deux cellules = 0 ...

    et avec un peu plus de maîtrise, utiliser un filtre automatique (ou avancé) pour tout supprimer d'un coup après filtrage
    et avec encore plus de maîtrise, Marc-L te montrerait comment par formule excel tu peux optimiser la mécanique

  3. #3
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Voir le traitement par filtre, beaucoup plus simple et rapide
    https://www.developpez.net/forums/d1...h-ne-s-arrete/

    En gros: vous pouvez filtrer sur les valeurs = 0 des champs qui vous intéressent, et vous supprimez en une passe ce qui reste à l'écran, puis vous enlevez le filtre

  4. #4
    Membre averti
    Femme Profil pro
    gestionnaire
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : gestionnaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Par défaut
    Citation Envoyé par vinc_bilb Voir le message
    Bonjour,

    Voir le traitement par filtre, beaucoup plus simple et rapide
    https://www.developpez.net/forums/d1...h-ne-s-arrete/

    En gros: vous pouvez filtrer sur les valeurs = 0 des champs qui vous intéressent, et vous supprimez en une passe ce qui reste à l'écran, puis vous enlevez le filtre
    Merci beaucoup je vais regarder cela également

  5. #5
    Membre averti
    Femme Profil pro
    gestionnaire
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : gestionnaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Par défaut
    Je ne sais pas comment prendre ton message...
    J'ai cherché en tapant les mots supprimer ligne, et n'ai trouvé que la syntaxe, et pas l'astuce et la logique de faire la boucle en partant du bas.

    Je vais de ce pas optimiser ma boucle avec le AND
    C'est en forgeant qu'on devient forgeron n'est-ce pas... Merci quand même.

  6. #6
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Tu n'es pas obligée de tenir compte de mon message, qui n'a rien de méchant ou d'offensant, je préfère le souligner.

    Faire des recherches, ça aussi ça s'apprend, tu forgeras mieux la prochaine fois

    Et n'oublie pas d'inverser le sens d'analyse de tes lignes ! On commence par la fin et on remonte

  7. #7
    Membre averti
    Femme Profil pro
    gestionnaire
    Inscrit en
    Mai 2016
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : gestionnaire

    Informations forums :
    Inscription : Mai 2016
    Messages : 16
    Par défaut
    bon maintenant ça fonctionne nickel. Effectivement avant de lire ton message je m'étais fait un schéma sur une feuille et j'avais vu que la ligne du dessous remontait mais j'étais loin d'arriver à la logique de la boucle en partant du bas

    Merci de souligner que c'était pas méchant, j'étais un peu vexée quand même

    Bon maintenant je vais rechercher comment utiliser un filtre car j'en ai besoin plus loin dans mon programme. Merci

  8. #8
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Pour ta prochaine forge de recherche :

    - filtres automatiques
    - autofilter (nom anglais qui sera utilisé dans le code VBA)

    tu as aussi l'aide en ligne en sélectionnant un mot dans ton code et en appuyant sur la touche


    y'a probablement encore plus de sujets sur les filtres automatiques (et des tutos et faq) que pour le sujet de la suppression de lignes réalisée dans le mauvais sens


    EDIT : tiens, garde ça au chaud pas loin de ton enclume, un filtre automatique est utilisé dans ce billet de blog (et dans d'autres)
    https://www.developpez.net/forums/bl...nt-2-criteres/

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

Discussions similaires

  1. [XL-2003] LISTVIEW problème avec suppression lignes
    Par goldfinger13 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/11/2011, 23h04
  2. [XL-2003] VBA problème avec la une boucle for range.end(xlup).row après suppression de lignes
    Par JohnNC115 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 25/01/2011, 10h21
  3. Temps execution boucle suppression ligne
    Par iperkut dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 21/09/2010, 18h26
  4. Problème Suppression de ligne dans DataBase
    Par kabil.cpp dans le forum Windows Forms
    Réponses: 5
    Dernier message: 09/09/2009, 10h08
  5. problème suppression ligne html
    Par julie31 dans le forum Langage
    Réponses: 9
    Dernier message: 04/03/2009, 19h40

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