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.
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
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 +
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...
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
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 +
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...
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 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 +
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...
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
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,
Tant qu'à faire, j'ai refondu ton fichier avec les formules pour
extraire les lignes Uniques à chaque base ainsi que les communes ...
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
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 +
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 ...
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 ...