Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Problème avec une formule SI

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Etienne2323

XLDnaute Impliqué
Bonjour à tous,
j'aurais de nouveau besoin d'un coup de main pour élaborer une formule. Il s'agit d'une formule du type SI avec 4 critères.

Toute l'information se retrouve dans la pièce jointe !

Merci beaucoup pour votre aide !

Cordialement,

Étienne
 

Pièces jointes

Re : Problème avec une formule SI

Bonsoir Etienne2323
Les cellules fusionnées et le décalage des colonnes des cellules à prendre en compte n'arrangent pas les choses !

Un essai avec des fonctions personnalisées :
Code:
[COLOR="DarkSlateGray"][B]Function toto(ParamArray r())
Application.Volatile
Dim j&, k&, tmp#, tf As Boolean
  For j = 3 To UBound(r)
  tf = False
    For k = 1 To r(0).Count
      tf = tf Or r(j) Like "*" & r(0).Cells(k, 1) & "*"
    Next
    If tf Then tmp = tmp + r(j).Offset(r(1), 0).Offset(0, r(2)).Value
  Next
  toto = tmp
End Function

Function tata(ParamArray r())
Application.Volatile
Dim j&, k&, tmp#, tf As Boolean
  For j = 3 To UBound(r)
  tf = False
    For k = 1 To r(0).Count
      tf = tf Or r(j) Like "*" & r(0).Cells(k, 1) & "*"
    Next
    If Not tf Then tmp = tmp + r(j).Offset(r(1), 0).Offset(0, r(2)).Value
  Next
  tata = tmp
End Function[/B][/COLOR]
qui s'utilisent comme suit.

En E11 :
=toto(A1:A4;2;2;A6;D6;G6;J6;M6;P6;S6;V6;Y6;AB6)
A1:A4 car les critères de recherches sont en A1:A4.
2;2 car les valeurs à sommer sont décalées de 2 lignes vers le bas et de 2 colonnes vers la droite par rapport aux cellules à comparer aux critères.
A6;D6;G6;J6;M6;P6;S6;V6;Y6;AB6 car A6;D6;G6;J6;M6;P6;S6;V6;Y6;AB6 sont les cellules à comparer aux critères.

En E12 :
=tata(A1:A4;2;2;A6;D6;G6;J6;M6;P6;S6;V6;Y6;AB6)

Les spécialistes de la formule trouveront sans doute d'autres solutions...​
ROGER2327
#4196


Vendredi 20 Absolu 138 (Sainte Mélusine, souillarde de cuisine, SQ)
6 Vendémiaire An CCXIX
2010-W39-1T22:51:44Z
 
Re : Problème avec une formule SI

Bonjour Roger,
merci beaucoup pour votre réponse rapide. Je sais que mon problème n'était pas des plus simples. Je test dès demain matin et je vous tiens au courant des développements.

Merci beaucoup pour votre aide !

Cordialement,

Étienne
 
Re : Problème avec une formule SI

Suite...
On peut essayer l'unique fonction
Code:
[COLOR="DarkSlateGray"][B]Function tutu(ParamArray r())
Application.Volatile
Dim j&, k&, tmp#, tf As Boolean
  For j = 4 To UBound(r)
  tf = False
    For k = 1 To r(1).Count
      tf = tf Or r(j) Like "*" & r(1).Cells(k, 1) & "*"
    Next
    If IIf(r(0), tf, Not tf) Then tmp = tmp + r(j).Offset(r(2), 0).Offset(0, r(3)).Value
  Next
  tutu = tmp
End Function[/B][/COLOR]
en écrivant
=tutu(VRAI;A1:A4;2;2;A6;D6;G6;J6;M6;P6;S6;V6;Y6;AB6)
ou
=tutu(1;A1:A4;2;2;A6;D6;G6;J6;M6;P6;S6;V6;Y6;AB6)
au lieu de
=toto(A1:A4;2;2;A6;D6;G6;J6;M6;P6;S6;V6;Y6;AB6)
et
=tutu(FAUX;A1:A4;2;2;A6;D6;G6;J6;M6;P6;S6;V6;Y6;AB6)
ou
=tutu(0;A1:A4;2;2;A6;D6;G6;J6;M6;P6;S6;V6;Y6;AB6)
au lieu de
=tata(A1:A4;2;2;A6;D6;G6;J6;M6;P6;S6;V6;Y6;AB6)
ROGER2327
#4197


