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

Excel Discussion :

Extraction des doublons excel [XL-365]


Sujet :

Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de bartimeus35
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 588
    Par défaut Extraction des doublons excel
    Bonjour à tous,
    Dans une feuille excel j'ai 4 colonnes et je veux identifier les lignes qui ont exactement les même data ds les colonnes 1 à 4( et ds l'idéal les recopier ds un autre feuille)
    J'ai pour le moment j'ai concaténé les colonnes 1 à 4 ds la colonne 5 et enuite je fais
    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
    Sub RechercherDoublons()
     
     
      Dim i, j
     
    premiere_ligne = 2
    derniere_ligne = 2000
    nb_trouves = 0
    lignes = ""
     
      For i = premiere_ligne To derniere_ligne
     
        For j = i + 1 To derniere_ligne
     
          If Cells(i, 5) = Cells(j, 5) Then
     
            Cells(j, 1).Interior.Color = RGB(255, 0, 0)
     
    lignes = lignes & " " & i
     
          End If
     
        Next j
     
      Next i
      MsgBox ("lignes avec des doublons " & lignes)
     
    End Sub
    Si au lieu de faire un check sur la colonne 5, je fais un check sur les 4 colonnes, ca dvient alors long...
    Y a t il un moyen de faire l’équivalent acces d'un select distinct ***** et ensuite recopier le résultat ds une autre feuille ?

    Any idea ?
    Merci,

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonjour,
    pour recopier dans une autre feuille les valeurs sans doublons. dans la sub test j'ai choisi la feuille 1 vers la feuille 2 mais tu peux adapté à ton besoin!
    il un moyen de faire l’équivalent acces d'un select distinct ***** et ensuite recopier le résultat ds une autre feuille ?
    Code select distinct Feuille1 into Feulle2 : 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
    Sub test()
    With ThisWorkbook
        FiltreActif .Sheets("Feuil1").UsedRange, .Sheets("Feuil1").UsedRange, .Sheets("Feuil2").Range("A1"), True
    End With
    End Sub
    Private Function FiltreActif(RangeSource As Range, CriterRange As Range, CopyRange As Range, Optional Unique As Boolean = True) As Boolean
    FiltreActif = False
    On Error Resume Next
     RangeSource.AdvancedFilter Action:= _
            xlFilterCopy, CriteriaRange:=CriterRange _
            , CopyToRange:=CopyRange, Unique:=Unique
            DoEvents
         FiltreActif Not CBool(Err)
            'MsgBox Err.Description
            On Error GoTo 0
    End Function

  3. #3
    Membre éclairé Avatar de bartimeus35
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 588
    Par défaut
    Merci de ta piste mais ce na fonctionne pas chez moi, cf pièce jointe.
    Je suis perdu , sniff
    Pour simplifier la suite de ce que je voudrais faire, je voudrais pouvoir écrire OUI dans la colonne 5 de mon exemple quand il s'agit d'un doublon et la recopier ds la feuil2
    (on est sur un doublon si les data des 4 colonnees sont les mêmes)

    Mille mercis,
    François
    Fichiers attachés Fichiers attachés

  4. #4
    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 173
    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 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En espérant avoir bien compris le problème, je ferais ce travail avec Power Query

    Les données sont dans un tableau structuré nommé "t_Data3"

    Le code Power Query
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    let
        Source = Excel.CurrentWorkbook(){[Name="t_Data3"]}[Content],
        #"Type modifié" = Table.TransformColumnTypes(Source,{{"Ref", type text}, {"Libellé 1", type text}, {"Date 1", type date}, {"Date 2", type date}, {"Date 3", type date}, {"Date 4", type date}}),
        AddKey = Table.AddColumn(#"Type modifié", "Key", each Text.Combine({Text.From([Date 4], "fr-BE"), Text.From([Date 3], "fr-BE"), Text.From([Date 2], "fr-BE"), Text.From([Date 1], "fr-BE")}, "|"), type text),
        GroupedRows = Table.Group(AddKey, {"Key"}, {{"Count", each Table.RowCount(_), type number}}), // Group By et Count
        FilteredRows = Table.SelectRows(GroupedRows, each [Count] > 1), // Filtrage des lignes
        MergedTable = Table.NestedJoin(AddKey, {"Key"}, FilteredRows , {"Key"}, "NewColumn"),
        #"NewColumn développé" = Table.ExpandTableColumn(MergedTable, "NewColumn", {"Count"}, {"Count"}),
        #"Lignes filtrées" = Table.SelectRows(#"NewColumn développé", each ([Count] <> null)),
        #"Autres colonnes supprimées" = Table.SelectColumns(#"Lignes filtrées",{"Ref", "Libellé 1", "Date 1", "Date 2", "Date 3", "Date 4"})
    in
        #"Autres colonnes supprimées"
    Illustration de la table source à gauche avec une mise en évidence les colonnes avec doublons (2 doubles et 3 triples)

    Nom : 231008 dvp Exporter les doublons Power Query.png
Affichages : 124
Taille : 78,5 Ko
    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

  5. #5
    Membre éclairé Avatar de bartimeus35
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 588
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    En espérant avoir bien compris le problème, je ferais ce travail avec Power Query

    Les données sont dans un tableau structuré nommé
    Je ne maitrie pas bien les tableaux structurés nommés, je vais creuser ..

    Pour le moment j’avais du code que j'ai finalement voulu appeler depuis access , mon code est don devenu


    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
    Function analyse_avant_import()
     
     
        Dim i, j
        Dim premiere_ligne, derniere_ligne
     
        premiere_ligne = 2
        derniere_ligne = 1628
     
       With oWkb_src
        analyse_avant_import = "OK"
        For i = premiere_ligne To derniere_ligne
     
            For j = i + 1 To derniere_ligne
             Forms("F_Attente").Controls("lblApplication").Caption = "Ligne " & i & "--" & j
                If (.Sheets(onglet_src).Cells(i, Col_appli) = .Sheets(onglet_src).Cells(j, Col_appli)) And (.Sheets(onglet_src).Cells(i, COL_C_V) = .Sheets(onglet_src).Cells(j, COL_C_V)) And (.Sheets(onglet_src).Cells(i, COL_ITEM) = .Sheets(onglet_src).Cells(j, COL_ITEM)) Then
     
                    .Sheets(onglet_src).Cells(j, col_ANALYSE) = "DOUBLON"
                    .Sheets(onglet_src).Cells(i, col_ANALYSE) = "DOUBLON"
                    analyse_avant_import = "NOK"
     
                End If
     
            Next j
     
        Next i
        End With
     
     
     
     
    End Function
    Le problème est que ce code appelé finalement depuis access ( je fais un import et je veux faire une vérif avant) met plus d'une minute pour passer de i à i+1, donc 1628 lignes, c'est ingérable.

    pour utiliser Power Query, il faut forcément que l'on soit ds Excel.?

  6. #6
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    test ça
    Fichiers attachés Fichiers attachés

  7. #7
    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 173
    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 173
    Billets dans le blog
    53
    Par défaut
    Bonjour François,
    Pour simplifier la suite de ce que je voudrais faire, je voudrais pouvoir écrire OUI dans la colonne 5 de mon exemple quand il s'agit d'un doublon et la recopier ds la feuil2
    (on est sur un doublon si les data des 4 colonnees sont les mêmes)
    Ce n'est plus une exportation là

    Une proposition en utilisant les variables tableaux et en supposant que la cinquième colonne a un titre et qu'il n'y a pas de formule dans la liste de données. A modifier éventuellement les deux constantes.

    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
    Sub t()
      Const SheetName As String = "Feuil1" ' Nom de la feuille
      Const StartCel As String = "A1"      ' Cellule de départ des données
      Dim r As Range
      Dim t1 As Variant, t2 As Variant, t3 As Variant
      Dim e As Long
      Set r = ThisWorkbook.Worksheets(SheetName).Range(StartCel).CurrentRegion
      With r
        Set r = .Offset(1).Resize(.Rows.Count - 1)
      End With
      t1 = r.Value
      ReDim t2(1 To UBound(t1))
      For e = LBound(t1) To UBound(t1)
        t2(e) = t1(e, 1) & t1(e, 2) & t1(e, 3) & t1(e, 4)
      Next
      For e = LBound(t1) To UBound(t1)
        t3 = Filter(t2, t2(e))
        t1(e, 5) = IIf(UBound(t3), "Oui", "")
      Next
      r = t1
      Set r = Nothing
    End Sub
    Pour en savoir plus sur les variables tableaux : Utiliser les variables tableaux en VBA Excel
    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

  8. #8
    Membre Expert
    Homme Profil pro
    Formateur et développeur bureautique
    Inscrit en
    Mars 2007
    Messages
    1 568
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur et développeur bureautique
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 568
    Par défaut
    Bonjour

    Deux remarques.

    Concernant le VBA, je passerai par la méthode suivante :
    je dpplique la feuille (plus rapide que de copier les cellules)
    j'utilise le bouton : Données > Supprimer les doublons

    C'est très rapide car il n'y a aucune boucle.


    Concernant le PowerQuery, je passerai par une autre méthode en seulement deux étapes.
    Je sélectionne toutes mes colonnes > Accueil > Conserver les doublons
    Accueil > Supprimer les doublons

    C'est un des exercices que je fais réaliser à mes stagiaires

    En espérant que cela aide

    Bonne journée

    Pierre Dumas

  9. #9
    Membre émérite
    Homme Profil pro
    Retraité
    Inscrit en
    Octobre 2022
    Messages
    685
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Octobre 2022
    Messages : 685
    Par défaut
    Bonjour,

    pour le plaisir d'utiliser des formules :

    Nom : _Capture d’écran 2023-10-09 100009.png
Affichages : 103
Taille : 18,0 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =UNIQUE(LET(NB;NB.SI.ENS(Tableau1[C1];Tableau1[C1];Tableau1[C2];Tableau1[C2];Tableau1[C3];Tableau1[C3];Tableau1[C4];Tableau1[C4]);FILTRE(Tableau1;NB>1)))
    Par regardé ce que ça donne en perf sur des gros volumes...

  10. #10
    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 173
    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 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je ne maitrie pas bien les tableaux structurés nommés, je vais creuser ..
    J'avais oublié d'indiquer le nom du tableau structuré qui est t_Data3

    Chaque fois que vous réagissez c'est pour changer la version de votre demande.
    A la base vous demandez d'exporter les lignes contenant des doublons répartis sur quatre colonnes dans une autre feuille d'excel, ensuite il faut indiquer dans une 5ème colonne de la même feuille le mot "oui" si la ligne contient un doublon toujours réparti sur 4 colonnes et maintenant les données proviennent d'Access ?

    Pourriez vous être clair dans votre demande ?

    Et pour répondre à votre question, oui, on peut depuis excel et avec Power Query charger des données provenant d'Access
    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

  11. #11
    Membre éclairé Avatar de bartimeus35
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 588
    Par défaut
    Citation Envoyé par Thumb down Voir le message
    test ça
    Salut Thumb down, c'est parfait, exactement mon besoin,
    Puis je demander une faveur :
    Que faut il faire si je veux indiquer par exemple DOUBLON dans le colonne 6 de ma feuil1 pour les lignes étant des doublons ?
    Mille mercis,

    François

  12. #12
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 574
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 574
    Par défaut
    Bonjour,
    voila.
    Fichiers attachés Fichiers attachés

  13. #13
    Membre éclairé Avatar de bartimeus35
    Homme Profil pro
    Inscrit en
    Juin 2009
    Messages
    588
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Juin 2009
    Messages : 588
    Par défaut

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

Discussions similaires

  1. Extraction des commentaires Excel sur une autre feuille avec l'adresse
    Par zamant dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/10/2022, 17h55
  2. extraction des doublons
    Par lumbroso dans le forum Excel
    Réponses: 6
    Dernier message: 10/02/2015, 18h31
  3. Extraction des commentaires Excel
    Par willyol3 dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 05/12/2007, 09h40
  4. [EXCEL] Mise en évidence des doublons dans une colonne
    Par dacid dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/10/2006, 19h14
  5. Extraction de données sur des fichiers excel
    Par iupgeii dans le forum MFC
    Réponses: 3
    Dernier message: 23/01/2004, 13h53

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