Remplacer des "0" par "" sous condition

Bonjour,

J'ai une matrice :

capture d ecran 2026 08 27 105056

et je voudrai obtenir :

capture d ecran 2026 08 27 105143

soit une chaine vide quand il n'y a plus que des "0".

Comment faire ?

Merci d'avance.

Bonjour,

Sur XL 365 avec votre matrice 1D en A1:I1 vous pouvez utiliser par exemple :

=LET(
    _src;A1:J1;
    _join; "|" & JOINDRE.TEXTE("|";VRAI;_src);
    _res;SIERREUR(REGEX.EXTRAIRE(_join;"^(.*?\|10\|)");_join);
    FRACTIONNER.TEXTE(_res;"|";; VRAI)
)

Ou bien une alternative un peu plus "idiomatique" pour bien remplir de "" les cellules suivantes :=EXCLURE(
REDUCE("";A1:I1; LAMBDA(a;v;
LET(
_isReached; OU(SIERREUR(PRENDRE(a;-1;-1); FAUX); v=10);
ASSEMB.H(a; ASSEMB.V(SI(_isReached;"";v); _isReached))
)
));
-1;1
)

Ne fonctionne pas si 10 est la première cellule

Bonjour à tous !

Une double approche (selon la compréhension du besoin...) :

Merci à tous deux, vos formules fonctionnent bien.

Daniel

Bonjour

en utilisant RECHERCHEX en version référentielle (sur la base du fichier de JFL)
on part de la première cellule C3 et la fin de la plage souhaitée est la première valeur <>0 en partant de la fin (le -1 du RECHERCHEX)

=C3:RECHERCHEX(VRAI;C3:L3<>0;C3:L3;C3;0;-1)

ou avec PRENDRE et EQUIVX (également en partant de la fin avec -1)
=PRENDRE(C3:L3;;EQUIVX(VRAI;C3:L3<>0;0;-1))

image

Stéphane

Re, merci pour votre retour,

Il me semble que ceci marche bien aussi :

=SCAN(0;A1:I1;LAMBDA(a;v;SI(OU(a="";a=10);"";v)))

Mais je crois que je résoud un problème différent... Moi j'ai compris de récupérer tout ce qui est "à gauche" du 10.

Je n'ai pas été suffisamment explicite. Il faut supprimer les "0" à droite (comme pour un nombre, mais dans l'autre sens). @raccourcix merci pour tes solutions qui fonctionnent bien.

Daniel

Bonjour à tous,

et ça ?

=CHOISIRCOLS(G4:P4;SEQUENCE(EQUIV(10;G4:P4;0)))

Crdlmt

Bonjour à tous,

et ça ?

=CHOISIRCOLS(G4:P4;SEQUENCE(EQUIV(10;G4:P4;0)))

Crdlmt

Tu peux directement PRENDRE/EXCLURE une partie du tableau comme l'a fait raccourcix à partir de ton index ce qui t'évites d'avoir à passer par la séquence pour ton choisircols. Cependant c'est une bonne alternative pour XL 2021

=CHOISIRCOLS(G4:P4;SEQUENCE(EQUIV(10;G4:P4;0)))

Non, cela ne fonctionne pas pour une séquence 0 10 10 0 0 0 car récupérera la position du premier 10 et non la dernière valeur non nulle. on obtient 0 10 et non 0 10 10.
d'où l'intérêt de EQUIVX et RECHERCHEX qui permettent de chercher depuis la fin

Autre proposition avec INDEX, MAX et COLONNE à partir de la plage G4:P4

=G4:INDEX(G4:P4;1+MAX((G4:P4<>0)*(COLONNE(G4:P4)-COLONNE(G4))))

Ou encore comme la demande est d'afficher une chaine vide quand il n'y a plus que des "0".

=SI(COLONNE(G4:P4)<=MAX((G4:P4<>0)*COLONNE(G4:P4));G4:P4;"")

Et comme il s'agit d'un affichage, pourquoi pas une MEFC si la colonne est > à la dernière différente de 0, police rouge (pour la démo mais à mettre en blanc sur blanc)

image

=COLONNE(G4)>MAX(($G4:$P4<>0)*COLONNE($G4:$P4))

Stéphane

Merci pour vos formules. Ce n'est pas forcément "10". Les cellules peuvent contenir un nombre quelconque (positif ou nul quand même)

Daniel

"

Non, cela ne fonctionne pas pour une séquence 0 10 10 0 0 0

ce n'est pas ce qui est demandé.

Crdlmt

Merci pour vos formules. Ce n'est pas forcément "10". Les cellules peuvent contenir un nombre quelconque (positif ou nul quand même)

Daniel

Dans ce cas retirez ma première réponse comme valide, je suis complètement hors sujet

Rechercher des sujets similaires à "remplacer condition"