Nombre d'arguments trop important pour une fonction excel
Résolu/Fermé
maxoooum
Messages postés
10
Date d'inscription
mercredi 22 mai 2013
Statut
Membre
Dernière intervention
24 mai 2013
-
Modifié par maxoooum le 22/05/2013 à 18:04
tontong Messages postés 2567 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 20 novembre 2024 - 24 mai 2013 à 15:32
tontong Messages postés 2567 Date d'inscription mercredi 3 février 2010 Statut Membre Dernière intervention 20 novembre 2024 - 24 mai 2013 à 15:32
A voir également:
- Les arguments de tableau de la fonction sumifs ne sont pas de la même taille.
- Comment réduire la taille d'un fichier - Guide
- Tableau croisé dynamique - Guide
- Fonction si et - Guide
- Tableau ascii - Guide
- Tableau word - Guide
10 réponses
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
23 mai 2013 à 09:25
23 mai 2013 à 09:25
Salut à tous
Vu l'organigramme, j'ai pensé qu'une macro serait peut être plus facile à écrire
ça donnerait quelque chose de ce genre
https://www.cjoint.com/?3ExjxBZExxa
Bonne suite
Vu l'organigramme, j'ai pensé qu'une macro serait peut être plus facile à écrire
ça donnerait quelque chose de ce genre
https://www.cjoint.com/?3ExjxBZExxa
Bonne suite
Vaucluse
Messages postés
26496
Date d'inscription
lundi 23 juillet 2007
Statut
Contributeur
Dernière intervention
1 avril 2022
6 419
22 mai 2013 à 18:24
22 mai 2013 à 18:24
Bonsoir
excel 2003 n'admet que 7 SI dans une fonction.
.. vous en êtes bien loin.
Si vous avez un modèle de votre fichier avec quelques explications sur ce que vous souhaitez, on devrait pouvoir vous aider.
A déposer sur:
https://www.cjoint.com/
en revenant ici placer le lien donné par le site.
crdlmnt
excel 2003 n'admet que 7 SI dans une fonction.
.. vous en êtes bien loin.
Si vous avez un modèle de votre fichier avec quelques explications sur ce que vous souhaitez, on devrait pouvoir vous aider.
A déposer sur:
https://www.cjoint.com/
en revenant ici placer le lien donné par le site.
crdlmnt
Raymond PENTIER
Messages postés
58797
Date d'inscription
lundi 13 août 2007
Statut
Contributeur
Dernière intervention
4 janvier 2025
17 262
23 mai 2013 à 05:31
23 mai 2013 à 05:31
maxoooum
Messages postés
10
Date d'inscription
mercredi 22 mai 2013
Statut
Membre
Dernière intervention
24 mai 2013
23 mai 2013 à 07:53
23 mai 2013 à 07:53
Merci pour vos réponses,
mon but est d'analyser un tableau de valeur en le comparant à des valeurs limites et d'en tirer une classe.
J'ai fait un organigramme pour etre plus clair:
https://www.cjoint.com/?0Exh0Aqd8U1
Voici mon fichier excel:
https://www.cjoint.com/?0ExhVwdU6s7
J'espère que ça pourra vous aider
Cordialement
mon but est d'analyser un tableau de valeur en le comparant à des valeurs limites et d'en tirer une classe.
J'ai fait un organigramme pour etre plus clair:
https://www.cjoint.com/?0Exh0Aqd8U1
Voici mon fichier excel:
https://www.cjoint.com/?0ExhVwdU6s7
J'espère que ça pourra vous aider
Cordialement
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
Modifié par Mike-31 le 23/05/2013 à 08:12
Modifié par Mike-31 le 23/05/2013 à 08:12
Salut,
Il faut faire des cascades de conditionnelle comme expliqué sur l'astuce et relancer avec & si la réponse à chaque cascade est texte et avec + si la réponse est numérique
un exemple si on prend une partie de ta formule exemple de début ne peut fonctionner
=SI(I35>D41;SI(I35>D42;SI(I35>D43;SI(I36>E43;SI(I37>B43;SI(I38>C43;"-";A43))))))
à mon avis il manque une information, l'imbrication conditionnelle n'as pas de réponse à chaque si,
si toute les conditionnelle de cette cascade doivent être remplies il faudrait écrire
=SI(ET(I35>D41;I35>D42;I35>D43;I36>E43;I37>B43;I38>C43);"-";A43)
et relancer une nouvelle cascade avec &
reprend tes explications et dis nous dans quelle condition la cellule A43 doit être affichée, lorsque toute les conditions sont réunies ou donne la liste des critères
ex il faut que I35>D41 et I35>D43 etc ...
ou s'il suffit qu'une seule condition soit remplie l'ordre de priorité
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Il faut faire des cascades de conditionnelle comme expliqué sur l'astuce et relancer avec & si la réponse à chaque cascade est texte et avec + si la réponse est numérique
un exemple si on prend une partie de ta formule exemple de début ne peut fonctionner
=SI(I35>D41;SI(I35>D42;SI(I35>D43;SI(I36>E43;SI(I37>B43;SI(I38>C43;"-";A43))))))
à mon avis il manque une information, l'imbrication conditionnelle n'as pas de réponse à chaque si,
si toute les conditionnelle de cette cascade doivent être remplies il faudrait écrire
=SI(ET(I35>D41;I35>D42;I35>D43;I36>E43;I37>B43;I38>C43);"-";A43)
et relancer une nouvelle cascade avec &
reprend tes explications et dis nous dans quelle condition la cellule A43 doit être affichée, lorsque toute les conditions sont réunies ou donne la liste des critères
ex il faut que I35>D41 et I35>D43 etc ...
ou s'il suffit qu'une seule condition soit remplie l'ordre de priorité
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
maxoooum
Messages postés
10
Date d'inscription
mercredi 22 mai 2013
Statut
Membre
Dernière intervention
24 mai 2013
23 mai 2013 à 14:48
23 mai 2013 à 14:48
Bonjour,
Merci pour votre réponse,
dès que I35>D43 OU I36>E43 OU I37>B43 OU I38>C43 alors "-"
En fait ce qui est important c'est la valeur qui dépasse la valeur limite qui fait augmenter la classe, les autres valeurs ne sont alors pas importantes, à moins qu'elles soient toutes au même niveau.
J'espère avoir été clair
Merci
Merci pour votre réponse,
dès que I35>D43 OU I36>E43 OU I37>B43 OU I38>C43 alors "-"
En fait ce qui est important c'est la valeur qui dépasse la valeur limite qui fait augmenter la classe, les autres valeurs ne sont alors pas importantes, à moins qu'elles soient toutes au même niveau.
J'espère avoir été clair
Merci
ccm81
Messages postés
10905
Date d'inscription
lundi 18 octobre 2010
Statut
Membre
Dernière intervention
27 décembre 2024
2 429
23 mai 2013 à 15:04
23 mai 2013 à 15:04
Pas vraiment, mais dans ce cas, il te faut revoir ton organigramme
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
23 mai 2013 à 14:03
23 mai 2013 à 14:03
Re,
Si tu répondais à mon dernier post avec quelques explications on y verrais peut être plus clair, non
Si tu répondais à mon dernier post avec quelques explications on y verrais peut être plus clair, non
tontong
Messages postés
2567
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
20 novembre 2024
1 059
23 mai 2013 à 14:14
23 mai 2013 à 14:14
Bonjour,
Pour une fois qu'un demandeur nous donne un logigramme il faut en profiter!
On peut attribuer un point à chaque condition remplie et faire la somme des points. Pour tous les totaux >= 3 : "Hors tolérance".
J'ai détaillé le calcul mais on pourrait le rendre transparent en nommant une ou deux formules.
Le mode de calcul (0 ou 1) et choix de la fonction Choisir montrent qu'il existe des alternatives à la fonction SI.
https://www.cjoint.com/?3Exono43UPL
Pour une fois qu'un demandeur nous donne un logigramme il faut en profiter!
On peut attribuer un point à chaque condition remplie et faire la somme des points. Pour tous les totaux >= 3 : "Hors tolérance".
J'ai détaillé le calcul mais on pourrait le rendre transparent en nommant une ou deux formules.
Le mode de calcul (0 ou 1) et choix de la fonction Choisir montrent qu'il existe des alternatives à la fonction SI.
https://www.cjoint.com/?3Exono43UPL
maxoooum
Messages postés
10
Date d'inscription
mercredi 22 mai 2013
Statut
Membre
Dernière intervention
24 mai 2013
23 mai 2013 à 15:51
23 mai 2013 à 15:51
Bonjour,
Merci de te réponse mais soit je n'ai pas compris ta méthode soit elle ne marche pas puisque nous nous attachons pas à l'ensemble des valeurs (à la somme) mais à la valeur la plus forte par rapport aux valeurs admissibles des classes. Avec ta méthode, l'exemple donné est hors tolérance alors que sa classe est la 1! puisque l'erreur maximum b = 0.610>0.5 et que toutes les autres erreurs sont en dessous des valeurs limites admissibles pour la classe 1
Merci de te réponse mais soit je n'ai pas compris ta méthode soit elle ne marche pas puisque nous nous attachons pas à l'ensemble des valeurs (à la somme) mais à la valeur la plus forte par rapport aux valeurs admissibles des classes. Avec ta méthode, l'exemple donné est hors tolérance alors que sa classe est la 1! puisque l'erreur maximum b = 0.610>0.5 et que toutes les autres erreurs sont en dessous des valeurs limites admissibles pour la classe 1
tontong
Messages postés
2567
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
20 novembre 2024
1 059
23 mai 2013 à 16:19
23 mai 2013 à 16:19
J'ai certainement mal lu: avec fo_max= 0.125 donc supérieur à 0.1 la classe ne devrait pas être inférieur à 2. Il aurait fallu des doubles flèches dans le logigramme?
maxoooum
Messages postés
10
Date d'inscription
mercredi 22 mai 2013
Statut
Membre
Dernière intervention
24 mai 2013
23 mai 2013 à 16:26
23 mai 2013 à 16:26
Ah exact j'avais oublié que sur cet exemple f0max = 0.125, donc ici la classe serait de 2
tontong
Messages postés
2567
Date d'inscription
mercredi 3 février 2010
Statut
Membre
Dernière intervention
20 novembre 2024
1 059
23 mai 2013 à 18:36
23 mai 2013 à 18:36
En modifiant la formule en K39:
https://www.cjoint.com/?3ExsJdE8KPm
https://www.cjoint.com/?3ExsJdE8KPm
maxoooum
Messages postés
10
Date d'inscription
mercredi 22 mai 2013
Statut
Membre
Dernière intervention
24 mai 2013
24 mai 2013 à 09:07
24 mai 2013 à 09:07
Ca marche! Merci beaucoup =)
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
23 mai 2013 à 15:52
23 mai 2013 à 15:52
Re,
es ce que toute les cellules conditionnées contiennent une valeur ou peut il y avoir des cellules vides, dans ce cas sont elles considérées comme inférieure exemple
I35>=D41 D41 est vide donc par définition I35 est > que, c'est cela
es ce que toute les cellules conditionnées contiennent une valeur ou peut il y avoir des cellules vides, dans ce cas sont elles considérées comme inférieure exemple
I35>=D41 D41 est vide donc par définition I35 est > que, c'est cela
maxoooum
Messages postés
10
Date d'inscription
mercredi 22 mai 2013
Statut
Membre
Dernière intervention
24 mai 2013
23 mai 2013 à 16:01
23 mai 2013 à 16:01
Aucune cellule conditionnée est vide
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
23 mai 2013 à 19:46
23 mai 2013 à 19:46
Re,
J'ai décortiqué la formule initiale pour comprendre la demande en fait les conditionnelles sont en doublons.
En fait il ne faudrait tester que 3 cellule la A35, A36, A37, A38
=SI(OU(I35>D41;I35>D42;I35>D43);"-"; A43)
=SI(OU(I36>E41;I36>E42;I36>E43);"-";A43)
=SI(OU(I37>B41;I37>B42;I37>B43);"-";A42)
=SI(OU(I38>C41;I38>C42;I38>C43);"-";A42)
Il faudrait que Maxoooum contrôle chacune de ces formules voir si tous les critères sont bien pris en compte pour chaque cellule A35, A36, A37, A38
J'ai décortiqué la formule initiale pour comprendre la demande en fait les conditionnelles sont en doublons.
En fait il ne faudrait tester que 3 cellule la A35, A36, A37, A38
=SI(OU(I35>D41;I35>D42;I35>D43);"-"; A43)
=SI(OU(I36>E41;I36>E42;I36>E43);"-";A43)
=SI(OU(I37>B41;I37>B42;I37>B43);"-";A42)
=SI(OU(I38>C41;I38>C42;I38>C43);"-";A42)
Il faudrait que Maxoooum contrôle chacune de ces formules voir si tous les critères sont bien pris en compte pour chaque cellule A35, A36, A37, A38
maxoooum
Messages postés
10
Date d'inscription
mercredi 22 mai 2013
Statut
Membre
Dernière intervention
24 mai 2013
24 mai 2013 à 09:04
24 mai 2013 à 09:04
Je suppose que tu voulais dire qu'il faut tester les cellules I35, I36, I37, I38 non pas A35,A36...
Je ne vois pas comment tes formules pourrait marcher car peu importe si I35>D41 ou si I35>D42 ou si I35>D43, le "OU" renvoie vrai. Alors que le but est de savoir si I35<D41 ou si D41<I35<D42 ou si D42<I35<D43 ou si I35>D43
Je ne vois pas comment tes formules pourrait marcher car peu importe si I35>D41 ou si I35>D42 ou si I35>D43, le "OU" renvoie vrai. Alors que le but est de savoir si I35<D41 ou si D41<I35<D42 ou si D42<I35<D43 ou si I35>D43
Mike-31
Messages postés
18354
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
1 janvier 2025
5 110
24 mai 2013 à 10:16
24 mai 2013 à 10:16
Re,
Oui effectivement la fatigue certainement, je voulais parler des cellules en I
ensuite ce que je voulais que tu contrôles est tous les cas de figure concernant chacune de ces cellules I peu importe le OU ou ET ou SI uniquement comparer le nombre de contrôle si I35>D41, D42, D43 etc ...
dans ta formule initiale, si les premières conditions concernant I35 sont fausse on affiche A43 sinon "-"
si les premières conditions concernant I36 sont fausse on affiche également A43 sinon "-"
si les premières conditions concernant I37 sont fausse on affiche A42 sinon "-"
si les premières conditions concernant I38 sont fausse on affiche également A42 sinon "-"
mais dans ces quatre imbrications si un est vrai que faut il afficher que faut il afficher ?
et dans le cas ou toutes sont fausse quelle cellule afficher A42, A43 ....
C'est la ou ça ne va plus !
Oui effectivement la fatigue certainement, je voulais parler des cellules en I
ensuite ce que je voulais que tu contrôles est tous les cas de figure concernant chacune de ces cellules I peu importe le OU ou ET ou SI uniquement comparer le nombre de contrôle si I35>D41, D42, D43 etc ...
dans ta formule initiale, si les premières conditions concernant I35 sont fausse on affiche A43 sinon "-"
si les premières conditions concernant I36 sont fausse on affiche également A43 sinon "-"
si les premières conditions concernant I37 sont fausse on affiche A42 sinon "-"
si les premières conditions concernant I38 sont fausse on affiche également A42 sinon "-"
mais dans ces quatre imbrications si un est vrai que faut il afficher que faut il afficher ?
et dans le cas ou toutes sont fausse quelle cellule afficher A42, A43 ....
C'est la ou ça ne va plus !
23 mai 2013 à 10:21
bmax05 = .[I38] > .[C41]
bmax1 = .[I38] > .[C42]
bmax2 = .[I38] > .[C43]
23 mai 2013 à 13:59
'Public Sub QuelleClasse()
Dim fmax005 As Boolean, fmax01 As Boolean, fmax02 As Boolean
Dim amax025 As Boolean, ama05 As Boolean, amax10 As Boolean
Dim qmax05 As Boolean, qmax1 As Boolean, qmax2 As Boolean
Dim bmax05 As Boolean, bmax1 As Boolean, bmax2 As Boolean
Dim QUELLE_CLASSE As Range
Application.Volatile
With ActiveSheet
Set QUELLE_CLASSE = .[J45]
fmax005 = .[I35] > .[D41]
fmax01 = .[I35] > .[D42]
fmax02 = .[I35] > .[D43]
amax025 = .[I36] > .[E41]
amax05 = .[I36] > .[E42]
amax10 = .[I36] > .[E43]
qmax05 = .[I37] > .[B41]
qmax1 = .[I37] > .[B42]
qmax2 = .[I37] > .[B43]
bmax05 = .[I36] > .[C41]
bmax1 = .[I36] > .[C42]
bmax2 = .[I36] > .[C43]
' classe 0.5 - 1 cas
If Not (fmax005 Or amax025 Or qmax05 Or bmax05) Then QuelleClasse = "0.5": Exit Sub
' classe 1 - 4 cas
If fmax005 And Not (fmax01 Or amax05 Or qmax1 Or bmax1) Then QuelleClasse = "1": Exit Sub
If Not fmax005 And amax025 And Not (amax05 Or qmax1 Or bmax1) Then QuelleClasse = "1": Exit Sub
If Not (fmax005 Or amax005) And qmax05 And Not (qmax1 Or bmas1) Then QuelleClasse = "1": Exit Sub
If Not (fmax005 Or amax025 Or qmax05) And bmax05 And Not bmax1 Then QuelleClasse = "1": Exit Sub
' classe 2 - 10 cas
If fmax005 And fmax01 And Not (fmax02 Or amax10 Or qmax2 Or bmax2) Then QuelleClasse = "2": Exit Sub
If fmax005 And Not fmax01 And amax05 And Not (amax10 Or qmax2 Or bmax2) Then QuelleClasse = "2": Exit Sub
If fmax005 And Not (fmax01 Or amax05) And qmax1 And Not (qmax2 Or bmax2) Then QuelleClasse = "2": Exit Sub
If fmax005 And Not (fmax01 Or amax05 Or qmax1) And bmax1 And Not bmax2 Then QuelleClasse = "2": Exit Sub
If Not fmax005 And amax025 And amax05 And Not (amax10 Or qmax2 Or bmax2) Then QuelleClasse = "2": Exit Sub
If Not fmax005 And amax025 And Not amax05 And qmax1 And Not (qmax2 Or bmax2) Then QuelleClasse = "2": Exit Sub
If Not fmax005 And amax025 And Not (amax05 Or qmax1) And bmax1 And Not bmax2 Then QuelleClasse = "2": Exit Sub
If Not (fmax005 Or amax025) And qmax05 And qmax1 And Not (qmax2 Or bmax2) Then QuelleClasse = "2": Exit Sub
If Not (fmax005 Or amax025) And qmax05 And Not qmax1 And bmax1 And Not bmax2 Then QuelleClasse = "2": Exit Sub
If Not (fmax005 Or amax025 Or qmax05) And bmax05 And bmax1 And Not bmax2 Then QuelleClasse = "2": Exit Sub
' dans tous les autres cas hors tolerance
If fmax02 Or amax10 Or qmax2 Or bmax2 Then QuelleClasse = "hors tolerance": Exit Sub
End With
End Sub
Pourtant ça ne marche pas. Merci pour vos réponses ça m'aide beaucoup
23 mai 2013 à 14:28
bmax05 = .[I38] > .[C41]
bmax1 = .[I38] > .[C42]
bmax2 = .[I38] > .[C43]
23 mai 2013 à 14:33
24 mai 2013 à 08:53
Et il ne doit pas y avoir de "Or"
La formule donne alors ça:
Public Sub QuelleClasse()
Dim fmax005 As Boolean, fmax01 As Boolean, fmax02 As Boolean
Dim amax025 As Boolean, amax05 As Boolean, amax10 As Boolean
Dim qmax05 As Boolean, qmax1 As Boolean, qmax2 As Boolean
Dim bmax05 As Boolean, bmax1 As Boolean, bmax2 As Boolean
Dim QUELLE_CLASSE As Range
Application.Volatile
With ActiveSheet
Set QUELLE_CLASSE = .[J45]
fmax005 = .[I35] > .[D41]
fmax01 = .[I35] > .[D42]
fmax02 = .[I35] > .[D43]
amax025 = .[I36] > .[E41]
amax05 = .[I36] > .[E42]
amax10 = .[I36] > .[E43]
qmax05 = .[I37] > .[B41]
qmax1 = .[I37] > .[B42]
qmax2 = .[I37] > .[B43]
bmax05 = .[I36] > .[C41]
bmax1 = .[I36] > .[C42]
bmax2 = .[I36] > .[C43]
' classe 0.5 - 1 cas
If Not fmax005 And Not amax025 And Not qmax05 And Not bmax05 Then QUELLE_CLASSE = "0.5": Exit Sub
' classe 1 - 4 cas
If fmax005 And Not fmax01 And Not amax05 And Not qmax1 And Not bmax1 Then QUELLE_CLASSE = "1": Exit Sub
If Not fmax005 And amax025 And Not amax05 And Not qmax1 And Not bmax1 Then QUELLE_CLASSE = "1": Exit Sub
If Not fmax005 And Not amax005 And qmax05 And Not qmax1 And Not bmax1 Then QUELLE_CLASSE = "1": Exit Sub
If Not fmax005 And Not amax025 And Not qmax05 And bmax05 And Not bmax1 Then QUELLE_CLASSE = "1": Exit Sub
' classe 2 - 10 cas
If fmax005 And fmax01 And Not fmax02 And Not amax10 And Not qmax2 And Not bmax2 Then QUELLE_CLASSE = "2": Exit Sub
If fmax005 And Not fmax01 And amax05 And Not amax10 And Not qmax2 And Not bmax2 Then QUELLE_CLASSE = "2": Exit Sub
If fmax005 And Not fmax01 And Not amax05 And qmax1 And Not qmax2 And Not bmax2 Then QUELLE_CLASSE = "2": Exit Sub
If fmax005 And Not fmax01 And Not amax05 And Not qmax1 And bmax1 And Not bmax2 Then QUELLE_CLASSE = "2": Exit Sub
If Not fmax005 And amax025 And amax05 And Not amax10 And Not qmax2 And Not bmax2 Then QUELLE_CLASSE = "2": Exit Sub
If Not fmax005 And amax025 And Not amax05 And qmax1 And Not qmax2 And Not bmax2 Then QUELLE_CLASSE = "2": Exit Sub
If Not fmax005 And amax025 And Not amax05 And Not qmax1 And bmax1 And Not bmax2 Then QUELLE_CLASSE = "2": Exit Sub
If Not fmax005 And Not amax025 And qmax05 And qmax1 And Not qmax2 And Not bmax2 Then QUELLE_CLASSE = "2": Exit Sub
If Not fmax005 And Not amax025 And qmax05 And Not qmax1 And bmax1 And Not bmax2 Then QUELLE_CLASSE = "2": Exit Sub
If Not fmax005 And Not amax025 And Not qmax05 And bmax05 And bmax1 And Not bmax2 Then QUELLE_CLASSE = "2": Exit Sub
' dans tous les autres cas hors tolerance
If fmax02 Or amax10 Or qmax2 Or bmax2 Then QUELLE_CLASSE = "hors tolerance": Exit Sub
End With
End Sub
Elle marche sauf pour b, j'ai fait plusieurs exemples où b est sensé augmenter la classe mais il ne le prend pas en compte. même si b est hors tolérance elle se concentre sur les autres variables. Je ne comprends pas pourquoi