OVH Cloud OVH Cloud

redemensionner liste déroulante

5 réponses
Avatar
j-pascal
Bonjour,

Afin de redemensionner une liste déroulante,

Je la nomme "Liste" avec "Insertion/Nom/Définir" ...

Dans "Fait référence à", je tape : =DECALER(Liste;0;0;NBVAL(Liste))

Le problème est que si les valeurs de la "Liste" sont des formules (qui
importent les valeurs d'une autre liste), les "" provoquent des "trous" et
donc des erreurs !

Pour contourner l'obstacle, j'ai pensé à remplacer "NBVAL (Liste) par
{=SOMME(SI(ESTNUM(Liste);1;0))},

Je peux toujours créer une cellule dédié à ce résultat et l'inclure dans la
formule "DECALER ... " mais ce n'est certainement par le plus accadémique
;-)

Question : Peut-on insérer une formule matricielle dans une formule "simple"
?

Un grand merci d'avance pour vos lumières "accadémiques" :o)

JP

5 réponses

Avatar
JB
Bonjour,

Solution1:

http://cjoint.com/?hif5vw5276

On veut une liste sans Vide (La liste d'origine contient des formules)
-Sélectionner C2:C8
=INDEX(champ;PETITE.VALEUR(SI(NON(ESTNA(EQUIV(champ;champ;0)));SI((EQUIV( champ;champ;0)=LIGNE(INDIRECT("1:"&LIGNES(champ))))*(champ>0);EQUIV(champ ;champ;0)));LIGNE(INDIRECT("1:"&LIGNES(champ)))))
Valider avec Maj+CTRl+Entrée

En F2:Données/Validation
ÞCALER($C$2;;;NB.SI(C2:C8;"<>#NOMBRE!"))

Solution2:

On veut une liste sans Vide
La liste d'origine contient des formules
-Sélectionner C2:C8
=sansvides(A2:A8)
Valider avec Maj+CTRl+Entrée

En F2:Données/Validation
ÞCALER($C$2;;;NB.SI(C2:C8;"<>0"))

Dans un module:

Function SansVides(champ As Range)
Dim temp(1000, 1)
j = 0
For i = 1 To champ.Count
If Not IsEmpty(champ(i)) And Not champ(i) = 0 And Not champ(i) =
"" Then
temp(j, 0) = champ(i)
j = j + 1
End If
Next i
SansVides = temp
End Function

Cordialement JB

Bonjour,

Afin de redemensionner une liste déroulante,

Je la nomme "Liste" avec "Insertion/Nom/Définir" ...

Dans "Fait référence à", je tape : ÞCALER(Liste;0;0;NBVAL(Lis te))

Le problème est que si les valeurs de la "Liste" sont des formules (qui
importent les valeurs d'une autre liste), les "" provoquent des "trous" et
donc des erreurs !

Pour contourner l'obstacle, j'ai pensé à remplacer "NBVAL (Liste) par
{=SOMME(SI(ESTNUM(Liste);1;0))},

Je peux toujours créer une cellule dédié à ce résultat et l'inc lure dans la
formule "DECALER ... " mais ce n'est certainement par le plus accadémiq ue
;-)

Question : Peut-on insérer une formule matricielle dans une formule "si mple"
?

Un grand merci d'avance pour vos lumières "accadémiques" :o)

JP


Avatar
JB
=INDEX(champ;PETITE.VALEUR(SI(NON(ESTNA(EQUIV(champ;champ;0)));SI((EQUIV( champ;champ;0)=LIGNE(INDIRECT("1:"&LIGNES(champ))))*(champ>0)*(champ<>"") ;EQUIV(champ;champ;0)));LIGNE(INDIRECT("1:"&LIGNES(champ)))))

http://cjoint.com/?higMgqVCnB

JB


Bonjour,

Afin de redemensionner une liste déroulante,

Je la nomme "Liste" avec "Insertion/Nom/Définir" ...

Dans "Fait référence à", je tape : ÞCALER(Liste;0;0;NBVAL(Lis te))

Le problème est que si les valeurs de la "Liste" sont des formules (qui
importent les valeurs d'une autre liste), les "" provoquent des "trous" et
donc des erreurs !

Pour contourner l'obstacle, j'ai pensé à remplacer "NBVAL (Liste) par
{=SOMME(SI(ESTNUM(Liste);1;0))},

Je peux toujours créer une cellule dédié à ce résultat et l'inc lure dans la
formule "DECALER ... " mais ce n'est certainement par le plus accadémiq ue
;-)

Question : Peut-on insérer une formule matricielle dans une formule "si mple"
?

Un grand merci d'avance pour vos lumières "accadémiques" :o)

JP


Avatar
JB
http://cjoint.com/?hisS6dWObC

Liste triée avec formule dans liste initiale
=INDEX(champ;EQUIV(GRANDE.VALEUR((NB.SI(champ;">="&champ)*(champ<>0));L IGNE(INDIRECT("1:"&LIGNES(champ))));
NB.SI(champ;">="&champ)*(champ<>0);0))

En G2: Données/Validation/Liste
ÞCALER($C$2;;;NB.SI($C$2:$C$8;"<>0"))

JB



Bonjour,

Afin de redemensionner une liste déroulante,

Je la nomme "Liste" avec "Insertion/Nom/Définir" ...

Dans "Fait référence à", je tape : ÞCALER(Liste;0;0;NBVAL(Lis te))

Le problème est que si les valeurs de la "Liste" sont des formules (qui
importent les valeurs d'une autre liste), les "" provoquent des "trous" et
donc des erreurs !

Pour contourner l'obstacle, j'ai pensé à remplacer "NBVAL (Liste) par
{=SOMME(SI(ESTNUM(Liste);1;0))},

Je peux toujours créer une cellule dédié à ce résultat et l'inc lure dans la
formule "DECALER ... " mais ce n'est certainement par le plus accadémiq ue
;-)

Question : Peut-on insérer une formule matricielle dans une formule "si mple"
?

Un grand merci d'avance pour vos lumières "accadémiques" :o)

JP


Avatar
j-pascal
Bonjour JB,

Merci pour ce classeur détaillé.

Pour la solution 1 que tu proposes j'ai essayé une formule qui me paraît
plus courte :
{=SOMME(SI(NON(ESTERREUR(CODE(Liste)));1;0))} (dans la cellule A1 par ex)
Puis en F2 Donnée/validation :
ÞCALER(Liste;0;0;A1)

JP

PS : dans mon dernier msg j'avais parlé de "NUM" ce qui limitait la formule
à des nb ;-(

wrote:
Bonjour,

Solution1:

http://cjoint.com/?hif5vw5276

On veut une liste sans Vide (La liste d'origine contient des formules)
-Sélectionner C2:C8
=INDEX(champ;PETITE.VALEUR(SI(NON(ESTNA(EQUIV(champ;champ;0)));SI((EQUIV(champ;champ;0)=LIGNE(INDIRECT("1:"&LIGNES(champ))))*(champ>0);EQUIV(champ;champ;0)));LIGNE(INDIRECT("1:"&LIGNES(champ)))))
Valider avec Maj+CTRl+Entrée

En F2:Données/Validation
ÞCALER($C$2;;;NB.SI(C2:C8;"<>#NOMBRE!"))

Solution2:

On veut une liste sans Vide
La liste d'origine contient des formules
-Sélectionner C2:C8
=sansvides(A2:A8)
Valider avec Maj+CTRl+Entrée

En F2:Données/Validation
ÞCALER($C$2;;;NB.SI(C2:C8;"<>0"))

Dans un module:

Function SansVides(champ As Range)
Dim temp(1000, 1)
j = 0
For i = 1 To champ.Count
If Not IsEmpty(champ(i)) And Not champ(i) = 0 And Not champ(i) > "" Then
temp(j, 0) = champ(i)
j = j + 1
End If
Next i
SansVides = temp
End Function

Cordialement JB

Bonjour,

Afin de redemensionner une liste déroulante,

Je la nomme "Liste" avec "Insertion/Nom/Définir" ...

Dans "Fait référence à", je tape : ÞCALER(Liste;0;0;NBVAL(Liste))

Le problème est que si les valeurs de la "Liste" sont des formules
(qui importent les valeurs d'une autre liste), les "" provoquent des
"trous" et donc des erreurs !

Pour contourner l'obstacle, j'ai pensé à remplacer "NBVAL (Liste) par
{=SOMME(SI(ESTNUM(Liste);1;0))},

Je peux toujours créer une cellule dédié à ce résultat et l'inclure
dans la formule "DECALER ... " mais ce n'est certainement par le
plus accadémique ;-)

Question : Peut-on insérer une formule matricielle dans une formule
"simple" ?

Un grand merci d'avance pour vos lumières "accadémiques" :o)

JP




Avatar
JB
Sans A1:
ÞCALER(Liste;0;0;SOMMEPROD(SI(NON(ESTERREUR(CODE(Liste)));1;0)))

JB



Bonjour JB,

Merci pour ce classeur détaillé.

Pour la solution 1 que tu proposes j'ai essayé une formule qui me para ît
plus courte :
{=SOMME(SI(NON(ESTERREUR(CODE(Liste)));1;0))} (dans la cellule A1 par ex)
Puis en F2 Donnée/validation :
ÞCALER(Liste;0;0;A1)

JP

PS : dans mon dernier msg j'avais parlé de "NUM" ce qui limitait la for mule
à des nb ;-(

wrote:
Bonjour,

Solution1:

http://cjoint.com/?hif5vw5276

On veut une liste sans Vide (La liste d'origine contient des formules)
-Sélectionner C2:C8
=INDEX(champ;PETITE.VALEUR(SI(NON(ESTNA(EQUIV(champ;champ;0)));SI((EQ UIV(champ;champ;0)=LIGNE(INDIRECT("1:"&LIGNES(champ))))*(champ>0);EQUIV(c hamp;champ;0)));LIGNE(INDIRECT("1:"&LIGNES(champ)))))
Valider avec Maj+CTRl+Entrée

En F2:Données/Validation
ÞCALER($C$2;;;NB.SI(C2:C8;"<>#NOMBRE!"))

Solution2:

On veut une liste sans Vide
La liste d'origine contient des formules
-Sélectionner C2:C8
=sansvides(A2:A8)
Valider avec Maj+CTRl+Entrée

En F2:Données/Validation
ÞCALER($C$2;;;NB.SI(C2:C8;"<>0"))

Dans un module:

Function SansVides(champ As Range)
Dim temp(1000, 1)
j = 0
For i = 1 To champ.Count
If Not IsEmpty(champ(i)) And Not champ(i) = 0 And Not champ(i) =
"" Then
temp(j, 0) = champ(i)
j = j + 1
End If
Next i
SansVides = temp
End Function

Cordialement JB

Bonjour,

Afin de redemensionner une liste déroulante,

Je la nomme "Liste" avec "Insertion/Nom/Définir" ...

Dans "Fait référence à", je tape : ÞCALER(Liste;0;0;NBVAL( Liste))

Le problème est que si les valeurs de la "Liste" sont des formules
(qui importent les valeurs d'une autre liste), les "" provoquent des
"trous" et donc des erreurs !

Pour contourner l'obstacle, j'ai pensé à remplacer "NBVAL (Liste) par
{=SOMME(SI(ESTNUM(Liste);1;0))},

Je peux toujours créer une cellule dédié à ce résultat et l' inclure
dans la formule "DECALER ... " mais ce n'est certainement par le
plus accadémique ;-)

Question : Peut-on insérer une formule matricielle dans une formule
"simple" ?

Un grand merci d'avance pour vos lumières "accadémiques" :o)

JP