Décalage avec INDEX & EQUIV et la fonction "" ( vide )

Résolu/Fermé
KingKong - Modifié le 20 sept. 2021 à 18:28
 KingKong - 24 sept. 2021 à 20:25
Bonsoir à tous, j'en profite d'être içi suite à mon post précédent pour une nouvelle petite question car je suis bloquer depuis un petit temps dessus malgré avoir tenté différentes formule.

J'ai une colonne qui s'étend de AGN891:AGN1890 et dans ces cellules j'ai des formules du type =SI(AGL891="D";AGL891;"") les résultat renvoie des valeurs sous forme de nombres mais certaines cellules sont vide.

Mon but étant dans la colonne AGU891:AGU891 de regrouper tout les nombres dans l'ordre identique à la colonne AGN891:AGN891 mais sans les cellules vides pour obtenir un résultat comme suivant :

Colonne AGN891:AGN891

1
2

4

7
8
9

3

Colonne AGU891:AGU891

1
2
4
7
8
9
3

Ce sont en fait des groupe de 6 colonnes, donc AGN, AGO, AGP, AGQ, AGR, AGS mais je suis pas sur pouvoir faire ca sur plusieurs colonnes ou individuellement car je ne sais pas si la fonction matricielle le permet.

Si vous pouviez m'éclairez sur ce point ce serait sympa. En attendant j'ai fait ca de manière individuelle pour chaque colonne mais si c'est possible de faire ca en groupe ca me sauverai du temps.

Donc pour ce faire j'ai créer une plage avec le nom D_RANG_1 et j'utilise cette formule ci-dessous sous forme matricielle

=INDEX(D_RANG_1;PETITE.VALEUR(SI(ESTNA(EQUIV(D_RANG_1;D_RANG_1;0));"";EQUIV(D_RANG_1;D_RANG_1;0));LIGNE(INDIRECT("1:"&LIGNES(D_RANG_1)))))

Le problème est que lorsque il y a des cellules vide dans la colonne AGN la colonne AGU à un tas de case vides entre les valeurs et celles-ci ne corresponde pas du tout à l'ordre de la colonne AGN.

Après quelque test j'ai finalement remarquer que c'est la fonction ;"" ( vide ) des formule qui génère le problème, est lorsque il n'y a aucune cellules vide dans la colonne AGN la colonne AGU fonctionne parfaitement.

Pourquoi la fonction ;"" crée autant de problèmes puisque la formule INDEX plus haut à justement pour but de traiter ce problème. Toute suggestion serait la bienvenue.

Deuxième petite question, la formule INDEX plus haut peut elle s'appliquer pour les valeurs sur lignes également ou c'est uniquement valable pour les colonnes ?

Merci !
A voir également:

4 réponses

PapyLuc51 Messages postés 4290 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 16 avril 2024 1 401
22 sept. 2021 à 15:43
Bonjour,

Je suis passé par Excel (impossible à modifié sur LO) - J'ai modifié la formule en D2, elle fonctionne en ajoutant SIERREUR()

=SIERREUR(INDEX(champ;PETITE.VALEUR(SI(ESTNA(EQUIV(champ;champ;0));"";EQUIV(champ;champ;0));LIGNE(INDIRECT("1:"&LIGNES(champ)))));"")


https://www.cjoint.com/c/KIwnLDAKyLe

Cordialement
1
Hello PapyLuc51 et merci à nouveau pour votre attention.

J'ai testé avec les si erreur en plus mais rien change, il y a toujours des case vides à cause des cellules avec formules et fonction "".

Je sais pas si ma manipulation pour mettre en matricielle est correcte, je sélectionne dans une autre colonne la plage identique à la plage champ, la plage étant toujours sélectionné dans la nouvelle colonne je fais ctrl V pour copier la formule qui se met dans la premier cellule, puis dans l'assistant fx j'active l'option matrice. Est-ce la bonne manipulation ?

ps : Mon problème n'est pas d'avoir des cases avec #valeur dans le bas de la liste, je pense qu'il manque une ou plusieurs condition à la formule. Celle-ci semble tenir compte des cases vides contenant une formule avec condition "" (vide ) comme des case pleines et les ajoutes à la liste compresser alors qu'elle devrait ignorer les cases vides. ( voir l'exemple du tableau du bas sous le titre liste plus compressée )
0
PapyLuc51 Messages postés 4290 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 16 avril 2024 1 401
22 sept. 2021 à 18:09
Sur ton fichier il y une macro et je ne sais pas à quoi elle sert c'est du chinois pour moi

J'ai testé la formule sur un fichier sans macro - sélectionne la zone à traiter - du copie la formule sans les crochets { } - tu la colles dans la barre de formule et le raccourci pour mettre en matricielle est Ctrl+Maj+Enter

Cordialement
1
C'est un fichier que j'ai trouvé sur un autre forum en guise d'explication et l'ai testé. J'ai également utilisé la formule sur un autre fichier sans macro mais je n'y parviens toujours pas.

Quand je sélectionne la plage ( plage identique à celle de la colonne nom ( D_RANG_1 ) ou sont les valeurs ) et que je colle la formule et applique la matrice il y a que la première cellule de la colonne matrice qui affiche la première valeur de l'autre colonne. Toutes les autre cellules de la colonne matrice sont vide mais la formule INDEX y est pourtant...

Je comprends pas...je vais encore essayer.
0
PapyLuc51 Messages postés 4290 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 16 avril 2024 1 401 > KingKong
Modifié le 23 sept. 2021 à 06:35
Bonjour,

Il faut sélectionner la colonne où tu dois mettre la formule.

Pour aller au plus simple ; je reprend les données de la question initiale tes résultats de formules sont en AGN891:AGN1890. C'est la zone souche

