Fourmule SI ET & OU

Bonsoir,

Eh bien cela marche très bien :star_struck: .

Le dernier fichier reçu comporte bien la formule “matricielle”. J’ai su la modifier… (F2) les colonnes 6 à 10 n’entrant pas dans le projet.

Cela dit, si ce n’est pas trop demander et afin de ne pas mourir trop bête, merci de m’expliquer cette formule ou les + semble vouloir remplacer les OU, supprespace, epurage, choisircols et filtre ?

Pour le reste, la remarque tout à fait justifiée, concernant la structure du classeur, cela résulte de mauvaises manips de ma part au moment de la “fabrication” du fichier.

“La bataille fut rude, mais la victoire éclatante”

Cordialement

JL

Ok, je fais ça demain.

Daniel

Bonjour,

Explications

La première chose que fait la formule, c’est de supprimer les caractères indésirables :

EPURAGE(Tableau5)

La fonction EPURAGE supprime les caractères de contrôles qui sont non apparents et qui peuvent fausser les résultats (genre “nouvelle ligne” ou “retour chariot”).

SUPPRESPACE(EPURAGE(Tableau5))

SUPPRESPACE laisse un espace entre les mots et supprime les autres. Dans notre cas, elle supprime l’espace dans les cellules en contenant un seul.

LET(tbl;SUPPRESPACE(EPURAGE(Tableau5))

La fonction LET affecte un nom de variable (ici “tbl”) à la matrice épurée comme expliqué ci-dessus. Ce qui permet d’optimiser la formule.

CHOISIRCOLS(tbl;1)

Permet de sélectionner une colonne de tbl. Si j’écris :

=LET(tbl;SUPPRESPACE(EPURAGE(Tableau5));CHOISIRCOLS(tbl;1))

J’obtiens une matrice de la première colonne de tbl :

VRAI ET FAUX

Il faut savoir que, si un test est exact, il renvoie VRAI et FAUX dans le cas contraire. VRAI est assimilé à “1” et FAUX à “0”. (Ce n’est pas tout à fait vrai, mais c’est suffisant pour comprendre la formule. J’indiquerai la différence dans un autre post).

Par exemple, si A1=1, si j’écris =A1=1, j’obtiens VRAI ou 1 et 0 si A1 est différent de 1.

Pour interpréter le résultat d’un test, il suffit de tester si ce résultat est = à 0, auquel cas, le résultat est faux. Toute autre valeur numérique est considérée comme vraie.

OU et ET

Comme tu l’as compris, on se sert de “+” pour “OU”. Si l’on veut tester si A1=1 ou B1=1 (ou A1=1 et B1=1), on écrit :

=(A1=1)+(B1=1)

Ce qui revient à faire (si A1=0 et B1=1) :

FAUX+VRAI soit 0+1

Si le résultat est 1 ou 2 (soit VRAI) la condition est remplie. S’il est égal à 0, il ne l’est pas.

Pour ET, on utilise “*”

Si on veut tester si A1 et B1 sont égaux à 0, on écrit :

=(A1=1)*(B1=1)

On obtient selon le cas : 0*0, 0*1, 1*0 ou 1*1.

Seul le dernier résultat indique que les deux tests son vrais.

La suite dans le post suivant.

FILTRE

FILTRE est composée d’un tableau et de critères. Si le critère est vrai, la ligne est sélectionnée, sinon elle ne l’est pas. Si j’écris :

=FILTRE(A1;-10)

A1 est sélectionné parce que -10 est considéré comme VRAI :

Capture d'écran 2026-03-04 094920

Si j’écris =FILTRE(A1;0), A1 ne sera pas sélectionné.

Voyons comment est calculé le critère dans la première ligne. FILTRE fait ce calcul pour chacune des lignes du tableau.

(CHOISIRCOLS(tbl;1)="")+(CHOISIRCOLS(tbl;2)="")+(CHOISIRCOLS(tbl;3)="")+(CHOISIRCOLS(tbl;4)="")+(CHOISIRCOLS(tbl;5)="")+(CHOISIRCOLS(tbl;6)="")+(CHOISIRCOLS(tbl;7)="")+(CHOISIRCOLS(tbl;8)="")+(CHOISIRCOLS(tbl;9)="")+(CHOISIRCOLS(tbl;10)="")+(CHOISIRCOLS(tbl;11)="")+(CHOISIRCOLS(tbl;12)=""))

