emplois du si avec 2 conditions sans VBA svp

Matrix_pr

XLDnaute Nouveau
Bonjour,

J'ai besoin d'un coup de main :)

définition des variables:
Ma colonne A se nomme donneur
Ma colonne B se nomme receveur
Ma colonne C se nomme choix
Ma cellule E1 est inscrit choix1 et je dois identifié à qui il est dans la cellule E2

J'ai besoin de traduire ceci en langage excel

Exemple: Robert donne à René le choix 1.
En E2: Si dans la colonne A Robert apparait ET que le chiffre 1 apparait dans la colonne C alors E2=receveur (René) sinon rien ne se produit et la cellule reste comme avant.


j'ai fait la formule suivante dans la cellule E2 mais rien ne se passe: =SI(ET(donneur="Robert";choix=1);receveur;"")

merci à l'avance! :)
 
Dernière édition:

Renaud75015

XLDnaute Junior
Re : emplois du si avec 2 conditions sans VBA svp

Salut matrix_pr

Pour que "ça marche", il serait plus judicieux d'écrire tes conditions en adressant en paramètres des formules =SI() et =ET() des expressions qui visent des colonnes plutôt que des noms. La cellule de calcul s'adressera aux cellules situées sur la même ligne sur des colonnes différentes. Et une PJ serait bienvenue parce que je ne vois pas ce que tu veux obtenir en sélectionnant une plage de cellule. Un résultat individuel ? Une statistique ? Une somme ? une moyenne ? De plus l'examen attentif de ta formule montre que dans la cellule E2 tu n'auras que les résultats afférents aux cellules de la ligne 2, alors que visiblement tu cherches autre chose. Pose bien la question, tu auras une chance d'avoir des réponses correspondant à ce que tu cherches...
 

Dugenou

XLDnaute Barbatruc
Re : emplois du si avec 2 conditions sans VBA svp

Bonjour,
d'accord avec renaud : un pj permettrait de bien te répondre
à mon avis : en e2 = index(b1:b100;equiv(e1;c1:c100;0)) on recherche le N° de ligne de la valeur e1 dans la colonne C et on renvoie le correspondant dans la colonne B.
A condition
1) que le contenu de e1 puisse être trouvé en colonne C (1 ou choix1 mais pas 1 d'un coté et choix1 de l'autre)
2) que la valeur cherché ne soit présente qu'une fois dans la colonne C
Cordialement
 

Matrix_pr

XLDnaute Nouveau
Re : emplois du si avec 2 conditions sans VBA svp

Bonjour,
d'accord avec renaud : un pj permettrait de bien te répondre
à mon avis : en e2 = index(b1:b100;equiv(e1;c1:c100;0)) on recherche le N° de ligne de la valeur e1 dans la colonne C et on renvoie le correspondant dans la colonne B.
A condition
1) que le contenu de e1 puisse être trouvé en colonne C (1 ou choix1 mais pas 1 d'un coté et choix1 de l'autre)
2) que la valeur cherché ne soit présente qu'une fois dans la colonne C
Cordialement

Bonjour,

Je suis débutant en excel, c'est quoi un PJ?

Pour ce qui est du reste, j'ai simplifié un peu plus mon tableau.
En gros onjour!

Je suis plutôt débutant en excel alors c'est quoi un pj?

Dugenou, je pense que tu touche un bon point avec ta proposition de index et recherche que je n'ai jamais utilisé par le passé. J'ai fait un résumé global du tableau. J'ai fait quelques modifications aujourd'hui à mon tableau afin qu'il soit plus facile à utiliser.
J'ai joins mon tableau, ce sera probablement plus facile.

j'ai mis les explications. Il n'y a aucun calcul à faire, c'est seulement des formules avec des textes.

Un gros merci :)
 

Pièces jointes

  • freeway_pr.xls
    10 KB · Affichages: 41
Dernière édition:

Renaud75015

XLDnaute Junior
Re : emplois du si avec 2 conditions sans VBA svp

Salut...

Une pièce jointe c'est ça la pj ! c'est pas la police judiciaire :) Appuie sur le bouton aller en mode avancé et tu trouveras comment joindre un exemple de ton fichier excel, ça nous permettra de mieux comprendre ce que tu souhaites, et de fournir une réponse.
 

Dugenou

XLDnaute Barbatruc
Re : emplois du si avec 2 conditions sans VBA svp

Bonjour,
Voir dans la Pièce Jointe une formule "matricielle" qui donne le résultat voulu (si les dates sont classées de la plus ancienne à la plus récente en bas !!)

