Récupérer une valeur en fonction de deux critéres

Le
Karina
Bonjour,

Soit un tableau dont le nombre de lignes peut varier.
En colonne B, un code MAGASIN
En D, un code PRODUIT
Et en E un code ARTICLE
Ces 3 champs peuvent être des nombres ou du texte
Et il peut y avoir plusieurs lignes identiques : même codes MAGASIN/ PRODUIT
/ARTICLE

Sur un deuxième onglet, j'ai :
En colonne C, le code MAGASIN
En colonne E, le code PRODUIT
Et en F, une colonne vide qu'il me faut remplir avec le code ARTICLE

J'ai essayé avec Sommeprod mais ça ne marche pas comme je veux.

Et en cadeau BONUX, ce serait super d'avoir un message d'anomalie si pour un
même code MAGASIN/PRODUIT, on a des articles différents.

Etant a court d'idée je fais appel à vous
Merci
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pascal
Le #19928991
Un peu plus de clarté serait la bienvenue si tu veux qu'on t'aide.
Regarde du côté d'Index/Equiv
Un truc du genre

=SI(ESTERREUR(INDEX(Désignation;EQUIV($B18;CodeArticle;0);1));"";(INDEX(Désignation;EQUIV($B18;CodeArticle;0);1)))
Ou B18 est le code articleet le formule en C18
Dans l'exemple on recherche la désignation du produit en fonction du code
saisi
Désignation et CodeArticle sont des zones dynamiques.

Pascal




"Karina" 4a858939$0$1149$
Bonjour,

Soit un tableau dont le nombre de lignes peut varier.
En colonne B, un code MAGASIN
En D, un code PRODUIT
Et en E un code ARTICLE
Ces 3 champs peuvent être des nombres ou du texte
Et il peut y avoir plusieurs lignes identiques : même codes MAGASIN/
PRODUIT /ARTICLE

Sur un deuxième onglet, j'ai :
En colonne C, le code MAGASIN
En colonne E, le code PRODUIT
Et en F, une colonne vide qu'il me faut remplir avec le code ARTICLE

J'ai essayé avec Sommeprod mais ça ne marche pas comme je veux.

Et en cadeau BONUX, ce serait super d'avoir un message d'anomalie si pour
un même code MAGASIN/PRODUIT, on a des articles différents.

Etant a court d'idée je fais appel à vous
Merci



JB
Le #19928981
Bonjour,

http://boisgontierjacques.free.fr/pages_site/sommeprod.htm#ListeCond

http://cjoint.com/?ios2XgzY4B

JB
http://boisgontierjacques.free.fr

On 14 août, 17:56, "Karina"
Bonjour,

Soit un tableau dont le nombre de lignes peut varier.
En colonne B, un code MAGASIN
En D, un code PRODUIT
Et en E un code ARTICLE
Ces 3 champs peuvent être des nombres ou du texte
Et il peut y avoir plusieurs lignes identiques : même codes MAGASIN/ PR ODUIT
/ARTICLE

Sur un deuxième onglet, j'ai :
En colonne C, le code MAGASIN
En colonne E, le code PRODUIT
Et en F, une colonne vide qu'il me faut remplir avec le code ARTICLE

J'ai essayé avec Sommeprod mais ça ne marche pas comme je veux.

Et en cadeau BONUX, ce serait super d'avoir un message d'anomalie si pour un
même code MAGASIN/PRODUIT, on a  des articles différents.

Etant a court d'idée je fais appel à vous
Merci


FFO
Le #19929251
Salut à toi

Feuil1 colonne B/D/E les données source
Feuil2 colonne C/E les données de destination avec colonne F les données à
alimenter

Je te propose ce code :

