Varibiliser les colonnes à comparer entre deux tables

mouna

XLDnaute Nouveau
Bonjour,

Etant débutante en VBA je cherche à créer une Macro qui me compare les données figurants dans deux tables différentes : "Annuaire" et "erreur". J'ai réussis à calculer le nombre de fois ou la réponse est bonne à variabiliser le le nombre de lignes comparées. Mon souci maintenant et de variabiliser les colonnes comparées.

En effet aujourd'hui fichier test contient deux colonnes mais le vrai fichier en contient plusieurs et la comparaison doit se faire même si mon tableau n'est pas dans la colonne B et C. L'ordre des colonnes reste toujours le même.

Pouvez vous m'aider à résoudre ce problème cela fait un petit moment que je cherche mais rien.

La macro est la "comparer5"


Merci d'avance pour votre aide
 

Pièces jointes

  • Test Macro.xlsm
    21.4 KB · Affichages: 24
  • Test Macro.xlsm
    21.4 KB · Affichages: 28
  • Test Macro.xlsm
    21.4 KB · Affichages: 29

Modeste

XLDnaute Barbatruc
Re : Varibiliser les colonnes à comparer entre deux tables

Bonjour mouna et bienvenue à toi,

Je ne suis pas certain de comprendre ta demande :confused:
Tu veux comparer les colonnes Nom et Prénom de tes 2 feuilles et compter combien de fois les personnes reprises dans la feuille "annuaire" apparaissent dans la feuille "erreur"??
Si c'est bien de cela qu'il s'agit, une formule permettrait d'obtenir le même résultat ... une macro est-elle encore utile, dès lors?

Quand tu dis que les colonnes ne seront pas toujours au même endroit ... elles auront au moins le même nom, j'imagine? Seront-elles toujours en ligne 4?
 

mouna

XLDnaute Nouveau
Re : Varibiliser les colonnes à comparer entre deux tables

Bonjour,

Tout d'abord merci pour ta réponse. Il faut absolument que je le fasse en VBA ...

Donc pour répondre à tes questions: Oui les colonnes gardent le même nom et elles seront toujours en ligne 4. Pour le calcul de nombre de bonne réponses ( marqués vrai dans ma macro) c'est bon de monté j'arrive à le faire. Maintenant si par exemple les colonnes prénom, prénom de ma table erreur changent de place ma macro ne marche plus. Donc il faut que je puisse comparer peu importe l'emplacement des tableau.

J'espere être assez claire.

Je te remercie pour ton aide
 

Modeste

XLDnaute Barbatruc
Re : Varibiliser les colonnes à comparer entre deux tables

Re bonjour,

Cette instruction
Code:
colNom = Application.Match("Nom", Sheets("erreur").[4:4], 0)
affectera à la variable "colNom", le n° de colonne ou le texte "Nom" aura été trouvé en ligne 4 de la feuille erreur ... à condition que ce texte précis existe! Or, dans la feuille "erreur", en B4, une espace "traîne" derrière "Nom".
Si Nom figurera toujours sans espace, tu peux conserver l'instruction telle quelle. S'il risque d'y avoir des différences de temps en temps, tu peux ajouter, juste après
Code:
If IsError(colNom) Then MsgBox "pas trouvé!": Exit Sub

Avec ça dis-nous si tu vois comment poursuivre ou si tu as besoin d'un coup de main?
Dis-nous aussi si tu es intéressée de connaître des façons différentes d'écrire ton code (tu n'utilises pas tes variables comp1 et comp2 que tu as pourtant initialisées!?)
Enfin, dans tes 2 feuilles, le volume de données sera-t-il semblable à ce que tu as montré ici ou risque-t-il d'y avoir un volume beaucoup plus conséquent?
 

mouna

XLDnaute Nouveau
Re : Varibiliser les colonnes à comparer entre deux tables

J'ai un petite idée mais je ne sais pas a quelle point est elle pertinente. Est ce que je peux appliquer une recherchev dans mon tableau ? Et comment le faire surtout en VBA ?

Merci.
 

mouna

XLDnaute Nouveau
Re : Varibiliser les colonnes à comparer entre deux tables

