Code VBA : Comparaison de partie de textes

Bonjour,

Dans le fichier ci-joint, j’ai deux listes qui seront encore complétées individuellement.

La liste 1 comprend des doublets, triplets, etc. Par exemple Fondation institution supplétive LPP.

La liste 2 comprend quelques unes des entrées de la liste 1 avec parfois des compléments. Par exemple 1) Fondation institution supplétive LPP (ligne 2 : comptes de libre passage) et 2) Fondation institution supplétive LPP (ligne 2 : Agence pour la Suisse romande).

J’aimerais pouvoir trouver qu’elles sont les entrées de la liste 1 qu’on retrouve sur la liste 2 et celles-qui manquent. Même si tout n’est pas possible, un premier tri automatisé serait déjà bien utile.

Pouvez-vous m’aider à réaliser cela ?

Bonnes salutations.

22demo-20100608.zip (18.41 Ko)

Bonsoir,

Soyons clairs !

sur la feuille "Liste 1",

c'est bien la structure réelle, pas d'en-têtes ni de données dans les colonnes B,C etc... ?

1) on supprime les doublons

2) on colore les lignes existantes sur la feuille "Liste 2"

on ne fait rien sur la feuille "Liste 2"

Confirme

Amicalement

Claude

Salut Claude,

Merci pour ta réponse.

La liste 1 comporte des données extraites d'un autre programme. On peut la modifier selon les besoins, mais à la base elle n'a effectivement aucune structure.

Si nécessaire on peut supprimer les doublons, triplons et autre quadruplons.

On pourrait par exemple colorer les lignes existantes sur la feuille 2, mais il y a souvent des rajouts ; donc parfois seule la première partie du texte est identique.

A te relire.

Bonsoir,

parfois seule la première partie du texte est identique.

Alors là, je sais pas faire

désolé !

Tu devrais modifier le titre du sujet, qui n'a rien à voir avec un tri

Claude

Salut Claude,

Merci pour ton aide et pour ton conseil ; j'ai modifié mon titre.

J'espère que ma demande ne soit quand même pas impossible et que quelqu'un puisse m'aider

Bonne soirée.

re,

envoie une feuille avec 3 ou 4 exemples représentatifs colorés en jaune,

je vais quand même essayé quelque chose.

Claude

-- Mer Juin 09, 2010 11:14 am --

Bonjour,

Une approche

