Comparaisons de colonnes à différentes colonnes

(Re) Bonjour,

Jusqu'à présent dans ma macro, j'effectuais des comparaisons de colonnes en saisissant la lettre de la colonne à comparer et dans ma macro je modifiais la colonne de comparaison (col_compare) du fichier source à la main; tout fonctionnait.

J'essaie depuis plusieurs heures sans succès de comparer à la suite toutes mes colonnes (plus d'une dizaine) a sa colonne de référence dans un autre classeur. J'avais pensé faire un dictionnaire.. Sinon si vous avez des idées !

ex: Comparer simultanément colonnes B, C avec la colonne E du classeur de réferences, col E avec la col Z etc

Voici une partie ducode:

    Set Feuille = ActiveSheet
    Set col_compare = Workbooks("testref").Worksheets("feuil3").Columns("C")

    Colonne = InputBox("Saisir la lettre de la colonne à modifier", "Saisir Colonne")

    Lignedebut = 2

    With Feuille

        Lignefin = .Range(Colonne & Rows.count).End(xlUp).Row

            For Each Cel In .Range(Colonne & Lignedebut & ":" & Colonne & Lignefin)

                 If Application.CountIf(col_compare, Cel) = 0 And Cel <> "" Then

                    Cel.Interior.Color = RGB(174, 0, 0) 
                    count = count + 1
                    Saveadress = Saveadress & vbCrLf & Cel.Address

                 End If

             Next Cel

    End With
Exit Sub

End Sub

Merci !!

Bonjour

Bien sur pas testé car pas de fichier

Sub test()
Dim LesColonnes
Dim I As Integer, LigneDebut As Long, LigneFin As Long, Compteur As Integer
Dim Col_Compare As Range, Cel As Range
Dim SaveAdress As String
Dim Feuille As Worksheet

  Set Feuille = ActiveSheet
  Set Col_Compare = Workbooks("testref").Worksheets("feuil3").Columns("C")
  LesColonnes = Array("B", "C", "Z")
  LigneDebut = 2

  With Feuille
    For I = 0 To UBound(LesColonnes)
      LigneFin = .Range(LesColonnes(I) & Rows.Count).End(xlUp).Row
      For Each Cel In .Range(LesColonnes(I) & LigneDebut & ":" & LesColonnes(I) & LigneFin)
        If Application.CountIf(Col_Compare, Cel) = 0 And Cel <> "" Then
          Cel.Interior.Color = RGB(174, 0, 0)
          Compteur = Compteur + 1
          SaveAdress = SaveAdress & vbCrLf & Cel.Address
        End If
      Next Cel
    Next I
  End With
End Sub

Merci de ta réponse.

Contraint de ne pas diffuser de fichiers sur internet ...

Ça ne réponds pas tout à fait -je me suis mal exprimé désolé

Les colonnes B, C et Z ne sont pas dans le fichiers des colonnes a comparer

ex: B dans Worksheet("ref2") du classeur reference

C dans Worksheet("ref1") du classeur reference

Les colonnes a comparer se trouve dans un classeur x dans une même feuil et par exemple la colonne B et C doit toujours etre comparer QUE a la colonne E du classeur reference

Bonjour

nuage a écrit :

Contraint de ne pas diffuser de fichiers sur internet ...

Personne ne demande les originaux

Tu peux faire des fichiers bidons en respectant la structure des fichiers originaux

Cela sera plus facile à comprendre (surtout pour moi) mais surement une personne à sans doute compris et qu'elle pourra t'aider

Moi pour le moment je n'ai pas de solution

Hop un jeu de données a titre d'exemple

En rouge c'est le résultat finale que je souhaite (fichier colonne a comparer) puisque les données n'apparaissent pas dans le fichier de reference.

Merci beaucoup pour ton aide. Je n'y arrive pas du tout...

10reference.xlsx (10.13 Ko)

Bonjour

Un début

Ce que j'ai compris

Tu veux comparer chaque colonne du fichier "colonne a comparer" avec une colonne du fichier " reference"

