comparaison entre deux tableaux ( Résolu)

SALEM63

XLDnaute Nouveau
bonjour,

J ai deux tableaux qui ont en commun une colonne ayant les mêmes informations à savoir le N° identifiant client.

Dans le tableau A , pour chaque clients j ai des données sur des montants concernant des achats ( fact, tarif et credit ). Chaque achat est répertorié seul; Un client peut avoir fait plusieurs achats . Tous les clients sont répertoriés sur le tableau A.

Dans le tableau B, j ai des Id clients ayant commandés par le net.

Je souhaite avoir une colonne dans le tableau B qui me renseigne si le client a fait des achats au magasin. Une fonction qui cherche l'ID du tableau B, dans le tableau A et marque par exemple un texte vrai ou faux ou colorie les id B excitant dans le A.

J espère être clair

J ai utilisé la fonction RechercheV dans la colonne J ou elle me met une valeur si l iD est trouvé dans le tableau A. Comme ça on toute colonne une valeur me confirme que l ID est trouvé mais je suis étonné que seuls deux valeurs sont retournés.

Y a t il une autre méthode plus sure. Merci d'avance
 

Pièces jointes

  • TABLEAUX A COMPARER v0.xls
    30.5 KB · Affichages: 95
Dernière édition:

flyonets44

XLDnaute Occasionnel
Re : comparaison entre deux tableaux

bonsoir
sans macro, essaies ce fichier avec l'onglet nommé cinq
Cordialement
flyonets
 

Pièces jointes

  • comparer_listes.xls
    94.5 KB · Affichages: 88
  • comparer_listes.xls
    94.5 KB · Affichages: 93
  • comparer_listes.xls
    94.5 KB · Affichages: 101

laurent950

XLDnaute Barbatruc
Re : comparaison entre deux tableaux

Bonjour,

J'ai fais une petite macro, que je peux finaliser.

Sub test()

fina = Range("a65536").End(xlUp).Row
finb = Range("G65536").End(xlUp).Row

For Each C In Range(Cells(4, 7), Cells(finb, 7))
For K = 16 To 16 'fina
If Cells(K + 3, 1) = C Then
C.Offset(0, -1).Value = C 'Remise du numéro en face de celuis repérer dans la liste si vrais
End If
Next K
Next C

End Sub

Cette macro fonctionne normalement seulement il y a des nombre et des nombre pris comme du texte (est il y a un souci dans la recherche)

Comment c'est donner ont était extraite ! (Faite un tris sur les donné de l'id du tableau A et vous aller voir qu'il y a l'obtion trier séparément les nombres et les nombre traiter comme du texte)

en fonction de votre réponse je finaliserais cette macro
 

SALEM63

XLDnaute Nouveau
Re : comparaison entre deux tableaux

Merci beaucoup pour vos réponses.

J ai trouvé une méthode simple que je vous propose.

J ai utilisé la fonction NB.SI dans une colonne pour me donner le nombre de fois où une cellule se répète dans mon tableau, dans un autre colonne j ai appliqué la fonction SI pour marqué "client qd le nombre trouvé est supérieur à 0. enfin j ai combiné les deux dans une autre colonne .

A première vue, ça fonctionne.
 

Pièces jointes

  • TABLEAUX A COMPARER.xls
    36 KB · Affichages: 63
Dernière édition:

laurent950

XLDnaute Barbatruc
Re : comparaison entre deux tableaux

Bonjour,

J’ai une petite remarque, vous travailler en base de données est cela dois être en tous point identique sur une comparaison exemple :

Tableaux 1 = id1 et Tableau 2 = ID1

J’ai donc avec la macro tous passé en Majuscule :

Tableaux 1 = ID1 et Tableau 2 = ID1

C’est impératif pour des points de comparaison identique.

La macro que j’ai faite fonctionne très bien mais elle est longue.

Je pense qu’il faudrait la travailler en variable Tableau, mais je ne maitrise pas encore suffisamment, mais celle-ci fonctionne. L’avantage c’est qu’avec les macros VBA ont est illimité sauf par sont imagination.

Dit moi si cela fonctionne chez vous

Au plaisir de vous lire est aussi vous aider dans votre projet si je peux.

Laurent

Ps : Votre fonction Fonctionne bien


Le code :


Sub RepérageIDClient()

fina = Range("a65536").End(xlUp).Row
finb = Range("G65536").End(xlUp).Row

' Nettoyage de la zone
Range(Cells(4, 15), Cells(finb, 17)).ClearContents

' Remetre en Minuscule
For Each c In Range(Cells(4, 7), Cells(finb, 7))
c.Value = UCase(c)
Next c

For Each c In Range(Cells(4, 1), Cells(fina, 1))
c.Value = UCase(c)
Next c

' Traitement des données
For Each c In Range(Cells(4, 7), Cells(finb, 7))
For K = 4 To fina
If Cells(K, 1) = c Then
Compteur = Compteur + 1
End If
Next K
'c.Offset(0, 10).Value = c ' Ref ID
c.Offset(0, 8).Value = Compteur ' Nombre de Ref ID identiques

' Test si = 0 (Inconu) si > 0 (Client)
If Compteur = Empty Then
c.Offset(0, 9).Value = "Inconnu"
Else
c.Offset(0, 9).Value = "Client"
End If

Compteur = 0 ' Remise a 0 du compteur
Next c

End Sub
 

Pièces jointes

  • TABLEAUX_COMPARER_Correction.xls
    57 KB · Affichages: 61

Discussions similaires

Réponses
2
Affichages
396