Pb pour comparer 2 bases

Le
Bruno RCSC
Bonjour,

Sous Win XP, Excel 2002.

Grâce à ce forum et à la contribution de JB, j'utilise du code pour extraire
des valeurs d'une base1 non présentes dans une base2 et inversement;
Cela fonctionne mais aujourd'hui, je suis confronté à un nouveau cas de
figure.
Le résultat m'indique des positions de la base2 présente dans la base1 alors
que ce n'est pas vrai.

Je joins un exemple concret car ce n'est pas facile à exposer.

http://cjoint.com/?mpqkNkBFg4

Si quelqu'un peut m'aider, je l'en remercie par avance.

BH
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Carim
Le #5381101
Bonjour,

Pour comparer des listes, perso je n'utilise pas de macro ...

Dans la feuille Base2, dans la cellule F2 , tu peux saisir :

=SI(NB.SI(Base1!$A$2:$A$74,A2)>0,A2,"")

à copier jusqu'à la ligne 114, tu obtiendras les références
véritablement communes...

A +
Bruno RCSC
Le #5381041
Merci pour cette réponse.

Si je pouvais me passer de VBA, je le ferais.
Mais à priori, c'est la seule solution dans la mesure où je veux pouvoir
communiquer à d'autres personnes le résultat à la question suivante :
"Quels sont les enregistrements que nous n'avons pas dans notre base (la
base2) sachant que les champs de la base1 et de la base2 sont différents".
Chaque base comprend entre 12 et 14 champs dont seulement 5 sont communs.

La formule fonctionne mais fait ressortir les enregistrements présents dans
les 2 bases. Je voudrais l'inverse.

Mon objectif serait de pouvoir extraire les non-doublons en prenant en
compte les champs Numéro/CodePostal/Poids ensemble.

BH

---------
Bonjour,

Pour comparer des listes, perso je n'utilise pas de macro ...

Dans la feuille Base2, dans la cellule F2 , tu peux saisir :

=SI(NB.SI(Base1!$A$2:$A$74,A2)>0,A2,"")

à copier jusqu'à la ligne 114, tu obtiendras les références
véritablement communes...

A +
AH60
Le #5380881
Bonsoir

voir ça
http://cjoint.com/?mpw5BhD2CZ
'----------------------------------------------------
Sub CompareBase2()
Dim rngA As Range
Dim rngB As Range
Dim cell As Range
Dim lg As Long, i As Long

Set rngA = Sheets("Base1").Range("A2:" & Sheets("Base1") _
.Cells(Rows.Count, 1).End(xlUp).Address)
Set rngB = Sheets("Base2").Range("A2:" & Sheets("Base2") _
.Cells(Rows.Count, 1).End(xlUp).Address)

lg = 2
i = 1
For Each cell In rngB
If Application.CountIf(rngA, cell.Value) = 0 Then
Sheets("BD2NonBD1").Cells(lg, 1).Resize(1, 12).Value = _
rngB.Cells(i, 1).Resize(1, 12).Value
rngB.Cells(i, 1).Resize(1, 5).Interior.ColorIndex = 36
lg = lg + 1
End If
i = i + 1
Next
End Sub
'------------------------------------------------------------
Sub CompareBase1()
Dim rngA As Range
Dim rngB As Range
Dim cell As Range
Dim lg As Long, i As Long

Set rngA = Sheets("Base1").Range("A2:" & Sheets("Base1") _
.Cells(Rows.Count, 1).End(xlUp).Address)
Set rngB = Sheets("Base2").Range("A2:" & Sheets("Base2") _
.Cells(Rows.Count, 1).End(xlUp).Address)

lg = 2
i = 1
For Each cell In rngA
If Application.CountIf(rngB, cell.Value) = 0 Then
Sheets("BD1NonBD2").Cells(lg, 1).Resize(1, 12).Value = _
rngA.Cells(i, 1).Resize(1, 12).Value
rngA.Cells(i, 1).Resize(1, 5).Interior.ColorIndex = 36
lg = lg + 1
End If
i = i + 1
Next
End Sub

Abed_H






Merci pour cette réponse.

Si je pouvais me passer de VBA, je le ferais.
Mais à priori, c'est la seule solution dans la mesure où je veux pouvoir
communiquer à d'autres personnes le résultat à la question suivante :
"Quels sont les enregistrements que nous n'avons pas dans notre base (la
base2) sachant que les champs de la base1 et de la base2 sont différents".
Chaque base comprend entre 12 et 14 champs dont seulement 5 sont communs.

La formule fonctionne mais fait ressortir les enregistrements présents dans
les 2 bases. Je voudrais l'inverse.