C'est bien dans ce sens car tu n'as fourni que des fichiers sans macro ?

Ensuite il faut savoir quoi comparer

Colonne A avec colonne ??? feuille ???????

Colonne B avec colonne ??? feuille ???????

etc ....

Dans ton fichier je vois que Appartement est surligné, or ce mot est présent dans la page Habitation, normal ou erreur ?

Les entêtes des colonnes ont un rapport avec le nom de la feuille où chercher ou avec le nom de la colonne à comparer ?

Il faut impérativement connaitre la relation entre les colonnes à comparer

Oui c'est bien dans ce sens là.

Dans ton fichier je vois que Appartement est surligné, or ce mot est présent dans la page Habitation, normal ou erreur ? => ERREUR

Non les entêtes du fichier a comparer et réference ne sont pas les même.

Dans les "vrais" fichiers je serai quelles colonnes je dois comparer avec laquelle- elles resteront fixes.

Colonne A => feuil ref_metier colonne C

Colonne B => feuil habitation colonne Habitation_reference

Colonne C => feuil ref_metier colonne C

Colonne D=>feuil musique colonne D

Je te remets les deux fichiers actualisés (avec la macro) ne prenant pas en compte cette fonction

Je te remercie pour ton aide c'est super sympa, je dois rendre ça demain et je panique un peu

12reference.xlsx (10.36 Ko)

Bonsoir

Les 2 fichiers dans le même répertoire

Classe. Merci beaucoup pour ton aide !!

Le forum est vraiment top !

Bonjour !

Je reviens avec une nouvelle précision qui me complique la tache depuis plusieurs heures.

Une colonne peut devoir être comparer avec deux colonnes de deux feuilles différentes ; ce n'est pas le cas pour toutes les colonnes

Typiquement dans le fichier colonnecomparer la colonne musique doit être comparer a la fois avec la feuil musique et musique2 du referentiel.

Je remets les deux fichiers prenant en compte cette nouvelle contrainte.

Merci à vous.

12reference-1.xlsx (11.09 Ko)

Bonjour

A vérifier

Au top comme d'habitude. Merci Beaucoup.

Juste quelques questions de compréhension si tu as un moment bien sur -je n'arrive pas à comprendre cette partie du code:

 ReDim TabloCol(0)

    DejaFait = False
      For K = 0 To UBound(TabloCol)
        If TabloCol(K) = LesComparaisons(I) Then DejaFait = True: Exit For
      Next K
      If DejaFait = False Then
        ReDim Preserve TabloCol(Indice)
        TabloCol(Indice) = LesComparaisons(I)
        Indice = Indice + 1
      End If

Est ce bien ça ? : TabloCol est un tableau avec deux colonnes indice et k qui permet de stocker dans la colonne k la lettre de la colonne déjà comparer. Pour ensuite utliser dejafait dans la suite du code. Mais je n'arrive pas a comprendre le cas ou defait=false ..

Et a quoi sert ReDim Preserve TabloCol(Indice)?

Encore merci !

Bonjour

Chaque fois que je vais faire une comparaison, je vais vérifier d'abord si cette colonne n'a pas déjà été 'impliquée' dans une autre comparaison ( avec une autre feuille ou/et avec une autre colonne)

C'est pour cela que je parcours mon tableau (TabloCol) afin de vérifier si cette colonne est déjà inscrite

Si oui je note DejaFait = True

Si non (DejaFait = False) alors je rajoute cette colonne dans le tableau (TabloCol)

TabloCol est un tableau à une seule dimension (1 seule colonne)

Indice indique le numéro (la case - l'élément) dans le tableau qui va recevoir le nom de la colonne

K est juste une variable pour la boucle (aucun rapport avec la colonne K)

ReDim Preserve TabloCol(Indice) permet d'augmenter la taille (nombre d'élément) du tableau sans perdre les données déjà inscrites (regardes l'aide)

Ok ! Merci

Rechercher des sujets similaires à "comparaisons colonnes differentes"