Bonjour,

Je te remercie beaucoup pour ton aide. Je vais tester ce que tu m'as envoyé te voir ce que cela donne.

Pour répondre à tes questions. Je suis tout à fait ouverte à d'autres propositions. Le volume des données va changer. Je souhaite en fait utiliser une fonction qui jouera le role de la recherche V et à laquelle je ferai appel plus tard dans ma macro pour faire la comparaison. Je ne sais toujours pas comment le faire. Si tu pouvais m'aider sur ce point ou me proposer une autre maniére de le faire je suis preneuse!

Merci.
 

mouna

XLDnaute Nouveau
Re : Varibiliser les colonnes à comparer entre deux tables

En fait mon idée est de juste remplacer la partie de mon code ou j'indique qu'il faut comparer telle ligne table annuaire et telle ligne table erreur, par une recherche V et le reste de la macro ne bougera pas .

Ce n'est pas faisable ?
 

Modeste

XLDnaute Barbatruc
Re : Varibiliser les colonnes à comparer entre deux tables

mouna à dit:
Ce n'est pas faisable ?
Désolé, mais je ne comprends pas ce que tu veux faire :(

Si ton objectif est (comme je croyais l'avoir compris) de déterminer le nombre de fois où les paires nom/prénom de la feuille annuaire sont présents dans la feuille erreur essaie ce qui suit:
- ouvre la pièce jointe
- active la feuille annuaire, puis enfonce Ctrl+Shift et appuie sur j

Je dois m'absenter, mais vois toujours si le résultat est ce que tu voulais. Si pas, il faudra prendre le temps d'expliquer ... à moins que quelqu'un d'autre n'aie mieux compris que moi!?

À plus tard,
 

Pièces jointes

  • comparer deux tables (mouna).xlsm
    23.8 KB · Affichages: 28

mouna

XLDnaute Nouveau
Re : Varibiliser les colonnes à comparer entre deux tables

Bon je m'explique.

Le souci avec ma macro ( et la tienne aussi) c'est que si je change l'emplacement du tableau de la table "erreur" elle ne marche plus..

Je veux que ma macro marche ( et fasse donc les calculs du nombre de fois ou les noms et prénoms sont corrects) peu importe l'emplacement des colonnes. Même si je les déplace en E et F ma macro devrait marcher.

Mais je ne sais pas du tout commet le faire.

Merci quand même du temps consacré

A+
 

Modeste

XLDnaute Barbatruc
Re : Varibiliser les colonnes à comparer entre deux tables

Il n'y a qu'une petite modif à faire dans le code proposé (j'avais perdu de vue le changement d'emplacement des colonnes, préoccupé que j'étais d'essayer de comprendre tes autres messages)

Essaie de modifier le code comme suit (le seul changement est à la ligne 5)
VB:
Sub compterOccurrences()
Set liste = CreateObject("scripting.dictionary")
With Sheets("erreur")
    colNom = Application.Match("Nom", .[4:4], 0)
    For lig = 5 To .Cells(.Rows.Count, colNom).End(xlUp).Row
        liste(.Cells(lig, colNom).Value & "#" & .Cells(lig, colNom + 1).Value) = liste(.Cells(lig, colNom).Value & "#" & .Cells(lig, colNom + 1).Value) + 1
    Next lig
    .[J1].Resize(liste.Count, 1) = Application.Transpose(liste.items)
End With
With Sheets("annuaire")
    For lig = 5 To .[B50000].End(xlUp).Row
        .Cells(lig, 4) = liste(.Cells(lig, 2) & "#" & .Cells(lig, 3))
    Next lig
End With
End Sub
 

mouna

XLDnaute Nouveau
Re : Varibiliser les colonnes à comparer entre deux tables

J'ai une petite question (Je sais j'en demande un peu trop :/)

Je souhaite transformer ma macro en fonction à laquelle je ferai appel dans mon excel pour me faire la comparaison( en me basant sur ma macro compare5).

Est ce que tu peux m'aider sur ce point stp ?

Merci d'avance :)
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 947
Membres
101 849
dernier inscrit
florentMIG