Doublons complexes

Résolu
Bonjour,

Je souhaiterais me débarrasser de doublons dans un tableur. Ce sont des noms d'entreprises dans une seule colonne. Mais, ce n'est pas si simple certaines ne sont pas bien écrit.

Exemple :
L'entreprise "Blabla" peut-être inscrite sous le nom : "Blabla entreprise", "Société Blabla", "Blabla SAS", etc.

En fait j'aimerais un outil du type "rechercher/remplacer" qui me donne les trucs qu'il trouve louche (comme les exemples que j'ai mis ci-dessus) et que ce soit à moi de confirmer s'il doit le supprimer ou non. J'ai beaucoup de noms de société, je ne peux utiliser l'outil "rechercher/remplacer".

Est-ce possible ? (dites-moi que oui pitié)



MERCI D'AVANCE,
Lyne450

5 réponses

  1. f894009 et PHILOU10120,
    Merci beaucoup pour vos réponses rapides.
    Malheureusement je ne peux pas appliquer vos solutions dans mon document : j'ai trop d'entrées pour pouvoir entrer un mot clé. Le macro doit fonctionner seul : je ne peux lui donner aucune info.

    Et c'est ce dernier point qui m'amène à m'exclamer :

    ==== > WA - OU !
    Eric : ton document est un vrai bijoux ! C'est exactement l'outil qu'il me fallait !
    Merci, merci, merci, d'avoir compris mon soucis, si je le pouvais, je t'embrasserais (mais bon...)

    Lyne
    0
    1. Contributeur
      Content que tu l'apprécies, il m'aura couté de temps et des cheveux ;-)
      eric
      0
  2. Contributeur
    Bonjour,

    Une macro qui supprime les doublons exacts (avec demande confirmation) puis dresse une liste de mots clés pour les entreprises.
    Dans une deuxième feuille tu peux lister les mots clés qui ne sont pas considérés comme caractéristiques (entreprise, Société, SA,..) pour ne garder que les mots clés essentiels (ceux que tu n'as pas listé comme Blabla)

    Ces mots clés sont triés et inscrits en colonne B si au moins 2 entreprises ont ces mots clés.
    Un double-clic sur les mots clés supprime la ligne.

    fichier exemple : https://www.cjoint.com/?BJlureJtjaA

    eric
    0
    1. Bonjour,

      un exemple de code.

      Code a copier dans un module VBA:

      Ouvrir VBA: touches Alt+F11

      click droit sur microsoft..........
      insersion module

      double click gauche sur Module1

      click droit sur fenetre a droite

      Copier le code

      Sub Cmd_Detec_Doublon_Click()
        Dim T_ColA, NbLig, LDep, Defil, retval
        
        Do While -1
          With Sheets("feuil1")
            'pour la dernière ligne de la colonne A
            derlig = Range("A" & Rows.Count).End(xlUp).Row
            'Mise en memoire pour recheche plus rapide
            Set T_ColA = .Range("A1:A" & derlig)
            Choix = "2012"
            Choix = InputBox("Saisie Entreprise: ", "Suppression Doublons")
            If Choix <> "" And Choix <> "2012" Then
              'Recheche du nombre de lignes consernees
              NbLig = Application.CountIf(T_ColA, "*" & Choix & "*")
              'Test pour suite
              If NbLig > 0 Then
                LDep = 1
                For Defil = 1 To NbLig
                  'Recherche de la position des nom pour question: supprime O/N
                  LDep = .Columns("A").Find(Choix, .Cells(LDep, "A"), , xlPart).Row
                  'Choix: supprime O/N
                  retval = MsgBox("Suppression Doublon" & vbLf & .Range("A" & LDep), vbYesNo)
                  If retval = vbYes Then
                    'Suppression cellule
                    .Range("A" & LDep).Delete Shift:=xlUp
                    LDep = LDep - 1
                  Else
                    'passe
                  End If
                Next Defil
              Else
                MsgBox "Pas trouvé!!!!!", vbOKOnly
              End If
            Else
              'sortie
              MsgBox "Ah!Que coucou!!!!!", vbOKOnly
              Exit Sub
            End If
          End With
        Loop
      End Sub
      


      pour lancer:
      EXCEL2007
      menu, developpeur, macro, Cmd....

      EXCEL2003
      menu, outils, macro, macro, Cmd......

      Bonne suite
      0
      1. Contributeur
        doublon ...
        0
      2. Bonjour,
        J'ai un petit probleme de mulot.
        0
    2. Contributeur
      Bonjour

      Pouvez vous trier votre liste d'entreprises
      pour mettre toutes les entreprises commencent par "société" ensemble et mettre cette formule dans une colonne adjacente
      =STXT(A3;CHERCHE(" ";A3;1)+1;NBCAR(A3)-CHERCHE(" ";A3;1)+1)
      cela vous donnera "Blabla" si la cellule contient "sociéte Blabla"
      Pour toutes les autres qui commence par Blabla mettre cette formule
      =STXT(A4;1;CHERCHE(" ";A4;1))
      et vous obtiendrez "Blabla" le nom de la société a une condition que le nom soit séparé du reste par un espace et qu'il n'y ai pas de nom composé.
      0
      1. Bonjour,

        un exemple de code a mettre dans un module VBA:

        ouverture VBA: touche Alt+F11

        fenetre en haut a gauche cick droit sur microsoft........
        insersion------>module
        double click gauche sur module1

        copier le code dans la partie droite de la fenetre

        Sub Cmd_Detec_Doublon_Click()
          Dim T_ColA, NbLig, LDep, Defil, retval
          
          Do While -1
            With Sheets("feuil1")
              'pour la dernière ligne de la colonne A
              derlig = Range("A" & Rows.Count).End(xlUp).Row
              'Mise en memoire pour recheche plus rapide
              Set T_ColA = .Range("A1:A" & derlig)
              Choix = "2012"
              Choix = InputBox("Saisie Entreprise: ", "Suppression Doublons")
              If Choix <> "" And Choix <> "2012" Then
                'Recheche du nombre de lignes consernees
                NbLig = Application.CountIf(T_ColA, "*" & Choix & "*")
                'Test pour suite
                If NbLig > 0 Then
                  LDep = 1
                  For Defil = 1 To NbLig
                    'Recherche de la position des nom pour question: supprime O/N
                    LDep = .Columns("A").Find(Choix, .Cells(LDep, "A"), , xlPart).Row
                    'Choix: supprime O/N
                    retval = MsgBox("Suppression Doublon" & vbLf & .Range("A" & LDep), vbYesNo)
                    If retval = vbYes Then
                      'Suppression cellule
                      .Range("A" & LDep).Delete Shift:=xlUp
                      LDep = LDep - 1
                    Else
                      'passe
                    End If
                  Next Defil
                Else
                  MsgBox "Pas trouvé!!!!!", vbOKOnly
                End If
              Else
                'sortie
                MsgBox "Ah!Que coucou!!!!!", vbOKOnly
                Exit Sub
              End If
            End With
          Loop
        End Sub
        


        pour lancer:
        EXCEL2007
        menu--->developpeur---->macro---->Cmd....

        EXCEL2003:
        menu---->Outils--->macro--->macro----->Cmd.......

        Bonne suite
        0