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 lignes vides et lignes doublons [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Suppression lignes vides et lignes doublons
    Bonjour,

    Le classeur en question contient des données confidentiels, vous comprendrez qu'il m'est impossible de le joindre à mon post.
    Ce classeur est constitué de plusieurs feuilles avec une entête sur la ligne1 de A à AC, le nombre de lignes sur chaque feuille est variable et différent
    (il peut y avoir des lignes vides). Je voudrai créer une nouvelle feuille sur laquelle je n'aurai ni de doublons, ni de lignes vides.
    Par doublons , je veux dire des lignes identiques (c-à-d concaténation de toutes les cellules d'une ligne).

    Je vous remercie beaucoup.

    Cordialement,

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Dans un premier temps, copies toutes les données à la suite dans ta nouvelle feuille. Ensuite appliques RemoveDuplicates (à partir de Xl 2007)

  3. #3
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 184
    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 : 13 184
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    La première étape consiste à parcourir l'ensemble des feuilles du classeur et pour chaque feuille concernée, utiliser une procédure de suppression de lignes.
    Exemple pour trois feuilles à supprimer.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub ConcatenateSheet()
     Dim sht As Worksheet
     For Each sht In ThisWorkbook.Worksheets
      Select Case UCase(sht.Name)
       Case "FEUIL1", "FEUIL2", "DB" ' Feuilles à supprimer
          DeleteRow sht
      End Select
     Next
     Set sht = Nothing
    End Sub
    Autre exemple où toutes les feuilles doivent être traitées à l'exception des feuilles nommées Synthese et Menu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub ConcatenateSheet()
     Dim sht As Worksheet
     For Each sht In ThisWorkbook.Worksheets
      Select Case UCase(sht.Name)
       Case "SYNTHESE", "MENU"
       Case Else
        DeleteRow sht
      End Select
     Next
     Set sht = Nothing
    End Sub
    Code de la procédure DeleteRow (suppression des lignes vides), en supposant que si la cellule de la colonne A est vide, la ligne l'est également
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub DeleteRow(sheet As Worksheet)
     Debug.Print sheet.Name
     Dim LastRow As Long
     If Len(sheet.Range("A1")) = 0 Then Exit Sub ' Pas de données
     With sheet
      LastRow = .Range("A" & .Rows.Count).End(xlUp).Row
      On Error Resume Next
      .Range("A1:A" & LastRow).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
      On Error GoTo 0
     End With
    End Sub
    Nous supposons également que toutes les listes commencent à partir de la cellule A1
    La deuxième étape consiste à rapatrier toutes les feuilles sur une seule (on suppose que toutes les feuilles concernées ont les mêmes étiquettes de colonnes.
    Voir cette contribution Regrouper plusieurs feuilles sur une autre. (2003-2010)
    La troisième étape consiste à supprimer les enregistrements en double.
    Déclencher l'enregistreur de macro en utilisant la commande Supprimer les doublons du groupe Outils de données de l'onglet [Données] et retravailler le code.
    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. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    je vous remercie beaucoup, je vais utiliser les solutions de Philippe Tulliez.

    Mon problème est résolu.

    Merci encore à vous deux.

    Cordialement,

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

Discussions similaires

  1. Remonter le contenu d'une ligne non vide à une ligne vide
    Par sossso112333 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/08/2014, 13h58
  2. Réponses: 20
    Dernier message: 03/05/2008, 01h20
  3. suppression de la dernière ligne vide d'un fichier text en VB6
    Par zcoul dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 23/07/2007, 20h45
  4. Traitement des lignes [suppression des lignes vides]
    Par turbo_chess dans le forum Linux
    Réponses: 4
    Dernier message: 22/03/2007, 10h16

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