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

  1. #1
    Membre à l'essai
    Homme Profil pro
    actuellement en longue maladie
    Inscrit en
    décembre 2019
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : actuellement en longue maladie
    Secteur : Finance

    Informations forums :
    Inscription : décembre 2019
    Messages : 37
    Points : 16
    Points
    16
    Par défaut Demande de macro vba pour supprimer des lignes sur base d'une condition
    Bonjour, j'ai un tableau ci-joint, et je souhaite avec une macro vba supprimer les lignes entieres quand la colonne M>1

    Je souhaite aussi si la colonne H10 = H11; ou H24 = H23; etc............ sont egaux, il faut aussi supprimer les 2 lignes entieres avec une macro VBA.

    Merci d'avance pour votre retour

    Cordialement

    Hervé
    Fichiers attachés Fichiers attachés

  2. #2
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur informatique indépendant
    Inscrit en
    novembre 2003
    Messages
    17 103
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur informatique indépendant
    Secteur : Enseignement

    Informations forums :
    Inscription : novembre 2003
    Messages : 17 103
    Points : 49 254
    Points
    49 254
    Billets dans le blog
    92
    Par défaut
    Salut

    Dans un premier temps et en tenant compte uniquement de la condition sur M, je serais parti sur un tableau structuré. Ca aurait été simple... Déjà, sans VBA, tu aurais pu par exemple filtrer tes lignes sur celles différentes de 1 puis les sélectionner et les supprimer (attention, ça supprime les lignes entières de la feuille). Pour un "One shot", c'est amplement suffisant.

    Si vraiment on veut du VBA: Sur base d'un tableau structuré nommé Tableau1, on utilise le code suivant, qui remonte les lignes et supprime celles pour lesquelles la valeur dans la colonne Nature est >1. On remarque que l'utilisation des références structurées permet de pointer facilement vers le tableau et de supprimer tout aussi facilement les lignes uniquement pour les colonnes du tableau structuré.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test()
      Dim i As Long
     
      For i = Range("tableau1").Rows.Count To 1 Step -1
        If Range("tableau1[Nature]")(i).Value > 1 Then Range("tableau1").ListObject.ListRows(i).Delete
      Next
    End Sub

    Normalement, dans un tableau structuré (= table de données), l'ordre des données n'a pas d'importance. Ici, ta règle sur les H vient contredire cela. Cette règle pour la suppression des lignes si Hx = Hx-1 est à mon avis imprécise. On se souvient que lorsque l'on supprime des lignes sous condition, il faut remonter du bas du tableau. Si tu as Hx = Hx-1 = Hx-2 et que tu te contentes de ta règle, tu vas supprimer Hx et Hx-1 et tu seras dans l'impossibilité de tester Hx-1 = Hx-2... Pour les mêmes raisons et quelle que soit la règle retenue pour H, il faudra tester la condition sur les H avant la condition sur M, car si tu supprimes Mx, tu seras dans l'impossibilité de tester si Hx = Hx-1

    Dans les faits, je voudrais savoir si c'est pour un exercice d'apprentissage.


    PS: Normalement, on montre le code qu'on a essayé, histoire que l'on voit que tu t'impliques dans la démarche
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

Discussions similaires

  1. [XL-2016] Copier des cellules sur base d'une condition
    Par jdebrabanter dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/02/2021, 15h41
  2. macro vba pour comparer des fichiers et supprimer des lignes
    Par romanzolanski dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/07/2016, 07h04
  3. [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
  4. macro excel pour supprimer des lignes comportant un caractere spécial
    Par fredo49 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/04/2011, 16h32
  5. [XL-2010] Macro VBA pour supprimer des caractère situés après une valeur
    Par Guillaume_PMO dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 17/03/2011, 17h06

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