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 :

VBA Supprimer ligne si cellule différent de ..


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Janvier 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2024
    Messages : 3
    Par défaut VBA Supprimer ligne si cellule différent de ..
    Bonjour,

    J'ai besoin d'aide svp pour faire cette opération sans doute simple pour les experts que vous êtes.
    De mon côté je peux uniquement faire des macros simples à partir de l'enregistreur, ou éventuellement modifier des macros existantes si je fouine bien car j'ai de bonnes notions d'algorithmie.
    Mais pas plus.


    J'ai 2 colonnes (A, B), comme ci-dessous.


    Nom : Capture.JPG
Affichages : 114
Taille : 11,8 Ko


    Et une liste finie contenant des quadrigrammes. Ex:
    PARI
    MARS
    TLSE
    BRDX

    Je souhaiterais une macro permettant de supprimer toutes les lignes dont le code en colonne B est présent dans la liste. Avec résultat dans un nouvel onglet, pour conserver les données sources.

    Dans l'exemple, seuls les lignes avec Lyon et Vincennes seraient conservées.

    Merci pour votre aide et je reste dispo si besoin de préciser.

  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
    Bonjour
    Je souhaiterais une macro permettant de supprimer toutes les lignes dont le code en colonne B est présent dans la liste. Avec résultat dans un nouvel onglet, pour conserver les données sources.
    tu veux supprimer ou conserver les données ??
    En tt cas : Le plus simple et avec zéro codage est PowerQuery : Il suffit de mettre tes données sous forme de tableau structuré ; tu démarre PowerQuery et tu fais le filtre et tu télécharge les données.... C'est vivement recommandé de passer par PowerQuery
    Si pour une raison que j'ignore tu insiste sur VBA , tu peux tester ça:
    une réponse inspirée de la réponse du GRAND boisgontierjacques dans cette discussion
    Structure :
    1- Un onglet nommé "base" : par la base des données
    2- un onglet nommé "liste" pour saisir la liste à éliminer du copillage
    3- un onglet nommé "RESULTAT" pour recevoir les données filtrées inverse à la liste
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    Sub FiltreListe()
    Dim f1 As Worksheet
    Dim f2 As Worksheet
    Dim derlig As Long
    Application.ScreenUpdating = False
      Set f1 = Sheets("base")
      Set f2 = Sheets("liste")
      Set F3 = Sheets("RESULTAT")
      F3.Cells.ClearContents
       derlig = f2.Cells(Rows.Count, 1).End(xlUp).Row
       lig = f1.Cells(Rows.Count, 1).End(xlUp).Row
       If f1.FilterMode = True Then f1.ShowAllData
      Set d = CreateObject("scripting.dictionary")
      d.CompareMode = vbTextCompare
      Dim liste As New Collection
       Dim i As Integer
       On Error Resume Next
       For Each cel In f2.Range("A2:A" & f2.Cells(Rows.Count, 1).End(xlUp).Row)
        liste.Add cel.Text, CStr(cel.Text)
       Next cel
     
      For Each c In liste: d(c) = "": Next c
     
      Set d2 = CreateObject("scripting.dictionary")
      d2.CompareMode = vbTextCompare
      For Each c In f1.Range("B2:B" & f1.[B65000].End(xlUp).Row)
       If Not d.exists(c.Value) Then d2(c.Value) = ""
      Next c
     
      f1.Range(f1.Cells(1, 1), f1.Cells(lig, 2)).AutoFilter Field:=2, Criteria1:=d2.keys, Operator:=xlFilterValues
      f1.Range("A1:B" & lig).SpecialCells(xlCellTypeVisible).Copy Destination:=F3.Range("A1")
      f1.ShowAllData
     Application.ScreenUpdating = True
    End Sub
    Fichiers attachés Fichiers attachés

  3. #3
    Candidat au Club
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Janvier 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2024
    Messages : 3
    Par défaut
    merci pour ta réponse.

    Je ne connaissais pas power query. Je me renseigne de ce pas

    Et je regarde en détail le code que tu as proposé.

    Je reviens vers toi ensuite

  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
    Powerquery en vidéo
    Images attachées Images attachées  

  5. #5
    Candidat au Club
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Janvier 2024
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Janvier 2024
    Messages : 3
    Par défaut
    Bon, après essai, le code VBA me convient parfaitement
    Je l'ai un poil bricolé pour adapter à mes données, mais c'est nickel. Merci beaucoup !

    Pour power query, je vais creuser un peu, merci pour la démo que tu as postée

    Bonne soirée

Discussions similaires

  1. [XL-2010] VBA: Supprimer ligne commençant par un caractère donné
    Par arves dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/01/2014, 10h07
  2. [XL-2003] Boucle supprimer ligne dont cellule contenant..
    Par frag132 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/01/2013, 13h32
  3. [XL-2003] Supprimer ligne si cellule vide ou
    Par guigui69 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/05/2011, 09h32
  4. [XL-2000] Supprimer ligne si cellule d'une colonne = 0, sur une plage de cellules
    Par audesara dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/05/2011, 16h16
  5. VBA: Supprimer ligne commençant par un caractère donné
    Par urbanspike dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 18/01/2008, 12h03

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