i = 2
Fin = Sheets("Feuil1").Range("B65535").End(xlUp).Row
On Error Resume Next
Do While i < Fin + 1
If Donnée Like "*" & Sheets("Feuil1").Range("B" & i) &
Sheets("Feuil1").Range("D" & i) & "*" = False Then
ligne = 0
ligne = Sheets("Feuil1").Range("B" & i, "B" &
Fin).Find(What:=Sheets("Feuil1").Range("B" & i),
After:=Sheets("Feuil1").Range("B" & i), LookAt:=xlWhole).Row
If ligne <> 0 Then
If Sheets("Feuil1").Range("D" & ligne) = Sheets("Feuil1").Range("D" & i) And
Sheets("Feuil1").Range("E" & ligne) <> Sheets("Feuil1").Range("E" & i) Then
Différence = Différence & vbLf & Sheets("Feuil1").Range("E" & ligne).Address
& "-" & Sheets("Feuil1").Range("E" & i).Address
End If
lignesuivante = ligne
For j = 1 To Fin
lignesuivante = Sheets("Feuil1").Range("B" & i, "B" &
Fin).FindNext(After:=Sheets("Feuil1").Range("B" & lignesuivante)).Row
If lignesuivante <> ligne Then
If Sheets("Feuil1").Range("D" & lignesuivante) = Sheets("Feuil1").Range("D"
& i) And Sheets("Feuil1").Range("E" & lignesuivante) <>
Sheets("Feuil1").Range("E" & i) Then
Différence = Différence & vbLf & Sheets("Feuil1").Range("E" &
lignesuivante).Address & "-" & Sheets("Feuil1").Range("E" & i).Address
End If
Else
Exit For
End If
Next
End If
Donnée = Donnée & Sheets("Feuil1").Range("B" & i) &
Sheets("Feuil1").Range("D" & i) & "/"
End If
i = i + 1
Loop
If Différence <> "" Then
MsgBox ("les cellules suivantes:" & vbLf & Différence & vbLf & "sont
différentes")
Exit Sub
End If
i = 2
Fin = Sheets("Feuil2").Range("C65535").End(xlUp).Row
Do While i < Fin + 1
ligne = 0
ligne = Sheets("Feuil1").Range("B1", "B" &
Sheets("Feuil1").Range("B65535").End(xlUp).Row).Find(What:=Sheets("Feuil2").Range("C" & i), After:=Sheets("Feuil1").Range("B1"), LookAt:=xlWhole).Row
If ligne <> 0 Then
If Sheets("Feuil1").Range("D" & ligne) = Sheets("Feuil2").Range("E" & i) Then
Sheets("Feuil2").Range("F" & i) = Sheets("Feuil1").Range("E" & ligne)
Else
lignesuivante = ligne
For j = 1 To Sheets("Feuil1").Range("B65535").End(xlUp).Row
lignesuivante = Sheets("Feuil1").Range("B2", "B" &
Sheets("Feuil1").Range("B65535").End(xlUp).Row).FindNext(After:=Sheets("Feuil1").Range("B" & lignesuivante)).Row
If lignesuivante <> ligne Then
If Sheets("Feuil1").Range("D" & lignesuivante) = Sheets("Feuil2").Range("E"
& i) Then
Sheets("Feuil2").Range("F" & i) = Sheets("Feuil1").Range("E" & lignesuivante)
Exit For
End If
Else
Exit For
End If
Next
End If
End If
i = i + 1
Loop

Il vérifie dabord la qualité des données source :
"Et en cadeau BONUX, ce serait super d'avoir un message d'anomalie si pour un
même code MAGASIN/PRODUIT, on a des articles différents.
"

Puis si ces données sont corrects il enrichi en feuil2 la colonne F


Fais des essais et dis moi !!!!!
Mgr.Abile
Le #19929391
Bonsoir,
http://cjoint.com/?iouqwzU0Co
--
News://news.microsoft.com/microsoft.public.fr.excel
Allez en paix
T.Abile
"JB" news:
Bonjour,

http://boisgontierjacques.free.fr/pages_site/sommeprod.htm#ListeCond

http://cjoint.com/?ios2XgzY4B

JB
http://boisgontierjacques.free.fr

On 14 août, 17:56, "Karina"
Bonjour,

Soit un tableau dont le nombre de lignes peut varier.
En colonne B, un code MAGASIN
En D, un code PRODUIT
Et en E un code ARTICLE
Ces 3 champs peuvent être des nombres ou du texte
Et il peut y avoir plusieurs lignes identiques : même codes MAGASIN/
PRODUIT
/ARTICLE

Sur un deuxième onglet, j'ai :
En colonne C, le code MAGASIN
En colonne E, le code PRODUIT
Et en F, une colonne vide qu'il me faut remplir avec le code ARTICLE

J'ai essayé avec Sommeprod mais ça ne marche pas comme je veux.

Et en cadeau BONUX, ce serait super d'avoir un message d'anomalie si pour
un
même code MAGASIN/PRODUIT, on a des articles différents.

Etant a court d'idée je fais appel à vous
Merci


Karina
Le #19929471
Je me débrouille avec Excel mais là c'est du chinois pour moi
Merci quand même



"JB"
Bonjour,

http://boisgontierjacques.free.fr/pages_site/sommeprod.htm#ListeCond

http://cjoint.com/?ios2XgzY4B

JB
http://boisgontierjacques.free.fr

On 14 août, 17:56, "Karina"
Bonjour,

Soit un tableau dont le nombre de lignes peut varier.
En colonne B, un code MAGASIN
En D, un code PRODUIT
Et en E un code ARTICLE
Ces 3 champs peuvent être des nombres ou du texte
Et il peut y avoir plusieurs lignes identiques : même codes MAGASIN/
PRODUIT
/ARTICLE

Sur un deuxième onglet, j'ai :
En colonne C, le code MAGASIN
En colonne E, le code PRODUIT
Et en F, une colonne vide qu'il me faut remplir avec le code ARTICLE

J'ai essayé avec Sommeprod mais ça ne marche pas comme je veux.

Et en cadeau BONUX, ce serait super d'avoir un message d'anomalie si pour
un
même code MAGASIN/PRODUIT, on a des articles différents.

Etant a court d'idée je fais appel à vous
Merci


Karina
Le #19931151
FFO, merci pour ton code mais il me dit "End if sans bloc if" en surlignant
le "End if" juste après Exit Sub.

JB, Pascal
Ca me donne ça :
=INDEX(Feuil1!$E$3:$E$5860;EQUIV(1;(Feuil1!$B$3:$B$5860Ã)*(Feuil1!$D$3:$D$5860ã);0))
Par contre si pour un même code MAGASIN/PRODUIT, on a des articles
différents je voudrais un message d'erreur et là ça ne marche pas : à priori
il raméne le premier code qu'il trouve

Merci à tous


"Karina" 4a858939$0$1149$
Bonjour,

Soit un tableau dont le nombre de lignes peut varier.
En colonne B, un code MAGASIN
En D, un code PRODUIT
Et en E un code ARTICLE
Ces 3 champs peuvent être des nombres ou du texte
Et il peut y avoir plusieurs lignes identiques : même codes MAGASIN/
PRODUIT /ARTICLE

Sur un deuxième onglet, j'ai :
En colonne C, le code MAGASIN
En colonne E, le code PRODUIT
Et en F, une colonne vide qu'il me faut remplir avec le code ARTICLE

J'ai essayé avec Sommeprod mais ça ne marche pas comme je veux.

Et en cadeau BONUX, ce serait super d'avoir un message d'anomalie si pour
un même code MAGASIN/PRODUIT, on a des articles différents.

Etant a court d'idée je fais appel à vous
Merci



Karina
Le #19931301
FFO c'est bon j'avais un retour à la ligne mal placé
C'est parfait !


"Karina" 4a867930$0$10114$
FFO, merci pour ton code mais il me dit "End if sans bloc if" en
surlignant le "End if" juste après Exit Sub.

JB, Pascal
Ca me donne ça :
=INDEX(Feuil1!$E$3:$E$5860;EQUIV(1;(Feuil1!$B$3:$B$5860Ã)*(Feuil1!$D$3:$D$5860ã);0))
Par contre si pour un même code MAGASIN/PRODUIT, on a des articles
différents je voudrais un message d'erreur et là ça ne marche pas : à
priori il raméne le premier code qu'il trouve

Merci à tous


"Karina" 4a858939$0$1149$
Bonjour,

Soit un tableau dont le nombre de lignes peut varier.
En colonne B, un code MAGASIN
En D, un code PRODUIT
Et en E un code ARTICLE
Ces 3 champs peuvent être des nombres ou du texte
Et il peut y avoir plusieurs lignes identiques : même codes MAGASIN/
PRODUIT /ARTICLE

Sur un deuxième onglet, j'ai :
En colonne C, le code MAGASIN
En colonne E, le code PRODUIT
Et en F, une colonne vide qu'il me faut remplir avec le code ARTICLE

J'ai essayé avec Sommeprod mais ça ne marche pas comme je veux.

Et en cadeau BONUX, ce serait super d'avoir un message d'anomalie si pour
un même code MAGASIN/PRODUIT, on a des articles différents.

Etant a court d'idée je fais appel à vous
Merci







Karina
Le #19933141
Salut FFO,
Est-ce que tu peux faire en sorte qu'apparaisse dans la cellule un message
quand il y a des articles différents plutôt qu'un msgbox (comme tu me le
proposais dans ton code ci-dessous) ?


