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 :

Supprimer lignes sous condition


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 15
    Points : 11
    Points
    11
    Par défaut Supprimer lignes sous condition
    Bonjour,

    Je souhaiterais supprimer des lignes avec une condition.
    Les lignes que je dois supprimer appartiennent à un sous ensemble en colonne 1 et les numeros d'articles se trouvent en colonne 2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
     
    I = 6
    Y = ActiveCell.Select - 1
     
    For I = 6 To Range("B100000").End(xlUp).Row Step 1
     
        If Range("B" & I).Value = 205632 Then
     
            For Y = ActiveCell.Select - 1 To Range("B100000").End(xlUp).Row Step 1
     
             Do While Range("A" & I).Value <> 3
             ActiveCell.EntireRow.Delete
             Loop
     
            Next Y
     
        End If
    Next
    Je veux lui dire "tant qu'il ne trouve pas d'autre "3" dans la colonne 1, qu'il supprime toutes les lignes à partir de l'article 205632."
    Et qu'il continue, et s'il retrouve un 205632 qu'il recommence.

    Ca peut paraître simple, mais étant débutant j'ai un peu de mal.

    Si quelqu'un peut m'aider

  2. #2
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Bonjour !

    Que vaut la variable Y ?
    Et ligne de code n°13, es-tu sûr que c'est depuis ActiveCell qu'il faille supprimer la ligne ?!

    ___________________________________________________________________________________________________________
    Je suis Paris, Egypte, Stockholm, London, Istanbul, Berlin, Nice, Bruxelles, Charlie, …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  3. #3
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 661
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 661
    Points : 5 785
    Points
    5 785
    Par défaut
    Bonjour,

    Pour supprimer correctement des lignes dans une boucle il faut boucler "à l'envers" (for i = fin to 1 step -1) sinon tu risque de sauter des lignes.
    Exemple: d'après un critère les ligne 3 et 4 doivent être supprimer, si tu suprime la ligne 3 la 4 est automatiquement décaler en 3 et passe a travers ta boucle.

    Je ne comprends pas ceci: Y = ActiveCell.Select - 1, cellule - 1?

    Plutot que supprimer ligne par ligne, il est souvent plus simple et toujours plus rapide de faire un filtre et tout supprimer d'un coup.
    J'aimerais bien aller vivre en Théorie, car en Théorie tout se passe bien.

  4. #4
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Bonjour Marc,

    La variable Y correpondrait à l'article se trouvant en dessous du 205632, car cet article possèdant un "3" en colonne 1, je me suis dis que la macro n'effacerait que cette ligne puisque dans le While elle aurait trouvé le 3 tout de suite.

    Il faudrait supprimer chaque ligne qui ne possède pas de 3 en colonne 1, je pensais donc que la macro supprimerait la ligne s'il n'y a pas de 3.

    En bref, j'ai bidouillé, j'ai pas trouvé

  5. #5
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    En dehors d'un filtre normal ou avancé, sans besoin de boucle - trop lent - j'utiliserais la méthode Find
    pour trouver la première ligne de l'article puis toujours via cette méthode la première ligne à partir
    de cet article égale à 3, délimitant ainsi le bloc de lignes à supprimer donc en une seule instruction !
    Mais selon la présentation initiale pas assez détaillée à mon goût ma préférence est le filtre avancé …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  6. #6
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    La méthode find m'intéresse mais je ne sais pas l'utiliser.

    Pour rappel, je dois supprimer un article parent "205632" qui constitue lui même en sous ensemble 3. Je souhaite supprimer tout les articles appartenants à ce parent. C'est à dire tout ceux qui comporte une nomenclature supérieure à 3 (en colonne 1) après ce même article.
    Enfin il faut qu'il arrête de supprimer lorsque il trouve un autre 3, car c'est un autre article parent.

    3| 205632 Delete
    4| 205700 Delete
    4| 205701 Delete
    5| 205702 Delete
    3 206...

    J'espère avoir été plus clair...

  7. #7
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut




    Le 3 a-t-il réellement une importance ?   Et supprimer tous les articles 205632, non ?
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

  8. #8
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Voir modif précédent commentaire pardon. Chaque article à un numero différent les seuls liens entre eux sont l'appartenance ou non à l'article parent

  9. #9
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    Bonsoir
    j'ai pas compris ta requête, un petit capture écran du tableau actuelle et un petit tableau du résultat attendu
    avec données fictives ça sera bien attendu

    Bonne continuation
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  10. #10
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2017
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2017
    Messages : 15
    Points : 11
    Points
    11
    Par défaut
    Nom : Capture2.PNG
Affichages : 1758
Taille : 10,2 Ko

    Dans cet exemple, supprimer les articles en jaune

  11. #11
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 914
    Points : 5 121
    Points
    5 121
    Par défaut
    bonsoir
    et pourquoi que les jaunes?? c'est quoi le caractère de sélection?? est ce que c'est parce que les 4 premiers chiffre sont identique??
    explique stp
    --------------------------------------------------------------*****----------------------------------------------------------------------------
    Bonne Continuation & Plein Succès
    Notre seul pouvoir véritable consiste à aider autrui avec modestie
    ______________________________________________________
    Pour dire merci, cliquer sur et quand la discussion est résolue, penser à cliquer sur le bouton

  12. #12
    Expert éminent sénior
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Points : 18 677
    Points
    18 677
    Par défaut

    Donc via Find recherche dans la deuxième colonne l'article puis à partir de cet article dans la première colonne
    recherche de la valeur 3 puis suppression en une unique instruction du bloc de lignes …

    En effectuant déjà les recherches et la suppression manuellement après avoir activé l'Enregistreur de macro
    une base de code est livrée sur un plateau !   Sans compter l'aide VBA de la méthode Find et son exemple détaillé …
    C'est parce que la vitesse de la lumière est plus rapide que celle du son que tant de gens paressent brillants avant d'avoir l'air con ! (Thomas Boishardy)

Discussions similaires

  1. [XL-2013] Copier coller supprimer ligne sous condition
    Par nubed dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 10/04/2015, 11h09
  2. [XL-2007] Code VBA pour supprimer des lignes sous condition - problème
    Par PeaceMaker dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 08/06/2011, 09h09
  3. Supprimer lignes sous condition
    Par andrea0 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/05/2011, 09h52
  4. Réponses: 4
    Dernier message: 11/10/2010, 16h43
  5. supprimer lignes sous conditions
    Par mehdi.017 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 16/04/2010, 02h42

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