Doublons complexes

Résolu
Lyne450 Messages postés 2 Statut Membre -  
eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   -
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 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  2. PHILOU10120 Messages postés 6463 Date d'inscription   Statut Contributeur Dernière intervention   835
     
    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
  3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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. Raymond PENTIER Messages postés 58213 Date d'inscription   Statut Contributeur Dernière intervention   17 482
       
      doublon ...
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,
      J'ai un petit probleme de mulot.
      0
  4. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Lyne450 Messages postés 2 Statut Membre
     
    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. eriiic Messages postés 24581 Date d'inscription   Statut Contributeur Dernière intervention   7 281
       
      Content que tu l'apprécies, il m'aura couté de temps et des cheveux ;-)
      eric
      0