Formule matricielle en VBA

mécano41

XLDnaute Accro
Bonjour,

Dans le morceau de sous-programme suivant :

Code:
Option Explicit

Dim DébutTableau As Range
Dim PlageX As Range, PlageY As Range

Sub Préparation()
Dim Réf As String
Dim FormuleX As String

Set DébutTableau = Application.InputBox(prompt:="Cliquez sur la première valeur de la première colonne du tableau (colonne des X)", Title:="Position début tableau", Type:=8)
Set PlageX = Range(DébutTableau, DébutTableau.End(xlDown))
Set PlageY = Range(DébutTableau.Offset(0, 1), DébutTableau.Offset(0, 1).End(xlDown))
Réf = DébutTableau.Offset(0, 4).Address(True, False[COLOR="Red"],xlR1C1[/COLOR]) & ":" & DébutTableau.Offset(1, 4).Address(False, False[COLOR="Red"],xlR1C1[/COLOR])
FormuleX = "=IF(MAX(" & Réf & ")=MAX(PlageX) , """" , MIN(IF(PlageX>MAX(" & Réf & "),PlageX)))"
Range("E8").Formula[COLOR="Red"].area[/COLOR] = FormuleX

End Sub

Si je ne mets pas les parties en rouge, la formule mise en E8 est bonne, mais comme je voudrais qu'elle soit matricielle, j'ajoute les parties en rouge. J'ai alors deux problèmes :

- en ajoutant xlR1C1 la référence dans la formule n'est plus bonne (Réf = I$6:I14 au lieu de E$6:E7 en ayant cliqué sur A6)
- en ajoutant Area, une erreur 424 (objet requis) survient

Quelqu'un peut-il me dire où est mon erreur?

Merci d'avance

Cordialement
 
Dernière édition:

Cousinhub

XLDnaute Barbatruc
Re : Formule matricielle en VBA

Bonjour mécano, le forum

tout d'abord, ceci aurait du t'interpeller : "Formula.area", pas de majuscule à "area", donc VBE ne reconnait pas ton code.
Remplace par "Range("E8").FormulaArray = FormuleX"
Pour le reste, je vois pas trop, sans exemple.
 

mécano41

XLDnaute Accro
Re : Formule matricielle en VBA

Bonjour,

Merci pour cette réponse rapide.

Même avec la majuscule, Formula.Area ne fonctionne pas. En revanche, avec FormulaArray, la formule se met bien en forme matricielle.

Pour l'erreur de référence, je joins un exemple.

Cordialement
 

Pièces jointes

  • EssaiFormule1.xls
    45.5 KB · Affichages: 217

Cousinhub

XLDnaute Barbatruc
Re : Formule matricielle en VBA

Re-,

essaie avec : Réf = "R6C:R[-1]C"

Et pour la majuscule, effectivement, si VBE ne l'a pas mis en "nom propre" (1 ère lettre en majuscule), c'est que cela n'existe pas ou n'est pas possible dans ton cas
 

mécano41

XLDnaute Accro
Re : Formule matricielle en VBA

En fait, j'ai mis :

Réf = "R" & DébutTableau.Row & "C:R[-1]C" car la ligne n'est pas toujours la 6ème. Cela fonctionne et c'est simple !

Encore merci !

Pour l'autre point, je n'ai pas retrouvé, il faut donc que je fasse vérifier...mon cerveau :mad: !

Cordialement
 

Discussions similaires