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 :

Suppression de lignes avec conditions multiples en VBA [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut Suppression de lignes avec conditions multiples en VBA
    Bonjour à tous,

    Malgré mon acharnement concernant ma recherche de mon problème, je n'y arrive pas...

    J'ai quatre colonnes (numéro ; libelle ; code ; montant)

    C'est un tableau de 32 lignes dans mon exemple et bien entendu, je peux avoir des lignes vides (exemple les lignes 6 et 23).

    Ma requête est :

    Si la cellule de la première colonne n'est pas 6 ou 7 (y compris vide) et bien je supprime la ligne entière sinon rien (ou passe à la ligne suivante)

    Voici mon début de requête mais cela ne marche pas ....

    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
    Sub suppr ()
    Application.ScreenUpdating = False
    Sheets("Feuil5").Select
     
    Dim nbligne As Long
    nbligne = Range("A1").CurrentRegion.Rows.Count
     
    For I = nbligne To 1 Step -1
     
    If Not Cells(nbligne, 1).Value = "6" Or Cells(nbligne, 1).Value = "7" Then
    Selection.EntireRow.Delete
    End If
    Next I
     
    Application.ScreenUpdating = True
    End Sub

    Et voici mon tableau :

    Nom : developpez.jpg
Affichages : 682
Taille : 74,3 Ko


    Merci pour votre aide

    PS : Première fois que j'utilise le Forum

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    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 974
    Par défaut
    bonsoir
    n'oublier pas de baliser ton code
    essayez ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub EntireRow()
     
         For i = Range("A" & Rows.Count).End(xlUp).Row To 1 Step -1
                 If Cells(i, 1) <> 6 And Cells(i, 1) <> 7 Then
                 Cells(i, 1).EntireRow.Delete
                  End If
           Next i
        End Sub

  3. #3
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    [QUOTE=BENNASR;9634754]bonsoir
    n'oublier pas de baliser ton code
    essayez ça :

    Bonsoir BENNASR,

    Cela marche bien à part que la première ligne a été également supprimée..

    De plus, qu'est ce que vous entendez par baliser mon code?

    Merci encore pour votre rapidité

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    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 974
    Par défaut
    pour s'arrêter à la ligne 2 il suffit de changer 1 par 2 ce qui donne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub EntireRow()
     
         For i = Range("A" & Rows.Count).End(xlUp).Row To 2 Step -1
                 If Cells(i, 1) <> 6 And Cells(i, 1) <> 7 Then
                 Cells(i, 1).EntireRow.Delete
                  End If
           Next i
        End Sub
    A l'ouverture du discussion et Quand tu écris un code cliquer en haut sur (#)

  5. #5
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Merci beaucoup

    Bonne fin de journée

  6. #6
    Membre Expert
    Homme Profil pro
    PAO
    Inscrit en
    Octobre 2014
    Messages
    2 576
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : PAO
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2014
    Messages : 2 576
    Par défaut
    Bonjour,

    ou aussi sans boucle en utilisant une simple formule puis un tri :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(OU($A2=6;$A2=7;$A2="");0;1)
    Cf. ce post : https://www.developpez.net/forums/d1...e/#post9205474

    Edit : j'ai inversé le 0 et le 1 à la fin du si, c'est corrigé !
    Cordialement
    Ryu

    La connaissance s’acquiert par l’expérience, tout le reste n’est que de l’information. – Albert Einstein

    Pensez à la Balise [ CODE][/CODE ] - à utiliser via le bouton # => Exemple

    Une fois votre problème solutionné pensez à mettre :resolu: en n'oubliant pas d'indiquer qu'elle est la solution finale choisie ;)

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

Discussions similaires

  1. Problème VBA : suppression de lignes sous conditions multiples
    Par mia73 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/10/2012, 19h42
  2. [AC-2000] Suppression ligne avec conditions sur deux tables
    Par Loufink dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 09/07/2009, 11h38
  3. Suppression des lignes avec condition
    Par tientinou dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 19/03/2009, 12h35
  4. Suppression des lignes sous condition multiple
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 20/06/2007, 16h23
  5. [VBA-E] Suppression des colonnes avec condition
    Par desdenova dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 27/02/2007, 13h39

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