Sub Cherche()
Dim Lg%, i%
'Macros par Claude Dubois pour "Yvouille" Excel-Pratique le 9 juin 2010
    Application.ScreenUpdating = False
    Columns(1).Insert
    '--- Supprime doublons ---
    Range("b1:b" & [b65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=Range("o1:o2"), CopyToRange:=Range("a1"), Unique:=True
    Columns(2).Delete
    '--- Colore communs aux 2 listes ---
    Lg = Range("A65536").End(xlUp).Row
    Range("f1") = "=MATCH(LEFT(e1,LEN(e1))&""*"",'Liste 2'!a:a,0)"
        For i = 1 To Lg
            Cells(1, 5) = Cells(i, 1)
            If Not IsError(Cells(1, 6)) Then
                Cells(i, 1).Interior.ColorIndex = 6
                Sheets("Liste 2").Cells(Cells(1, 6), 1).Interior.ColorIndex = 6
            End If
        Next i
    Range("c1") = "=CountA(a:a)"
    Range("e1:f2", "o2").ClearContents
    Columns(1).AutoFit
End Sub

dis quoi

Amicalement

Claude

20yvouille-listes.zip (30.10 Ko)

Salut Claude,

Merci infiniment pour ta proposition. Apparemment on s’approche à grands pas de la solution ; ou plutôt tu as déjà atteint la solution en ce qui concerne mon premier fichier de démonstration.

Cependant j’ai quelques difficultés à appliquer ce code à mon fichier définitif et en plus j’ai remarqué qu’on pourrait en compléter les possibilités.

A la base, j’ai une feuille « Liste 1 » et une feuille « Liste 2 » qui est complètement vide. J’importe manuellement des données depuis un autre programme dans la « Liste 2 ». Cette feuille se présente alors exactement comme dans le fichier ci-joint. Lors de ma première demande, j’avais effacé manuellement la colonne A et colonnes de C à AJ, les données nécessaires se trouvant dans la colonne B (qui devient la colonne A après ces suppressions). Serait-il donc possible que ton code effectue d’abord - en plus - ces mutations ?

Lors de mes essais dans le fichier joint - après avoir effacé manuellement les colonnes inutiles de la liste 2, j’ai essayé de lancer le code en ayant une fois la liste 1 et une fois la liste 2 à l’écran. Mais dans les deux cas, le code ne fonctionne plus normalement : dans le premier cas, toutes les cellules des deux feuilles sont colorées en jaune ; dans le deuxième cas, toutes les cellules de la liste 1 sont colorées en jaune. Peux-tu me dire ce qu’il faut modifier ?

Bonnes salutations.

11demo-20100609.xlsm (60.44 Ko)

re,

Dans la feuille "Liste 2", on vire définitivement toutes les colonnes sauf la B qui devient A

c'est çà ?

Si oui, c'est pas un problème, je regarde dans la soirée

confirme

Claude

Oui, c'est cela !

Bonne fin de journée.

Bonsoir à tous,

En règle générale, évite les noms de feuilles avec espaces et accents (souvent source d'erreurs).

Sub Cherche()
Dim Lg%, i%
'Macros par Claude Dubois pour "Yvouille" Excel-Pratique le 9 juin 2010
    Application.ScreenUpdating = False
    Sheets("Liste 1").Activate
    '--- Contrôle Liste 2 ---
        With Sheets("Liste 2")
            If Application.CountA(.Range("c:c")) < 1 Then Exit Sub
            .Range("a:a,c:aj").Columns.Delete
        End With
    '--- Supprime doublons ---
    Columns(1).Copy
    Columns(1).Insert
    Range("b1:b" & [b65000].End(xlUp).Row).AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=Range("o1:o2"), CopyToRange:=Range("a1"), Unique:=True
    Columns(2).Delete
    '--- Colore communs aux 2 listes ---
    Lg = Range("A65536").End(xlUp).Row
    Range("o1") = "=MATCH(LEFT(n1,LEN(n1))&""*"",'Liste 2'!a:a,0)"
        For i = 1 To Lg
            Cells(1, 14) = Cells(i, 1)
            If Not IsError(Cells(1, 15)) Then
                Cells(i, 1).Interior.ColorIndex = 6
                Sheets("Liste 2").Cells(Cells(1, 15), 1).Interior.ColorIndex = 6
            End If
        Next i
    Range("n1:o2").ClearContents
    Columns(1).AutoFit
End Sub

Amicalement

Claude

Salut Claude,

Je te remercie pour ta nouvelle proposition. Malheureusement ça ne fonctionne plus aussi bien qu’avec mon premier fichier de démonstration.

Je te présente ci-joint mon fichier après avoir lancé la macro :

1) Les doublons de la « Liste 2 » ne sont pas effacés

2) Toutes les institutions qui ont un complément sur la « Liste 1 » n’ont pas été trouvées. Par Exemple Axa Winterthur (ligne 2 : Axa Leben AG) ou alors CIEPP - Caisse Inter-Entreprises de Prévoyance Professionnelle (Bulle), etc. alors que ça fonctionnait avec ta première proposition.

Peux-tu encore voir ce qui ne joue pas ?

A te relire.

Bonjour à tous,

Sur ton dernier fichier, tu as interverti les noms de feuilles !

c'est donc "Liste 2" qu'il faut maintenant dé-doublonner

et comparer avec "liste 1" dont les cellules peuvent avoir des compléments.

On ne fait rien sur "Liste 1", à part le coloriage (pas de dé-doublonnage)

Confirme

à te relire

PS: C'est pas très sérieux ton affaire !

Amicalement

Claude.

Salut Claude,

Je suis désolé de ce qui arrive, mais je ne vois pas vraiment ce que tu veux dire lorsque tu prétends que j'ai interverti mes feuilles. J'ai simplement pris le fichier Yvouille_Listes.xls que tu as placé sur le site avec ton message du 8 juin à 10:06 pm et j'ai lancé la macro ; comme j'ai constaté des problèmes, j'ai posté le résultat obtenu.

Je travaille ainsi : il y a un programme de caisse de pension (CPS) dans lequel se trouvent des modèles d'adresses de caisses. Lorsque j'ai nettoyé l'une ou l'autre adresse dans ce programme, j'exporte le nom de cette caisse dans ma liste Excel afin de savoir quelles institutions ont été corrigées et afin de numéroté des pièces justificatives s'y rapportant. Dans ma liste Excel, je dois parfois compléter le nom de l'institution, mais toujours à la fin de celui-ci.

Dans ce fichier Yvouille_Listes.xls, la Liste 1 est donc ma base que je voudrais ne pas modifier. Je t'avais alors demandé si on pouvait au préalable en faire une copie avant de la travailler. Si non, je pourrais bien entendu faire une copie de tout le fichier avant de lancer la macro.

Afin d'effectuer des contrôles des institutions non encore corrigées, j'exporte depuis le programme CPS les données brutes tel que présentées sur la feuille Liste 2. Dans la colonne B il y a les données qui nous intéressent ; il peut y avoir plusieurs fois le même noms car dans le programme CPS, c'est à différents nivaux que l'on peut différencier deux caisses portant à la base le même nom. Dans cette liste 2, les doublons (de la colonne B qui deviendra la colonne A après suppression des colonnes inutiles) peuvent sans autre être supprimés afin que les lignes restantes puissent d'être comparées avec les entrées de la (copie de la) Liste 1.

Est-ce un peu plus clair ?

A te relire.

Bonjour à tous,

Je suis désolé de ce qui arrive, mais je ne vois pas vraiment ce que tu veux dire lorsque tu prétends que j'ai interverti mes feuilles. J'ai simplement pris le fichier Yvouille_Listes.xls que tu as placé sur le site avec ton message du 8 juin à 10:06 pm et j'ai lancé la macro ; comme j'ai constaté des problèmes, j'ai posté le résultat obtenu.

J'ai pas rêvé !

à l'origine, la feuille avec l'en-tête "Nom" est nommée "Liste 2"

sur le 2ème fichier, la même feuille est nommée "Liste 1"

Dans ce fichier Yvouille_Listes.xls, la Liste 1 est donc ma base que je voudrais ne pas modifier. Je t'avais alors demandé si on pouvait au préalable en faire une copie avant de la travailler. Si non, je pourrais bien entendu faire une copie de tout le fichier avant de lancer la macro.

Il n'a jamais été question de faire une copie, j'ai encore rêvé ?

Quoi qu'il en soit, je me suis compris

Dans "Liste 1" (celle avec l'en-tête "Nom"),

seule la 1ère occurrence trouvée sera colorée.

Amicalement

Claude.

Salut Claude,

Merci pour ces informations complémentaires.

J'avais indiqué qu'il faudrait effectuer une copie de la feuille Liste 1.

Yvouille a écrit :

Dans ce fichier Yvouille_Listes.xls, la Liste 1 est donc ma base que je voudrais ne pas modifier.

Mais ton code effectue en fait une copie de la feuille Liste 2.

Peux-tu encore m'aider et corriger cela ? Autrement le code semble remplir toutes les fonctions voulues.

A te relire.

Non, j'ai assez joué avec ce poste !

Salut

Claude

Merci quand même Claude pour toute ton aide.

Quelqu'un d'autre peut alors m'aider ?

Bonnes salutations.

Rechercher des sujets similaires à "code vba comparaison partie textes"