INDEX EQUIV ur zone non contigue

17 réponses
Avatar
magic-dd
bonjour

j'ai un petit tableau avec des zones nomm=E9es (CD,LIVRE,DVD,REVUE)

ces zones font reference par exemple pour CD aux colonnes C,G,K

j'ai donc essay=E9 de faire ma formule qui me permet de savoir qui =E0 le
plus grand nombre d'article

=3DINDEX(NOMS;EQUIV(GRANDE.VALEUR(LIVRE;1);LIVRE;1))

seulement le r=E9sultat me donne un magnifique #N/A

voici le fichier pour mieux comprendre

merci

http://www.cijoint.fr/cjlink.php?file=3Dcj201002/cijQqIJYwZ.xls

10 réponses

1 2
Avatar
JB
Bonjour,

http://cjoint.com/?coshw8y4Pr

JB
http://boisgontierjacques.free.fr/


On 14 fév, 16:02, magic-dd wrote:
bonjour

j'ai un petit tableau avec des zones nommées (CD,LIVRE,DVD,REVUE)

ces zones font reference par exemple pour CD aux colonnes C,G,K

j'ai donc essayé de faire ma formule qui me permet de savoir qui à le
plus grand nombre d'article

=INDEX(NOMS;EQUIV(GRANDE.VALEUR(LIVRE;1);LIVRE;1))

seulement le résultat me donne un magnifique #N/A

voici le fichier pour mieux comprendre

merci

http://www.cijoint.fr/cjlink.php?file=cj201002/cijQqIJYwZ.xls


Avatar
Caetera
"magic-dd" a écrit dans le message de news:

bonjour

http://www.cijoint.fr/cjlink.php?file=cj201002/cijQqIJYwZ.xls

**********************
(pas d'equiv sur les plages discontinues......
dans un module :

Function EQUI_V(plage)
For Each c In [plage]
If c = Application.Max([plage]) Then EQUI_V = c.Row: Exit For
Next
End Function

dans la feuille

=INDEX(NOMS;EQUI_V(LIVRE)-2)

Etc
Avatar
Tatanka
Bonjour magic-dd,

Peut-être une fonction personnalisée.

1) Copier dans un module standard :

Public Function maxi(plage As Range) As String
Dim c As Range
Dim ligne As Long
Application.Volatile
For Each c In plage
If c.Value = Application.Max(plage) Then
ligne = c.Row
Exit For
End If
Next c
maxi = Cells(ligne, 1).Value
End Function

2) Entrer la formule =maxi(LIVRE) dans une cellule libre.

Serge



"magic-dd" a écrit dans le message de news:

bonjour

j'ai un petit tableau avec des zones nommées (CD,LIVRE,DVD,REVUE)

ces zones font reference par exemple pour CD aux colonnes C,G,K

j'ai donc essayé de faire ma formule qui me permet de savoir qui à le
plus grand nombre d'article

=INDEX(NOMS;EQUIV(GRANDE.VALEUR(LIVRE;1);LIVRE;1))

seulement le résultat me donne un magnifique #N/A

voici le fichier pour mieux comprendre

merci

http://www.cijoint.fr/cjlink.php?file=cj201002/cijQqIJYwZ.xls
Avatar
magic-dd
Merci JB

mais pourquoi est on obligé de passer par du code vba

la seule formule index equiv ne suffit pas

j'essaye de comprendre
Avatar
JB
http://cjoint.com/?cos0v8tzdR

=INDEX(NOMS;EQUIV(MAX(LIVRE);DECALER(INDIRECT("b3:b11");;4*(EQUIV(VRAI;
(NB.SI(DECALER(INDIRECT("b3:b11");;{0;4;8});MAX(LIVRE))>0);0)-1));0))
Valider avec Maj+ctl=rl+entrée

JB


On 14 fév, 18:23, magic-dd wrote:
Merci JB

mais pourquoi est on obligé de passer par du code vba

la seule formule index equiv ne suffit pas

j'essaye de comprendre


Avatar
JB
http://boisgontierjacques.free.fr/fichiers/fonctionsperso/jb-trichampmultiz ones.xls

JB

On 14 fév, 18:52, JB wrote:
http://cjoint.com/?cos0v8tzdR

=INDEX(NOMS;EQUIV(MAX(LIVRE);DECALER(INDIRECT("b3:b11");;4*(EQUIV(VRAI;
(NB.SI(DECALER(INDIRECT("b3:b11");;{0;4;8});MAX(LIVRE))>0);0)-1));0))
Valider avec Maj+ctl=rl+entrée

JB

On 14 fév, 18:23, magic-dd wrote:



> Merci JB

> mais pourquoi est on obligé de passer par du code vba

> la seule formule index equiv ne suffit pas

> j'essaye de comprendre- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


Avatar
Tatanka
Et pour prévoir le coup si ton tableau ne commence pas en A1 :