formule matricielle : à chaque fois que tu cliques dans la cellule ou que tu modifie la formule : au lieu de valider en faisant enter, valider en faisant alt+maj+enter : les {} apparaissent autour de la formule

Code:
=INDEX(historique!$C$1:$C$24;MAX(SI(historique!$D$5:$D$24=Bilan!A6;LIGNE(historique!$D$5:$D$24))))&""

historique!$C$1:$C$24 : la liste des noms à afficher (receveur) doit toujours commencer à 1 même si ta liste commence en ligne 6, à prolonger jusqu'à la fin de ton vrai fichier
historique!$D$5:$D$24 : la liste des valeurs choix2andre etc jusqu'en bas du fichier, doit avoir la même longueur que la liste de la colonne C
le &"" sert à ne pas afficher les 0
ne pas oublier de valider en faisant alt+maj+enter après chaque modif, se recopie vers le bas

Cordialement
 

Pièces jointes

  • matrix.xls
    30 KB · Affichages: 22
  • matrix.xls
    30 KB · Affichages: 33
  • matrix.xls
    30 KB · Affichages: 32

Matrix_pr

XLDnaute Nouveau
Re : emplois du si avec 2 conditions sans VBA svp

Bonjour,
Voir dans la Pièce Jointe une formule "matricielle" qui donne le résultat voulu (si les dates sont classées de la plus ancienne à la plus récente en bas !!)

formule matricielle : à chaque fois que tu cliques dans la cellule ou que tu modifie la formule : au lieu de valider en faisant enter, valider en faisant alt+maj+enter : les {} apparaissent autour de la formule

Code:
=INDEX(historique!$C$1:$C$24;MAX(SI(historique!$D$5:$D$24=Bilan!A6;LIGNE(historique!$D$5:$D$24))))&""

historique!$C$1:$C$24 : la liste des noms à afficher (receveur) doit toujours commencer à 1 même si ta liste commence en ligne 6, à prolonger jusqu'à la fin de ton vrai fichier
;max trouve la valeur la plus grande en fonction de la date
historique!$D$5:$D$24 : la liste des valeurs choix2andre etc jusqu'en bas du fichier, doit avoir la même longueur que la liste de la colonne
le &"" sert à ne pas afficher les 0
ne pas oublier de valider en faisant alt+maj+enter après chaque modif, se recopie vers le bas

Cordialement

Wow ça marche super bien. Je veux bien comprendre la formule, car c'est quand même complexe pour moi.

la fonction index : permet de renvoyer une valeur (un peu abstrait)
historique!$C$1:$C$24: je la comprends bien sauf pour les signes de $, je ne suis pas sur. Est-ce qu'il sert à lorsque je prolonge la formule dans mon tableau, ça reste toujours c1 à c24 afin de toujours garder ma formule de base?

max: sert à afficher la valeur la plus récente en fonction de la date si date plus ancienne à date plus récente (génial ce sera ça).

si historique!$D$5:$D$24=A15: si dans ma plage d5 à d24 de ma feuille historique la valeur = A6 soit choix1André
LIGNE($historique.$D$5:$D$24))))&"": valeur si vrai alors copier de la même ligne la valeur qui se trouve dans D sinon laissé blanc.

Est-ce que j'ai bien compris?

Ça marche vraiment parfaitement :) :) :) un gros gros merci! c'est super apprécié. :)
 

Matrix_pr

XLDnaute Nouveau
Re : emplois du si avec 2 conditions sans VBA svp

Bonjour,
Voir dans la Pièce Jointe une formule "matricielle" qui donne le résultat voulu (si les dates sont classées de la plus ancienne à la plus récente en bas !!)

formule matricielle : à chaque fois que tu cliques dans la cellule ou que tu modifie la formule : au lieu de valider en faisant enter, valider en faisant alt+maj+enter : les {} apparaissent autour de la formule

Code:
=INDEX(historique!$C$1:$C$24;MAX(SI(historique!$D$5:$D$24=Bilan!A6;LIGNE(historique!$D$5:$D$24))))&""

historique!$C$1:$C$24 : la liste des noms à afficher (receveur) doit toujours commencer à 1 même si ta liste commence en ligne 6, à prolonger jusqu'à la fin de ton vrai fichier
historique!$D$5:$D$24 : la liste des valeurs choix2andre etc jusqu'en bas du fichier, doit avoir la même longueur que la liste de la colonne C
le &"" sert à ne pas afficher les 0
ne pas oublier de valider en faisant alt+maj+enter après chaque modif, se recopie vers le bas