Alors tu sélectionnes la zone AGU891:AGU1890 ; AGU891 étant la cellule active de la sélection, dans la barre de formule tu colles la formule en remplaçant "champ" soit par $AGN$891:$AGN$1890, soit par le nom que tu auras donné à ta zone souche, en l'occurrence et si j'ai bien compris " D_RANG_1 ". Ensuite tu fais Ctrl+Maj+Enter

=SIERREUR(INDEX(D_RANG_1;PETITE.VALEUR(SI(ESTNA(EQUIV(D_RANG_1;D_RANG_1;0));"";EQUIV(D_RANG_1;D_RANG_1;0));LIGNE(INDIRECT("1:"&LIGNES(D_RANG_1)))));"")


J'ai fait un autre exemple avec les colonnes indiquées ci-dessus,

https://www.cjoint.com/c/KIxewh0v7Ze

Un autre détail que je viens de voir - la formule =SI(AGL891="D";AGL891;"") qui est dans la question initiale ne peut pas donné un résultat chiffré mais la lettre "D" ou rien.
Tu as certainement été trop vite en écrivant la question. Il vaut mieux faire un copier/coller pour reproduire une formule.

Cordialement
0
KingKong > PapyLuc51 Messages postés 4290 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 16 avril 2024
23 sept. 2021 à 12:21
Bonjour papyLuc51 !

En effet j'ai fait une faute de frappe avec =SI(AGL891="D";AGL891;"") je désoler pour la confusion que ça aurait pu engendrer. La bonne formule renvoie bien vers une autre cellule comme ici =SI(AGL891="D";AGB891;"").

J'ai passer quelques heures à essayer d'identifier le problème et je pense avoir omis un détail cruciale dans la source de mon problème et dont j'ignorais totalement l'importance.

Mes résultats dans la colonne D_RANG_1 ne sont pas des valeurs fixe mais provienne de source de valeurs ALEA() et donc en constant recalcul et c'est ce qui semble clairement poser problème.

J'ai adapté le fichier pour bien illustrée la situation, je pense que ca devient beaucoup plus claire.

https://www.cjoint.com/c/KIxkkQPjBQm
0
PapyLuc51 Messages postés 4290 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 16 avril 2024 1 401 > KingKong
23 sept. 2021 à 13:46
RE:

Oui après coups j'ai bien remarqué que cette formule ne fonctionne pas pour regrouper en tête de colonne les cellules >0 lorsque celles-ci avaient un résultat provenant d'une fonction.

J'ai cherché sans succès sur la toile pour trouver une autre formule.

Je ne sais pas s'il ne va pas falloir passer par une macro.

Je vais quitté le navire et laisser aux intervenants plus qualifiés que moi pour corriger ce problème.

Avec ton nouveau fichier comportant toutes les données décrites il y matière pour être plus précis

Cordialement
0
KingKong > PapyLuc51 Messages postés 4290 Date d'inscription dimanche 3 mai 2009 Statut Membre Dernière intervention 16 avril 2024
23 sept. 2021 à 15:42
Oui c'est pas évident, j'ai essayer plusieurs alternative mais en vain. En tout cas merci pour votre temps et participation PapyLuc !
0
tontong Messages postés 2548 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 15 mars 2024 1 054
23 sept. 2021 à 15:00
Bonjour,
Sans avoir de solution je voudrais juste apporter ma vision.
La colonne D-RANG-3 contient des valeurs UNIQUEMENT décimales avec formules et conditions ;"") et la matrice D-RANG-3 compacte normalement et sans défaut MAIS dans le bas de la colonne.
Une cellule qui contient une formule qui renvoie un texte vide ("" "") n'est pas vide, donc les matricielles renvoient en premier, en début de colonne, tous les textes "vides".
Une solution avec une colonne auxiliaire est-elle envisageable?
1
Bonjour tontong,

C'est noté je ne savait pas. Oui une colonne auxiliaire ou peu importe comme solution est envisageable mais c'est la colonne D-RANG-2 avec les nombres non décimales dont j'ai besoin et non la D-RANG-3. J'ai mis la D-RANG-3 pour illustré le problème qu'avec les décimales ca fonctionne hormis les cellules vides reprise dans le haut de la colonne mais visiblement normale comme vous l'avez mentionné.
0
tontong Messages postés 2548 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 15 mars 2024 1 054 > KingKong
23 sept. 2021 à 17:31
Regardez si cela convient:
https://www.cjoint.com/c/KIxpCP0F01K
0
KingKong > tontong Messages postés 2548 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 15 mars 2024
23 sept. 2021 à 18:05
Et tout ca sans matricielle ! Encore mieux !

On peut envoyer que 1 merci à la fois mais je vous en envoie mille tontong !

Je vais examiner de plus près votre formule et méthode et en tirer connaissance.
0
tontong Messages postés 2548 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 15 mars 2024 1 054 > KingKong
24 sept. 2021 à 14:55
Bonjour,
La formule qui numérote les valeurs retenues est du style =SI(A2<>"";MAX($B$1:B1)+1;0).
Il suffit de l'adapter pour exclure les doublons, ou les vides, ou les textes, etc. La méthode, moins lourde que les matricielles, est aussi plus souple.
0
KingKong > tontong Messages postés 2548 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 15 mars 2024
24 sept. 2021 à 20:25
Bonsoir tontong, c''est bien noté. En effet le fait quel soit pas matricielle m'arrange énormément car j'avais pas mal de colonne est étant donner que le fichier est déjà bien chargé je m'en saurais bien passer : )

Bonne soirée et encore merci !
0
Je vous joint un fichier illustratif, je pense que ce sera plus compréhensible.

https://www.cjoint.com/c/KIwmsD33MNm
0