1)
Public Function maxi(plage As Range) As String
Dim c As Range
Dim ligne As Long
Application.Volatile
For Each c In plage
If c.Value = Application.Max(plage) Then
ligne = c.Row
Exit For
End If
Next c
maxi = Cells(ligne, Range("NOMS").Column)
End Function

2)
Dans une cellule libre =maxi(livre)

Serge



"Tatanka" a écrit dans le message de news:
Bonjour magic-dd,

Peut-être une fonction personnalisée.

1) Copier dans un module standard :

Public Function maxi(plage As Range) As String
Dim c As Range
Dim ligne As Long
Application.Volatile
For Each c In plage
If c.Value = Application.Max(plage) Then
ligne = c.Row
Exit For
End If
Next c
maxi = Cells(ligne, 1).Value
End Function

2) Entrer la formule =maxi(LIVRE) dans une cellule libre.

Serge



"magic-dd" a écrit dans le message de news:

bonjour

j'ai un petit tableau avec des zones nommées (CD,LIVRE,DVD,REVUE)

ces zones font reference par exemple pour CD aux colonnes C,G,K

j'ai donc essayé de faire ma formule qui me permet de savoir qui à le
plus grand nombre d'article

=INDEX(NOMS;EQUIV(GRANDE.VALEUR(LIVRE;1);LIVRE;1))

seulement le résultat me donne un magnifique #N/A

voici le fichier pour mieux comprendre

merci

http://www.cijoint.fr/cjlink.php?file=cj201002/cijQqIJYwZ.xls



Avatar
Tatanka
Et pour pouvoir utiliser la formule dans une feuille quelconque :

1)
Public Function maxi(plage As Range) As String
Dim c As Range
Dim ligne As Long
Application.Volatile
For Each c In plage
If c.Value = Application.Max(plage) Then
ligne = c.Row
Exit For
End If
Next c
maxi = Worksheets(plage.Parent.Name).Cells(ligne, Range("NOMS").Column)
End Function

2)
=maxi(livre), =maxi(dvd) ...

Serge




"Tatanka" a écrit dans le message de news: %
Et pour prévoir le coup si ton tableau ne commence pas en A1 :

1)
Public Function maxi(plage As Range) As String
Dim c As Range
Dim ligne As Long
Application.Volatile
For Each c In plage
If c.Value = Application.Max(plage) Then
ligne = c.Row
Exit For
End If
Next c
maxi = Cells(ligne, Range("NOMS").Column)
End Function

2)
Dans une cellule libre =maxi(livre)

Serge



"Tatanka" a écrit dans le message de news:
Bonjour magic-dd,

Peut-être une fonction personnalisée.

1) Copier dans un module standard :

Public Function maxi(plage As Range) As String
Dim c As Range
Dim ligne As Long
Application.Volatile
For Each c In plage
If c.Value = Application.Max(plage) Then
ligne = c.Row
Exit For
End If
Next c
maxi = Cells(ligne, 1).Value
End Function

2) Entrer la formule =maxi(LIVRE) dans une cellule libre.

Serge



"magic-dd" a écrit dans le message de news:

bonjour

j'ai un petit tableau avec des zones nommées (CD,LIVRE,DVD,REVUE)

ces zones font reference par exemple pour CD aux colonnes C,G,K

j'ai donc essayé de faire ma formule qui me permet de savoir qui à le
plus grand nombre d'article

=INDEX(NOMS;EQUIV(GRANDE.VALEUR(LIVRE;1);LIVRE;1))

seulement le résultat me donne un magnifique #N/A

voici le fichier pour mieux comprendre

merci

http://www.cijoint.fr/cjlink.php?file=cj201002/cijQqIJYwZ.xls







Avatar
JB
En utilisant la ligne de titres:

=INDEX(NOMS;MAX((champ=MAX(LIVRE))*LIGNE(champ)*(titre="LIVRE"))-
LIGNE(champ)+1)
Valider avec Maj+ctrl+entrée

champ þuil1!$B$3:$M$11
LIVRE þuil1!$B$3:$B$11;Feuil1!$F$3:$F$11;Feuil1!$J$3:$J$11
NOMS þuil1!$A$3:$A$11
titre þuil1!$B$2:$M$2

http://cjoint.com/?couzmO3SS1

JB

On 14 fév, 18:23, magic-dd wrote:
Merci JB

mais pourquoi est on obligé de passer par du code vba

la seule formule index equiv ne suffit pas

j'essaye de comprendre


Avatar
magic-dd
merci à tous pour cet élan de partage mais une question m'interpelle

si 2 personnes où plus on le meme chiffre dans la meme colonne CD par
exemple

est il possible de faire ressortir les noms correspondants

merci et désolé de cet élément que je n'avais pas évoqué aupara vant
1 2