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

Valeurs ligne et colonne à partir d'adresse cellule

5 réponses
Avatar
Willy Gruner
Bonsoir à toutes et tous

J'ai une plage A1:E10 et une valeur (par exemple 8.5) dans une cellule de
cette plage.
Comment sans vba rechercher cette valeur pour obtenir l'adresse de cette
cellule, la valeur de la colonne A de cette ligne ainsi que la première
valeur de la colonne où cette valeur se situe.
La valeur cherchée ne se situe pas dans la colonne A.
Exemple : je cherche la valeur minimum pour les bananes

A B C D
E
1 Auchan Carrefour Champion
2 Bananes 2.5 1.90 2.00
3 Oranges 1.5 2.05 1.87
4 Pommes 1.05 2.04 2..04

J'aimerai obtenir dans la cellule D2, le nom carrefour.
Il y a un autre problème lorsque plusieurs grandes surfaces pratiquent le
même prix : exemple pour les pommes.
Comment faire apparaitre ces 2 grandes surfaces dans les cellules D4
(Carrefour) et E4 (Champion) ? Le cas maximum d'égalités est 4 pour mon cas.

Merci d'avance pour votre aide

M. Willy Gruner
willy.gruner@wanadoo.fr

5 réponses

Avatar
Vincent.
Il y a un espace qui s'insère au début du résultat. Tu
pourras pallier cet ennui avec un test :
If isnull(NomMarque) then
NomsMarques = Application. _
WorksheetFunction.Index(PlageMarque, 1, i).Value
else
NomsMarques = NomsMarques & " " & Application. _
WorksheetFunction.Index(PlageMarque, 1, i).Value
EndIf
-----Message d'origine-----
Je ne sais pas quoi répondre... Avec Excel et sans VBA,
ça

ne m'a pas l'air faisable. S'il n'y avait pas d'égalité
sur les lignes, la fonction :
=Index(B1:C1;1;equiv(min(Ligne);Ligne)))
où Ligne = Bx:Cx pour la ligne x

Tu peux même déterminer le nombre d'égalité avec :
=nb.si(Ligne;min(Ligne)

Avec VBA, il faudrait créer une fonction :

Function PrixMini(ByVal PlagePrix As Range, ByVal
PlageMarque As Range)
Dim Prix As Double
Prix = Application.WorksheetFunction.Min(PlagePrix)

Dim NomsMarques As String
Dim i As Integer
i = 0
Dim Cel As Range
For Each Cel In PlagePrix.Cells
i = i + 1
If Cel.Value = Prix Then
NomsMarques = NomsMarques & " " & _
Application.WorksheetFunction. _
Index(PlageMarque, 1, i).Value
End If
Next Cel
PrixMini = NomsMarques
End Function

Et ça marche...



Avatar
ChrisV
Bonjour Vincent, bonjour Willy,

Avec Excel et sans VBA, ça ne m'a pas l'air faisable...



Juste en passant... entre 2 apéros ! ;-)
Avec la plage (selon les données de ton exemple) B2:D2 nommée "gdS"
et A3:A5 nommée "pdT"
en F2: Données/Validation/Options/Autoriser: Liste
Source: =pdT

en G2:G4
(à saisir sans les { } et valider par Ctrl+shift+Entrée)
{=TRANSPOSE(INDIRECT("B"&2+EQUIV(F2;pdT)&":D"&2+EQUIV(F2;pdT)))}

en H2:H4
(à saisir sans les { } et valider par Ctrl+shift+Entrée)
{=TRANSPOSE(gdS)}

G2:H4 nommée Zn

en I2:I4
(à saisir sans les { } et valider par Ctrl+shift+Entrée)
{=SI(ESTERR(INDEX(Zn;PETITE.VALEUR(SI(DECALER(Zn;;;;1)=MIN
(INDIRECT("B"&2+EQUIV(F2;pdT)&":D"&2+EQUIV(F2;pdT)));{2;3;4}-1);{1;2;3})
;2));"";INDEX(Zn;PETITE.VALEUR(SI(DECALER(Zn;;;;1)=MIN(INDIRECT
("B"&2+EQUIV(F2;pdT)&":D"&2+EQUIV(F2;pdT)));{2;3;4}-1);{1;2;3});2))}

masquer ensuite les colonnes G:H


@ bientôt

ChrisV



"Vincent." a écrit dans le message de
news: 063101c36003$23803900$
Je ne sais pas quoi répondre... Avec Excel et sans VBA, ça
ne m'a pas l'air faisable. S'il n'y avait pas d'égalité
sur les lignes, la fonction :
=Index(B1:C1;1;equiv(min(Ligne);Ligne)))
où Ligne = Bx:Cx pour la ligne x

Tu peux même déterminer le nombre d'égalité avec :
=nb.si(Ligne;min(Ligne)

Avec VBA, il faudrait créer une fonction :

Function PrixMini(ByVal PlagePrix As Range, ByVal
PlageMarque As Range)
Dim Prix As Double
Prix = Application.WorksheetFunction.Min(PlagePrix)

Dim NomsMarques As String
Dim i As Integer
i = 0
Dim Cel As Range
For Each Cel In PlagePrix.Cells
i = i + 1
If Cel.Value = Prix Then
NomsMarques = NomsMarques & " " & _
Application.WorksheetFunction. _
Index(PlageMarque, 1, i).Value
End If
Next Cel
PrixMini = NomsMarques
End Function

Et ça marche...

-----Message d'origine-----

Bonsoir à toutes et tous

J'ai une plage A1:E10 et une valeur (par exemple 8.5)
dans une cellule de

cette plage.
Comment sans vba rechercher cette valeur pour obtenir
l'adresse de cette

cellule, la valeur de la colonne A de cette ligne ainsi
que la première

valeur de la colonne où cette valeur se situe.
La valeur cherchée ne se situe pas dans la colonne A.
Exemple : je cherche la valeur minimum pour les bananes

A B
C D

E
1 Auchan Carrefour Champion
2 Bananes 2.5 1.90 2.00
3 Oranges 1.5 2.05 1.87
4 Pommes 1.05 2.04 2..04

J'aimerai obtenir dans la cellule D2, le nom carrefour.
Il y a un autre problème lorsque plusieurs grandes
surfaces pratiquent le

même prix : exemple pour les pommes.
Comment faire apparaitre ces 2 grandes surfaces dans les
cellules D4

(Carrefour) et E4 (Champion) ? Le cas maximum d'égalités
est 4 pour mon cas.


Merci d'avance pour votre aide

M. Willy Gruner



.



Avatar
Willy Gruner
Merci Vincent et Chris V pour vos info.
je n'ai pas pu vous répondre rapidement j'avais un pb de serveur

A bientôWilly
Avatar
Philippe.R
C'est comme dans beaucoup de bistrots Willy, surtout par cette chaleur !
Tu es tout excusé ;o))
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
"Willy Gruner" a écrit dans le message de
news:bhd7qk$c5d$
Merci Vincent et Chris V pour vos info.
je n'ai pas pu vous répondre rapidement j'avais un pb de serveur

A bientôWilly




Avatar
ChrisV
No problemo Willy !


ChrisV


"Willy Gruner" a écrit dans le message de news:
bhd7qk$c5d$
Merci Vincent et Chris V pour vos info.
je n'ai pas pu vous répondre rapidement j'avais un pb de serveur

A bientôWilly