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 :

Macro permettant de supprimer les lignes contenant des cellules vides [XL-365]


Sujet :

Macros et VBA Excel

  1. #21
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Au vu de la formule que tu as publiée, cela signifie que l'on supprimera les lignes dont la valeur de la colonne D = 0 ET dont la valeur de la colonne D de la ligne qui précède est égale à 0

    [EDIT]
    Rectification suite à une mauvaise lecture
    Au vu de la formule que tu as publiée, cela signifie que l'on supprimera les lignes dont la valeur de la colonne D<0 ET dont la valeur de la colonne D de la ligne qui précède est inférieure à 0
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  2. #22
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2019
    Messages
    107
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2019
    Messages : 107
    Points : 52
    Points
    52
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Au vu de la formule que tu as publiée, cela signifie que l'on supprimera les lignes dont la valeur de la colonne D = 0 ET dont la valeur de la colonne D de la ligne qui précède est égale à 0
    En fait en utilisant la fonction avec ces paramètres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim rng As Range
    Dim FormulaText As String
    FormulaText = "=AND(D2<0, D3<0)"
    Set rng = Worksheets("SSA3").Range("$A$1:$H$85")
    DeleteRowsByAdvancedFilter rng, FormulaText

    ça me donne exactement les mêmes résultats que sans la fonction, c'est à dire aucune ligne supprimée quelque soit la valeur de la colonne D,


    Sinon, pourquoi dis-tu que ma formule devrait supprimer les lignes de dont la valeur D = 0 et les lignes précédentes alors que je précise D2<0 et D3<0, pour que ça supprime les lignes dont la valeur D = 0 ne faudrait-il pas plutôt mettre D2 =0 et D3 =0 ?

  3. #23
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Sinon, pourquoi dis-tu que ma formule devrait supprimer les lignes de dont la valeur D = 0 et les lignes précédentes alors que je précise D2<0 et D3<0, pour que ça supprime les lignes dont la valeur D = 0 ne faudrait-il pas plutôt mettre D2 =0 et D3 =0 ?
    Oui, désolé, je n'avais pas mes lunettes lorsque j'ai lu ta formule et c'est bien <0 et pas = 0
    donc ce sont les lignes avec valeurs négatives que tu cherches à supprimer, je pensais que c'était des cellules vides
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  4. #24
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Alors j'ai effectué un test similaire à ce que tu souhaites faire.

    Le scénario : Supprimer les lignes de la plage A1:M15 dont la valeur de la colonne E est supérieure à 2500 ET dont la valeur de la colonne K de la ligne suivante est égale à 0 soit en VBA =AND(E2>2500,K3=0)
    Dans l'illustration ci-dessous, on peut visualiser en colonne O, le résultat que renvoie le test logique pour chaque ligne.
    Soit trois lignes qui renvoient VRAI (Celles qui seront supprimées)

    Nom : 200313 dvp DeleteRowsByAdvancedFilter.png
Affichages : 389
Taille : 100,1 Ko

    Le code VBA qui va permettre de supprimer les lignes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub t()
      Dim rng As Range
      Dim FormulaText As String
      FormulaText = "=AND(E2>2500,K3=0)"
      Set rng = Worksheets("Feuil1").Range("$A$1").CurrentRegion
      DeleteRowsByAdvancedFilter rng, FormulaText
      Set rng = Nothing
    End Sub
    Et voici ci-dessous, la plage de données après suppression des lignes

    Nom : 200313 dvp DeleteRowsByAdvancedFilter (After).png
Affichages : 365
Taille : 59,6 Ko

    Pour info : Dans l'exemple proposé, il y aurait lieu d'ajouter un test supplémentaire car évidemment si la valeur de la colonne E de la dernière ligne était supérieure à 2500, elle aurait été également supprimée puisque la valeur de la colonne K de la ligne suivante est égale à 0
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Supprimer les lignes contenant que des 0
    Par Paul Pit dans le forum MATLAB
    Réponses: 2
    Dernier message: 21/05/2014, 14h43
  2. Réponses: 2
    Dernier message: 09/06/2011, 14h38
  3. Supprimer les lignes contenants un mot specifique en batch file
    Par stpaul04 dans le forum Scripts/Batch
    Réponses: 6
    Dernier message: 12/02/2011, 14h11
  4. [XL-2007] Macro, pour supprimer les lignes contenant « #REF! »
    Par LittleDaddy dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 30/01/2011, 00h05

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