"FFO"
Salut à toi

Feuil1 colonne B/D/E les données source
Feuil2 colonne C/E les données de destination avec colonne F les données à
alimenter


Je te propose ce code :


i = 2
Fin = Sheets("Feuil1").Range("B65535").End(xlUp).Row
On Error Resume Next
Do While i < Fin + 1
If Donnée Like "*" & Sheets("Feuil1").Range("B" & i) &
Sheets("Feuil1").Range("D" & i) & "*" = False Then
ligne = 0
ligne = Sheets("Feuil1").Range("B" & i, "B" &
Fin).Find(What:=Sheets("Feuil1").Range("B" & i),
After:=Sheets("Feuil1").Range("B" & i), LookAt:=xlWhole).Row
If ligne <> 0 Then
If Sheets("Feuil1").Range("D" & ligne) = Sheets("Feuil1").Range("D" & i) And
Sheets("Feuil1").Range("E" & ligne) <> Sheets("Feuil1").Range("E" & i) Then
Différence = Différence & vbLf & Sheets("Feuil1").Range("E" & ligne).Address
& "-" & Sheets("Feuil1").Range("E" & i).Address
End If
lignesuivante = ligne
For j = 1 To Fin
lignesuivante = Sheets("Feuil1").Range("B" & i, "B" &
Fin).FindNext(After:=Sheets("Feuil1").Range("B" & lignesuivante)).Row
If lignesuivante <> ligne Then
If Sheets("Feuil1").Range("D" & lignesuivante) = Sheets("Feuil1").Range("D"
& i) And Sheets("Feuil1").Range("E" & lignesuivante) <>
Sheets("Feuil1").Range("E" & i) Then
Différence = Différence & vbLf & Sheets("Feuil1").Range("E" &
lignesuivante).Address & "-" & Sheets("Feuil1").Range("E" & i).Address
End If
Else
Exit For
End If
Next
End If
Donnée = Donnée & Sheets("Feuil1").Range("B" & i) &
Sheets("Feuil1").Range("D" & i) & "/"
End If
i = i + 1
Loop
If Différence <> "" Then
MsgBox ("les cellules suivantes:" & vbLf & Différence & vbLf & "sont
différentes")
Exit Sub
End If
i = 2
Fin = Sheets("Feuil2").Range("C65535").End(xlUp).Row
Do While i < Fin + 1
ligne = 0
ligne = Sheets("Feuil1").Range("B1", "B" &
Sheets("Feuil1").Range("B65535").End(xlUp).Row).Find(What:=Sheets("Feuil2").Range("C"
& i), After:=Sheets("Feuil1").Range("B1"), LookAt:=xlWhole).Row
If ligne <> 0 Then
If Sheets("Feuil1").Range("D" & ligne) = Sheets("Feuil2").Range("E" & i)
Then
Sheets("Feuil2").Range("F" & i) = Sheets("Feuil1").Range("E" & ligne)
Else
lignesuivante = ligne
For j = 1 To Sheets("Feuil1").Range("B65535").End(xlUp).Row
lignesuivante = Sheets("Feuil1").Range("B2", "B" &
Sheets("Feuil1").Range("B65535").End(xlUp).Row).FindNext(After:=Sheets("Feuil1").Range("B"
& lignesuivante)).Row
If lignesuivante <> ligne Then
If Sheets("Feuil1").Range("D" & lignesuivante) = Sheets("Feuil2").Range("E"
& i) Then
Sheets("Feuil2").Range("F" & i) = Sheets("Feuil1").Range("E" &
lignesuivante)
Exit For
End If
Else
Exit For
End If
Next
End If
End If
i = i + 1
Loop


Il vérifie dabord la qualité des données source :
"Et en cadeau BONUX, ce serait super d'avoir un message d'anomalie si pour
un
même code MAGASIN/PRODUIT, on a des articles différents.
"


Puis si ces données sont corrects il enrichi en feuil2 la colonne F


Fais des essais et dis moi !!!!!
FFO
Le #19934371
Rebonjour à toi

Il faut me préciser le type de message que tu souhaites
Dans ce message il faut mentionner la cellule de référence objet de la
comparaison avec la cellule du message
Pas simple
Merci de m'aiguiller
Karina
Le #19935591
Bonjour FFO
Juste un message genre "articles différents trouvés"
J'ai beaucoup de lignes dans mon tableau mais avec un filtre je
trouverais facilement les différences.


On 15 août, 21:37, FFO
Rebonjour à toi

Il faut me préciser le type de message que tu souhaites
Dans ce message il faut mentionner la cellule de référence objet de l a
comparaison avec la cellule du message
Pas simple
Merci de m'aiguiller


Publicité
Poster une réponse
Anonyme