Ecriture de différence de matrice par macro (max - min)

Bonjour,

J'ai besoin d'écrire la formule
Form21 = "=Max(IF((Temp_" & Cells(1, 1) & "!B10:B" & Cells(12, 2) + 9 & "-J6)*(Temp_" & Cells(1, 1) & "!B10:B" & Cells(12, 2) + 9 & "-J7)>0,"""",Temp_" & Cells(1, 1) & "!" & Cells(10, Colonne) & "10:" & Cells(10, Colonne) & Cells(12, 2) + 9 & "))" _
& "-Min(IF((Temp_" & Cells(1, 1) & "!B10:B" & Cells(12, 2) + 9 & "-J6)*(Temp_" & Cells(1, 1) & "!B10:B" & Cells(12, 2) + 9 & "-J7)>0,"""",Temp_" & Cells(1, 1) & "!" & Cells(10, Colonne) & "10:" & Cells(10, Colonne) & Cells(12, 2) + 9 & "))"

Cells(21, Colonne).FormulaArray = Form21

Quand je ne mets que le max, ça marche

Form21 = "=Max(IF((Temp_" & Cells(1, 1) & "!B10:B" & Cells(12, 2) + 9 & "-J6)*(Temp_" & Cells(1, 1) & "!B10:B" & Cells(12, 2) + 9 & "-J7)>0,"""",Temp_" & Cells(1, 1) & "!" & Cells(10, Colonne) & "10:" & Cells(10, Colonne) & Cells(12, 2) + 9 & "))"

Cells(21, Colonne).FormulaArray = Form21

Quand je ne mets que le min, ça marche

Form21 = "-Min(IF((Temp_" & Cells(1, 1) & "!B10:B" & Cells(12, 2) + 9 & "-J6)*(Temp_" & Cells(1, 1) & "!B10:B" & Cells(12, 2) + 9 & "-J7)>0,"""",Temp_" & Cells(1, 1) & "!" & Cells(10, Colonne) & "10:" & Cells(10, Colonne) & Cells(12, 2) + 9 & "))"

Cells(21, Colonne).FormulaArray = Form21

Quand je mets la différence, ça bugge.

Quand j'écris la formule à la main et que je valide, ça passe. Quand j'utilise l'enregistreur de macro, il écrit la même chose, ça passe mais ensuite quand je relance ce qu'il a écrit, ça bugge ...

L'intérêt est de ne plus utiliser la fonction INDIRECT qui alourdit et ralenti le fichier et qui a besoin d'avoir les sources ouvertes pour garder le résultat.

6max-min.xlsm (99.52 Ko)

Bonjour,

Peut-être qu'il peut s'agir d'une limite du nombre de caractères. Essayez avec 2 variables Form21max et Form21min contenant les 2 parties de la formule :

Cells(21, Colonne).FormulaArray = Form21max - Form21min

Cdlt,

Merci, j'ai essayé. Le problème est le même !???

Du coup, j'ai fait des calculs intermédiaires ; ce qui m'oblige à recontrôler tout mon logiciel. Quelques heures de travail en plus, mais j'ai abandonné.

Merci encore.

Désolé, sur mon précédent post, je voulais bien sûr mettre une concaténation et non une soustraction :

Cells(21, Colonne).FormulaArray = Form21max & Form21min

Entre temps, j'ai testé, et de mon côté ça marche avec 2 variables comme avec une seule.

Rechercher des sujets similaires à "ecriture difference matrice macro max min"