Comparer deux colonnes

1

Bonjour,
Pardon si la question était déjà posée, je demande votre indulgence s'il vous plaît.

En fait, je cherche à comparer deux colonnes contenant des noms d'application (le nom peut être composé de plusieurs mots séparés d'espaces). Exemple : "Calcul Aca Lou".

J'ai besoin de faire la comparaison et mettre les applications en commun (ayant les mêmes noms) dans une nouvelle colonne et le différentiel dans une autre colonne. Différentiel = les applications de la A ne se trouvant pas dans la colonne B et les applications se trouvant dans la colonne B et ne se trouvant pas dans la colonne A. Exemple :

EBRID-3.1.0                          EXOCET-4,0,0

INFODOSI                               MANON

MICADO 5                              AGLAEE ESTIM

COUT                                     INFODOSI

Suis-je claire ?

Merci par avance de votre aide

    Posté le 11 octobre 2017, 16:34
    par Layla
    Répondre
    0

    Bonjour,

    Non  ce n'est pas très clair

    Tu présentes un exemple à 2 colonnes avec des noms complètement différents.

    Qu'est ce que tu attends ??

    Envoies nous ton fichier Excel pour que nous puissions mieux t'aider

    Si tu ne sais pas comment faire va sur le site http://www.cjoint.com/

    Tu charges ton fichier ; tu crées le lien le copies et le colles dans le forum.

    A bientôt

    Chris

    CHRIS Posté le 11 octobre 2017, 18:33
    par CHRIS
    1

    Bonjour Layla,

    Je te propose ce fichier Excel 2007 :

    https://mon-partage.fr/f/LMLSRhPG/

    Ctrl e => travail effectué

    Alt F11 pour voir le code VBA, puis revenir sur Excel

    Si besoin, tu peux me demander une adaptation.
    Merci de me dire si ça te convient.

    Cordialement

    rhodo Posté le 12 octobre 2017, 04:30
    par rhodo
    • Le fichier n'est plus disponible, mais j'ai mis dans mon message du 11 novembre à 01:18 des indications sur les données de la feuille (contenu et emplacement), ainsi que le code VBA complet : il suffit d'en faire un copier / coller (dans Module1 par exemple). La seule chose qui manquera sera le raccourci clavier Ctrl e ; c'est facile à remettre via Alt F8 (➯ fenêtre « Macro ») : sélectionner la macro Essai, bouton « Options... », mettre la lettre "e" (sans les guillemets)  dans la petite case, et clic sur le bouton OK. Cordialement. – rhodo 11 novembre 2017, 08:44
    1

    Bonjour Layla, bonjour le forum,

    Comme mon fichier mis sur mon-partage.fr n'est plus disponible,
    plutôt que de l'y remettre pour une période limitée, j'ai décidé
    de le mettre en partage ici.

    =================================================================

    Voici d'abord comment se présentent les données sur la feuille :

                  A                         B                             C                  D                       E
    1     Colonne 1            Colonne 2                                  Les mêmes        Différentiel
    2     EBRID-3.1.0        EXOCET-4,0,0
    3     INFODOSI           MANON
    4     MICADO 5           AGLAEE ESTIM
    5     COUT                  INFODOSI

    La colonne C est vide (c'est juste pour aérer la présentation).

    =================================================================

    Voici maintenant mon code VBA :

    ------------------------------------------------------------------------------------------------------------------

    Option Explicit

    Dim lig3 As Long, lig4 As Long

    Sub DoComp(job As Byte)
      Application.ScreenUpdating = False
      Dim chn As String, flag As Boolean
      Dim colA As Byte, colB As Byte
      Dim dligA As Long, dligB As Long
      Dim ligA As Long, ligB As Long
      If job = 1 Then
        colA = 1: colB = 2
      Else
        colA = 2: colB = 1
      End If
      dligA = Cells(Rows.Count, colA).End(xlUp).Row
      dligB = Cells(Rows.Count, colB).End(xlUp).Row
      For ligA = 2 To dligA
        chn = Cells(ligA, colA) ' appli de la colonne A
        If chn <> "" Then
          flag = True ' on suppose non trouvé en colonne B
          For ligB = 2 To dligB
            If chn = Cells(ligB, colB) Then
              If job = 1 Then
                Cells(lig3, 4) = chn: lig3 = lig3 + 1
              End If
              flag = False: Exit For ' on a trouvé
            End If
          Next ligB
          If flag Then ' cas non trouvé
            Cells(lig4, 5) = chn: lig4 = lig4 + 1
          End If
        End If
      Next ligA
    End Sub

    Sub Essai()
      lig3 = 2: lig4 = 2: DoComp 1: DoComp 2
    End Sub

    ------------------------------------------------------------------------------------------------------------------

    Notez bien que la sub DoComp() est appelée 2 fois par la sub Essai(), mais
    avec 1 ou 2 en paramètre (ce qui décidera du sens des comparaisons).

    ------------------------------------------------------------------------------------------------------------------

    Si vous avez bien saisi le code VBA correctement, les résultats devront être
    (sans aucun doublon) :

    a) Colonne D « Les mêmes » : INFODOSI uniquement

    b) Colonne E « Différentiel » : tous les autres :
         EBRID-3.1.0
         MICADO 5
         COUT
         EXOCET-4,0,0
         MANON
         AGLAEE ESTIM

    =================================================================

    Je n'ai pas eu de réponse du demandeur Layla ; si elle repasse par ici,
    j'espère que mon code VBA pourra lui servir ; ou à tous ceux qui sont
    intéressés par ce type de problème.

    Cordialement, rhodo

    Merci à celui qui a noté +1 mon message précédent du 12 octobre ;
    c'est d'ailleurs ce qui m'a encouragé à écrire ce nouvel article.  ;)

    rhodo Posté le 11 novembre 2017, 01:18
    par rhodo

    Si vous n'êtes pas inscrit sur le site, vous pouvez poster librement (en tant qu'invité).
    Pour cela, indiquez un pseudonyme (nom d'utilisateur) et une adresse email :