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

XL 2013 Fonction SI avec plage de données sur Excel2013

Aude G

XLDnaute Nouveau
Bonjour,
Je souhaite trouver le min d'un tableau avec condition.
La fonction :
VB:
=MIN(SI($F$1:$F$2<>"X";$E$1:$E$2))
30
20X
Ici je souhaite afficher 30 cependant la fonction "SI" à l'air de ne pas fonctionner avec les plages de données et prendre uniquement la première valeur et me renvoie 20.
Pourquoi? Quel serait la solution?
Cette fonction me renvoie bien 30 lorsque je suis sur une version supérieur mais pas excel 2013.
 
Solution
Re,

Vous auriez fait comme je vous ai dit et regardé la formule qui en ressortait vous auriez vu déjà que pour excel
les formules de .FormulaArray sont en anglais. "SI" interdit.

Une autre façon de faire, copier la formule qui est apparue dans la fenêtre exécution, remplacer les numéros de lignes à cacluler par un signe (@ ci-dessous) et utiliser Replace après avoir doublé les guillemets à doubler:

VB:
Range("I9").FormulaArray = Replace("=MIN(IF($F$14:$F$@<>""X"",$D$14:$D$@))", "?", 14 + nombreMesures - 1)

Ligne testée et approuvée par moi-même personnellement

cordialement

Aude G

XLDnaute Nouveau
Bonjour,
Merci et ça fonctionne bien quand je le fais cependant j'écris la formule via VBA avec .FormulaLocal.
Comment préciser que je souhaite la formule en matricielle?
Cordialement
 

Aude G

XLDnaute Nouveau
Bonjour @Roblochon ,
Le .FormulaArray ne fonctionne pas, peut être à cause de la version d'excel...
Ca met une erreur et le deboggage me pointe la fonction.
VB:
Worksheets(nomOngletGT).Range("I9").Select
Worksheets(nomOngletGT).Range("I9").FormulaArray = "=MIN(IF($F$14:$F$" & (14 + nombreMesures - 1) & "<>""X"";$D$14:$D$" & (14 + nombreMesures - 1) & "))"
Worksheets(nomOngletGT).Range("I9").NumberFormat = "0.00"
Une autre solution?
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Ce n'est sûrement pas à cause de la version excel. .formulaArray existe depuis la création des objets range (vers 1997 si mes souvenirs sont bons)

Et j'ai testé avant de vous donner !!!!

Votre formule est certainement mal rédigée. C'est tout.

1 - Créez votre formule, à la main dans votre cellule
2 - Après vérification des résultats, maintenez la cellule sélectionnée
3 - Dans la fenêtre d'exécution de l'éditeur VBA (CTRL+G pour ouvrir la fenêtre exécution si ce n'est pas déjà fait) tapez en première ligne de la fenêtre la ligne ci-dessous (point d'interrogation inclus) :
?ActiveCell.FormulaArray
Puis validez par ENTREE, vous verrez votre formule apparaître sur la ligne du dessous. Et comparez avec ce que vous avez écrit en VBA.

Cordialement
 

Aude G

XLDnaute Nouveau
Merci pour ton aide et l'information !
J'ai pu testé mais je te joins l'erreur, qui vient de VBA directement :
Erreur d'execution '1004':
Impossible de definir la propriété FormulaArray de la classe Range.
Mon bout de code (je l'ai bien vérifié) :
VB:
Worksheets(nomOngletGT).Range("I9").Select
Worksheets(nomOngletGT).Range("I9").FormulaArray = "=MIN(SI($F$14:$F$" & (14 + nombreMesures - 1) & "<>""X"";$D$14:$D$" & (14 + nombreMesures - 1) & "))"
Worksheets(nomOngletGT).Range("I9").NumberFormat = "0.00"
Pourtant d'après les docs on peut faire un formulaArray sur Range..
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Vous auriez fait comme je vous ai dit et regardé la formule qui en ressortait vous auriez vu déjà que pour excel
les formules de .FormulaArray sont en anglais. "SI" interdit.

Une autre façon de faire, copier la formule qui est apparue dans la fenêtre exécution, remplacer les numéros de lignes à cacluler par un signe (@ ci-dessous) et utiliser Replace après avoir doublé les guillemets à doubler:

VB:
Range("I9").FormulaArray = Replace("=MIN(IF($F$14:$F$@<>""X"",$D$14:$D$@))", "?", 14 + nombreMesures - 1)

Ligne testée et approuvée par moi-même personnellement

cordialement
 

Aude G

XLDnaute Nouveau
Le problème venait bien du SI, pensant que la fonction était identique au IF.
Et aussi puisque j'essayais d'écrire la formule dans une case fusionné.
Merci pour le tips du @!
Bonne continuation
 

Discussions similaires

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