Il y a d’abord une série de tests reliés par des “+” (OU"). Si l’une des cellules est vide, le test renvoie “1”, sinon “0”. Ces résultats sont additionnés. Si une cellule est vide, le résultat est égaal à “1” etc. Comme on veut au moins une cellule vide et la 7e colonne différente de “A” on ajoute :

*(CHOISIRCOLS(tbl;7)<>"A")

On obtient un filtre qui sélectionne les lignes dont un au moins des colonnes est vide et la colonne G différente de “A”.

Différence entre VRAI et 1, FAUX et 0.

Si on écrit VRAI en A1 et qu’on teste :

=A1=1, on obtient FAUX.

Pour transformer VRAI en 1 et FAUX en 0, il faut une opération :

=VRAI+0 (résultat : 1)

ou VRAI*1

ou VRAI*VRAI

Pour obtenir 0, on peut écrire :

=FAUX*VRAI

=FAUX+FAUX

etc.

La fonction N convertit les VRAI en 1 et les FAUX en 0. Si toutes les cellules de A1:A10 sont égales à 1, la fonction :

=SOMME(A1:A10=1)

Renvoie 0 (somme de VRAI)

La fonction :

=SOMME(N(A1:A10=1))

renvoie 10 (somme de “1”).

Daniel

Daniel

PS. Je n’ai pas la veine didactique, aussi, si il y a quelque chose que tu ne comprends pas, n’hésite pas à le dire.

@Daniel77
moi j’aurais une question (si tu veux bien me répondre, sinon tant pis), concernant la fonction N, je l’utilise pour mettre des commentaires dans certaines de mes formules, pour expliquer à ceux avec qui je partage un ou deux fichier sous la forme

=SI(A1=1;3,1)+N("mon commentaire")

de ce que j’avais compris lorsque j’ai trouvé cette astuce, que N n’était justement pas pris en compte dans la formule

Oui, effectivement, c’est malin parce que N renvoie 0 si la valeur testée soit FAUX, soit une chaîne de caractères.

Daniel

Merci de la réponse, je comprends mieux maintenant.

Merci beaucoup de cette leçon pas à pas, je lis maintenant cette formule couramment comme si c’était ma langue maternelle !
En intégrant à mon projet la formule complète de Daniel, post 37, j’ai éliminé les colonnes non concernées par l’analyse, soit 6,8 9,10.
Ci-joint deux images, Tableau5 et InfoManq, montrant que les colonnes éliminées sont toujours là au détriment de 11 et 12 !
Comme quoi une langue bien que maternelle, comporte encore des zones d’ombre :wink:
Cordialement
JL

Bon appétit
JL


Ca serait bien qu’on travaille avec les mêmes données, parce que sur un classeur je n’ai pas de Mme machin et sur l’autre je n’ai pas les mêmes contenus de cellule concernant cette dame :

Sur Classeur1 :

Capture d'écran 2026-03-04 123638

Sur ta copie d’écran :

Capture d'écran 2026-03-04 123812

Fais parvenir le bon classeur.

Daniel

En attendant ton classeur, j’essaie quand même de comprendre :

Non seulement ma langue maternelle comporte des zones d’ombre mais maintenant, j’y perds mon latin !

Daniel

Je voulais simplement montrer que la formule choisissait les colonnes 1 2 3 4 5 7 11 et 12

et affichait les colonnes 1 2 3 4 5 6 7 et 8 du tableau 5

C’est ce que je viens de comprendre. Si tu supprimes la colonne 6, la 7e devient la 6e donc

CHOISIRCOLS(tbl;7)

devient

CHOISIRCOLS(tbl;6)

et ainsi de suite.

La formule ne s’adapte pas automatiquement.

Daniel

oui d’accord, ce n’est pas très clair. je renvoi un classeur, le temps de le fabriquer …
à tout de suite.
JL

Question toute bête avec chosirscols ne peut-on pas, au lieu de mettre un numéro de colonne, mettre l’entête de la colonne ?

ce serait chouette !

Nan ! Oui, ce serait trop simple. Si on met l’entête du tableau, on fait référence aux cellules, celles qui contiennent les espaces indésirables. Même si l’on inclut l’entête dans la matrice en mettant « Tableau5[#Tout] »; il va falloir chercher chaque colonne par un système d’INDEX/EQUIV qui va au moins doubler la longueur de la formule. CHOISIRCOLS n’a rien de compliquée. Elle fonctionne comme INDEX ou DECALER.
La complexité vient du fait que les colonnes ont été supprimées après création de la cellule, ce qui est exceptionnel. On peut les conserver sans faire de test dessus et sans les faire apparaître dans le résultat.

Daniel

Voila un classeur.
Alertes_2.xlsm (939,7 Ko)

(J’ai supprimé les 300 000 lignes).

Alertes_2.xlsm (106,7 Ko)

Daniel

Désolé pour ces lignes pléthoriques, comment on les supprimes?
Ctrl+Maj+Suppr ou Click droit, supprimer ne me semble pas efficace.
JL