Cordialement

Je viens de réaliser par contre que l'utilisateur doit absolument entrée la valeur exact, s'il se trompe, ça ne fonctionnera pas.
J'ai donc mis en colonne b et c un menu déroulant avec un message d'erreur de saisie.
J'aimerais faire la même chose dans ma colonne D (choix). Sauf que les choix ne pourront pas être à 100% dispo. il faudrait par exemple
lorsque je sélectionne Robert dans donneur, une liste qui serait mis à jour s'affiche en colonne D. Par exemple si Robert a donné son choix 1 en ligne 5 alors il ne pourra pas donné de choix1robert en ligne 6, car il ne lui est plus disponible.

de plus, j'ai également aider à la saisie de donnée pour les dates afin d'éviter des erreurs.
toutefois, il me faudrait un code qui fait que chaque ligne suivante, la date ne peut être = ou supérieur à la ligne d'avant mais pas inférieur sinon message d'erreur.

j'ai remis le fichier à jour.

Est-ce que c'est compliqué à faire?

Merci beaucoup.
 

Pièces jointes

  • matrix.xls
    11.5 KB · Affichages: 24
  • matrix.xls
    11.5 KB · Affichages: 32
  • matrix.xls
    11.5 KB · Affichages: 32

Dugenou

XLDnaute Barbatruc
Re : emplois du si avec 2 conditions sans VBA svp

Bonjour,
max: sert à afficher la valeur la plus récente en fonction de la date si date plus ancienne à date plus récente (génial ce sera ça).

si historique!$D$5:$D$24=A15: si dans ma plage d5 à d24 de ma feuille historique la valeur = A6 soit choix1André
LIGNE($historique.$D$5:$D$24))))&"": valeur si vrai alors copier de la même ligne la valeur qui se trouve dans D sinon laissé blanc.

Pour Max c'est pas tout à fait ça parce que pour LIGNE($historique.$D$5:$D$24) on renvoie le N° de ligne : d'ou la nécessite que la zone d'index commence en ligne 1 soit :
valeur si vrai alors "copier" le N° de ligne sinon laissé à FAUX
donc le max prend le plus grand N° de ligne pour lequel le si est vrai
le &"" est ajouté aprés la formule index et sert seulement à ne pas afficher les 0
sinon pour le reste tu as tout bon
 

Matrix_pr

XLDnaute Nouveau
Re : emplois du si avec 2 conditions sans VBA svp

Bonjour,


Pour Max c'est pas tout à fait ça parce que pour LIGNE($historique.$D$5:$D$24) on renvoie le N° de ligne : d'ou la nécessite que la zone d'index commence en ligne 1 soit :
valeur si vrai alors "copier" le N° de ligne sinon laissé à FAUX
donc le max prend le plus grand N° de ligne pour lequel le si est vrai
le &"" est ajouté aprés la formule index et sert seulement à ne pas afficher les 0
sinon pour le reste tu as tout bon

Lorsque j'arrive pour appliquer la formule à mon vrai fichier, les touches alt+shift+entrée ne fonctionne pas. Est-ce parce que je travaille avec openoffice sur mac, car les accolades n'apparaisse pas? ça marche si je fais cmd+shift+entrée, mais là, la formule est appliquée automatiquement sur la plage c5àc24 si j'essais de cliquer sur une des cellules, ça dit"impossible de modifier uniquement une partie de la matrice.

j'ai mis la pièce jointe au besoin.
 

Pièces jointes

  • matrix version 4.xls
    12.5 KB · Affichages: 23

Matrix_pr

XLDnaute Nouveau
Re : emplois du si avec 2 conditions sans VBA svp

tu dois sélectionner une seule cellule pour valider en matriciel, ensuite tu peux copier coller ou recopier vers le bas

Pourtant c'est bien ce que je fais(Je clique sur la cellule que je veux intégrer, et j'entre la formule et pour les plages de la formule je sélectionne à l'aide de la souris, et à la fin, je fais Cmd + shift+entrée puisque alt +shift+entrée ne semble pas fonctionner sur mac.

je vais essayer avec microsoft excel 2011 voir ce que ça donne.
 

Discussions similaires

Réponses
12
Affichages
279

Statistiques des forums

Discussions
312 379
Messages
2 087 774
Membres
103 662
dernier inscrit
rterterert