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 plusieurs lignes entre deux lignes. Une colonne contient deux valeurs spécifiques


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2019
    Messages : 9
    Points : 8
    Points
    8
    Par défaut Suppression de plusieurs lignes entre deux lignes. Une colonne contient deux valeurs spécifiques
    Bonjour à tous,

    Je travaille régulièrement avec des fichiers différents dont la taille est variable.

    Les données dans ces fichiers sont organisées d’une façon qui me pose problème.

    En effet, je dois supprimer de nombreuses lignes qui ne me servent à rien. Cette tâche est pénible à réaliser et vu la quantité de lignes à supprimer, je peux parfois effacer des lignes essentielles…

    Je souhaite donc automatiser cette tâche avec une macro.

    J’ai bien essayé quelques lignes de code, mais sans succès.

    Le but serait d’effacer toutes les lignes qui ne me sont pas utiles, en sachant que les lignes à garder sont toujours « entre deux cellules » dont les valeurs sont par exemple « DEBUT et « FIN ».

    Je joins un fichier pour plus de compréhension afin de représenter ce qui est attendu.

    Je vous remercie.
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 412
    Points : 16 254
    Points
    16 254
    Par défaut
    Bonjour

    Il y a une problème après la ligne 125

    par exemple « DEBUT et « FIN » manque de précision : c'est ça ou autre chose ?

    Faisable assez simplement par PowerQuery intégré à Excel à partir de 2016, en add on à partir de 2010
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2019
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Bonjour,

    Effectivement, après la ligne 125, un petit soucis...

    J'ai corrigé.

    J'ai même essayé via une formule en ajoutant une colonne, mais la ligne "FIN" n'est pas prise...

    J'ai également regardé du coté des MFC, mais toutes mes tentatives échouent !
    Fichiers attachés Fichiers attachés

  4. #4
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 412
    Points : 16 254
    Points
    16 254
    Par défaut
    Bonjour

    Tu n'as pas précisé ta version Excel...

    Ci-joint une solution PowerQuery :attention les titres des colonnes est important : j'ai gardé les titres du premier fichier Discount Band et non Titre

    Actualiser soit par clic droit sur le tableau résultat, soit par Données Actualiser tout si la source évolue

    Tu peux aussi déconnecter le résultat et supprimer la source si plus utile
    Fichiers attachés Fichiers attachés
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Septembre 2019
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Septembre 2019
    Messages : 9
    Points : 8
    Points
    8
    Par défaut
    Je suis sur ... EXCEL 2007 !

  6. #6
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 412
    Points : 16 254
    Points
    16 254
    Par défaut
    RE

    En matriciel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(D2="DEBUT";LIGNE();SI(OU(Sheet1!$D2="FIN";ET(Sheet1!$D2<>"DEBUT";NB.SI($D$2:D2;"DEBUT")>NB.SI($D$2:D2;"FIN")));MAX(SI($D$2:D2="DEBUT";LIGNE($D$2:D2);0);1);0))
    Les 0 sont les lignes à éliminer
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  7. #7
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 949
    Points
    55 949
    Billets dans le blog
    131
    Par défaut
    Salut.

    Sans macro, l'idée de Chris est très intéressante.

    Par macro, tu pourrais utiliser ceci:
    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
    Sub DeleteRows()
      Dim LastRow As Long, r As Long
      Dim KeepRow As Boolean
      Dim CalculationMode As XlCalculation
     
      CalculationMode = Application.Calculation
      Application.ScreenUpdating = False
      Application.Calculation = xlCalculationManual
     
      LastRow = Range("d1048576").End(xlUp).Row
      For r = LastRow To 2 Step -1
        If Range("d" & r).Value = "FIN" Then KeepRow = True
        If Range("d" & r + 1).Value = "DEBUT" And Range("d" & r).Value <> "FIN" Then KeepRow = False
        If Not KeepRow Then Cells(r, 1).EntireRow.Delete
      Next
     
      Application.Calculation = CalculationMode
      Application.ScreenUpdating = True
    End Sub
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    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...
    ---------------

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

Discussions similaires

  1. Une Legend sur plusieurs lignes ou colonnes
    Par Copepode dans le forum MATLAB
    Réponses: 4
    Dernier message: 26/05/2021, 10h53
  2. Réponses: 4
    Dernier message: 19/07/2013, 07h18
  3. [SQL] Remplir une base SQL à partir d'un tableau à plusieurs lignes et colonnes
    Par Yagami_Raito dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 13/08/2007, 08h56
  4. Requête suppression de plusieurs lignes
    Par rane dans le forum Requêtes
    Réponses: 20
    Dernier message: 29/06/2006, 20h22

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