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

  • Initiateur de la discussion Initiateur de la discussion Aude G
  • Date de début Date de début

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 !

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
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
 
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?
 
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
 
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..
 
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
 
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
 
- 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
10
Affichages
644
Réponses
7
Affichages
796
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…