Mon objectif serait de pouvoir extraire les non-doublons en prenant en
compte les champs Numéro/CodePostal/Poids ensemble.

BH

---------
Bonjour,

Pour comparer des listes, perso je n'utilise pas de macro ...

Dans la feuille Base2, dans la cellule F2 , tu peux saisir :

=SI(NB.SI(Base1!$A$2:$A$74,A2)>0,A2,"")

à copier jusqu'à la ligne 114, tu obtiendras les références
véritablement communes...

A +





AH60
Le #5380871
le fichier avec ce lien ne peut être envoyé un autre à été chargé, je ne sais
pas ?

Abed_H




Bonsoir

voir ça
http://cjoint.com/?mpw5BhD2CZ
'----------------------------------------------------
Sub CompareBase2()
Dim rngA As Range
Dim rngB As Range
Dim cell As Range
Dim lg As Long, i As Long

Set rngA = Sheets("Base1").Range("A2:" & Sheets("Base1") _
.Cells(Rows.Count, 1).End(xlUp).Address)
Set rngB = Sheets("Base2").Range("A2:" & Sheets("Base2") _
.Cells(Rows.Count, 1).End(xlUp).Address)

lg = 2
i = 1
For Each cell In rngB
If Application.CountIf(rngA, cell.Value) = 0 Then
Sheets("BD2NonBD1").Cells(lg, 1).Resize(1, 12).Value = _
rngB.Cells(i, 1).Resize(1, 12).Value
rngB.Cells(i, 1).Resize(1, 5).Interior.ColorIndex = 36
lg = lg + 1
End If
i = i + 1
Next
End Sub
'------------------------------------------------------------
Sub CompareBase1()
Dim rngA As Range
Dim rngB As Range
Dim cell As Range
Dim lg As Long, i As Long

Set rngA = Sheets("Base1").Range("A2:" & Sheets("Base1") _
.Cells(Rows.Count, 1).End(xlUp).Address)
Set rngB = Sheets("Base2").Range("A2:" & Sheets("Base2") _
.Cells(Rows.Count, 1).End(xlUp).Address)

lg = 2
i = 1
For Each cell In rngA
If Application.CountIf(rngB, cell.Value) = 0 Then
Sheets("BD1NonBD2").Cells(lg, 1).Resize(1, 12).Value = _
rngA.Cells(i, 1).Resize(1, 12).Value
rngA.Cells(i, 1).Resize(1, 5).Interior.ColorIndex = 36
lg = lg + 1
End If
i = i + 1
Next
End Sub

Abed_H






Merci pour cette réponse.

Si je pouvais me passer de VBA, je le ferais.
Mais à priori, c'est la seule solution dans la mesure où je veux pouvoir
communiquer à d'autres personnes le résultat à la question suivante :
"Quels sont les enregistrements que nous n'avons pas dans notre base (la
base2) sachant que les champs de la base1 et de la base2 sont différents".
Chaque base comprend entre 12 et 14 champs dont seulement 5 sont communs.

La formule fonctionne mais fait ressortir les enregistrements présents dans
les 2 bases. Je voudrais l'inverse.

Mon objectif serait de pouvoir extraire les non-doublons en prenant en
compte les champs Numéro/CodePostal/Poids ensemble.

BH

---------
Bonjour,

Pour comparer des listes, perso je n'utilise pas de macro ...

Dans la feuille Base2, dans la cellule F2 , tu peux saisir :

=SI(NB.SI(Base1!$A$2:$A$74,A2)>0,A2,"")

à copier jusqu'à la ligne 114, tu obtiendras les références
véritablement communes...

A +







Carim
Le #5380801
Bruno,

Tant qu'à faire, j'ai refondu ton fichier avec les formules pour
extraire les lignes Uniques à chaque base ainsi que les communes ...

http://cjoint.com/?mqjso8Mljs

A +
Bruno RCSC
Le #5380521
Bonjour,

Merci Carim, cela va bien me dépanner. Sans VBA, on arrive au résultat
attendu.
La MFC est bien utile.
J'ai juste corrigé les formules de l'onglet UniqueBD2 qui faisaient
référence à BD1 au lieu de BD2 pour le champs code postal/ville/poids.

Pour AH60, je vais prendre le temps de comprendre le code, en revanche, je
ne peux pas ouvrir le fichier joint.
Mais merci quand même.

Bonne journée.

BH.

--
Bruno,

Tant qu'à faire, j'ai refondu ton fichier avec les formules pour
extraire les lignes Uniques à chaque base ainsi que les communes ...

http://cjoint.com/?mqjso8Mljs

A +
Carim
Le #5380431
Merci pour ton retour d'infos ...
Publicité
Poster une réponse
Anonyme