Vendredi 20 Absolu 138 (Sainte Mélusine, souillarde de cuisine, SQ)
6 Vendémiaire An CCXIX
2010-W39-1T23:44:38Z
 
Re : Problème avec une formule SI

Bonjour, salut les autres,

En pièce jointe une proposition par formules.

C'est possible de le faire sans ligne intermédiaire mais il faudrait une formule matricielle quelque peu plus complexe et qui ne ferait qu'augmenter la difficulté de compréhension.

Pour ce qui est des cellules fusionnées, il y a facilement moyen de le faire sans, tout en respectant la mise en page, voir exemple en A6 et D6.
 

Pièces jointes

Re : Problème avec une formule SI

Bonjour,

On peut laisser les cellules fusionnées, ça ne gêne pas (pour une fois...)
=SOMME((ESTNUM(TROUVE($A$1:$A$4;$A$6:$AB$6)))*$C$8:$AD$8)

Si la ligne 8 risque de contenir du texte (qu’il y ait ou non du texte) :
=SOMME(SI(ESTNUM(TROUVE($A$1:$A$4;$A$6:$AB$6))*1;$C$8:$AD$8))

Formule matricielle, à valider par ctrl, maj et entrée

Les plages prises en compte dans les lignes 6 et 8 ont la même taille, avec un décalage de 2,
ça compense le décalage des données
A6:AB6 et C8:AD8

A vérifier, je n’ai pas fait 36 essais
 

Pièces jointes

Re : Problème avec une formule SI

Bonjour Roger, Denis, hoerwind, Monique, le forum,
ces réponses me renversent. Vous êtes tous arrivés au résultat désiré mais en passant tous par des chemins différents. Quel beau spectable !

Tout d'abord, merci à tous d'avoir pris de votre temps pour répondre à mon besoin. C'est très apprécié. Plus je progresse dans mon apprentissage d'Excel, moins j'ai besoin de venir ici faire appel à vos services. Toutefois, chaque fois que le besoin s'en fait sentir et que je dois avoir recours à ce forum, il y a toujours une âme charitable pour m'aider. Ce forum est vraiment bien !!!

Ceci dit, en ce qui concerne les réponses, elles fonctionnent toutes à merveille.
@ ROGER2327 : Je n'avais pas encore eu la chance d'utiliser des fonctions personnalisées comme celle-ci. C'est très efficace. J'essaierai de réutiliser le concept dans mes projets futurs.

@ Denis : C'est tout un imbricage de formules que vous m'avez préparé. Le hic est que les noms et les emplacements changent dans le vrai fichier. Toutefois, avec l'exemple que je vous ai fourni, votre solution fonctionne impec !

@ hoerwind : Très bonne idée. Le concept fonctionne très bien. Merci !

@ Monique : Votre solution est la plus simple de toutes. Je crois que c'est celle que je vais retenir.

Pour ceux que ça intéresse, voici la version finale, une fois adaptée à mes besoins, de la formule utilisée.

Code:
=SOMME(SI(ESTNUM(TROUVE($E$1:$E$4;INDIRECT("'Synth. par plan'!"&"$O$"&D1&":"&"$BV$"&D1)))*1;INDIRECT("'Synth. par plan'!"&"$Q$"&D2&":"&"$BX$"&D2)))

En E1:E4 les 4 critères.
En D1 : une formule pour aller chercher le numéro de la ligne avec les comptes dans mon onglet de recherche :
Code:
=EQUIV("Montant Cible";'Synth. par plan'!K1:K65000;0)-5
En D2 : Une formule pour aller chercher la dernière ligne de mon onglet de recherche, soit la ligne avec les totaux. (Matricielle)
Code:
=MAX(SI(NBCAR('Synth. par plan'!K1:K65000)>0;LIGNE('Synth. par plan'!K1:K65000);0))

Encore une fois, merci à tous !

Au plaisir de vous recroiser !

Etienne
 
Re : Problème avec une formule SI

Bonjour à tous, bonjour Etienne2323
Merci pour votre réponse qui est, pour moi, un modèle de ce que j'aimerais voir plus souvent. Vos commentaires sont, à mon sens, très-utiles car ils permettent de comprendre comment et pourquoi nos propositions sont utilisées (ou inutilisées). Cela ne peut que, d'une part, nous encourager à persévérer, d'autre part nous améliorer dans nos contributions.

Merci encore. Très cordialement,​
ROGER2327
#4199


Samedi 21 Absolu 138 (Saint Venceslas, duc, SQ)
7 Vendémiaire An CCXIX
2010-W39-2T12:34:29Z
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
17
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…