Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

13 réponses
Avatar
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

10 réponses

1 2
Avatar
Pascal
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" a écrit dans le message de news:
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



Avatar
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" wrote:
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


Avatar
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 !!!!!
Avatar
Mgr.Abile
Bonsoir,
http://cjoint.com/?iouqwzU0Co
--
News://news.microsoft.com/microsoft.public.fr.excel
Allez en paix
T.Abile
"JB" a écrit dans le message de
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" wrote:
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


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



"JB" a écrit dans le message de 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" wrote:
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


Avatar
Karina
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" a écrit dans le message de news:
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



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


"Karina" a écrit dans le message de news:
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" a écrit dans le message de news:
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







Avatar
Karina
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 !!!!!
Avatar
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 la
comparaison avec la cellule du message
Pas simple
Merci de m'aiguiller
Avatar
Karina
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 wrote:
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


1 2