Insérer variables de type single dans formules matricielles [RESOLU]

ImNotAGeeK

XLDnaute Nouveau
Bonjour à tous,

Je rencontre un soucis dans la "macrotisation" d'une formule matriciell excel 2007. Voici tous d'abord la formule:
=PETITE.VALEUR(SI((Datas!$F$4:$F$1326=5)*(Datas!$I$4:$I$1326>'J-1'!$G$10)=1;Datas!$I$4:$I$1326);2)

Elle fonctionne très bien et me renvoie la valeur souhaitée. Seulement, les caractères en gras peuvent prendre beaucoup de valeurs différentes et je veux donc créer une macro qui me sorte un tableau regroupant toutes mes valeurs.

Je créé donc une macro VBA dans laquelle je déclare 3 variables: 2 comme INTEGER (ic et b) car ce sont toujours des entiers et 1 single (lim) car c'est un chiffre à virgule. Ma formule ci dessus transformée pour VBA devient:

Code:
Sheets("J-1").Range("AM1").Offset(DernLigne, c).FormulaArray = "=SMALL(IF((Datas!$F$4:$F$1326=" & ic & ")*(Datas!$I$4:$I$1326>" & lim & ")=1,Datas!$I$4:$I$1326)," & b & ")"

que j'ai inséré dans une boucle. Mais quand je lance ma macro, j,ai le message suivant: Erreur d'exécution 1004: Impossible de définir la propriété FormulaArray de la classe range.

Je n'est pas trouvé de réponse sur les divers forums excel et l'aide microsoft (Erreur d'exécution à l'aide de la propriété FormulaArray) atteste bien d'un problème mais qui ne s'applique pas à mon cas.

Après plusieurs tentatives, j'ai identifié que c'est la variable lim qui pose problème. Qu'elle soie déclarée en Single, double ou currency ne change rien et la macro me retourne le message d'erreur 1004. Mais si je la déclare en integer, plus de soucis d'exécution... mais je n'ai pas les bonnes valeurs!

J'ai aussi changé les options régionales (séparateur décimal avec un point et non une virgule) mais j'ai toujours le même soucis.

Enfin, je sais que cela est difficile de répondre sans que je donne de fichier, mais je suis en stage entreprise et le caractère confidentiel des certaines données de ce classeur m'empèche vous le communiquer.

Merci pour votre attention, et vos éventuelles réponses.
 
Dernière édition:

Pierrot93

XLDnaute Barbatruc
Re : Insérer variables de type single dans formules matricielles

Bonjour,

A tout hasard :
Code:
Sheets("J-1").Range("AM1").Offset(DernLigne, c).FormulaArray = "=SMALL(IF((Datas!$F$4:$F$1326=" & ic & ")*(Datas!$I$4:$I$1326>" & CDbl(lim) & ")=1,Datas!$I$4:$I$1326)," & b & ")"

Bon après midi
@+
 

ImNotAGeeK

XLDnaute Nouveau
Re : Insérer variables de type single dans formules matricielles

Re,

Voici le fichier en question. J'espère que je ne l'ai pas trop allégé pour la compréhension!

Encore merci.

Edit: dans VBA, comme indiqué plus haut, si on change la variable lim de integer à single, on retrouve l'erreur.
 

Pièces jointes

  • fichier_err1004.xlsm
    85.7 KB · Affichages: 39
Dernière édition:

eriiic

XLDnaute Barbatruc
Re : Insérer variables de type single dans formules matricielles

Bonjour,

tu as l'erreur avec ton fichier de test ?
Pas moi, ni avec Single, ni avec Double (vu que les cellules sont des Double, autant déclarer lim en Double et se passer du Cdbl)
Je ne pense à pas à une maj non faite vu que Pierrot a constaté l'erreur, bizarre...
eric
 

ImNotAGeeK

XLDnaute Nouveau
Re : Insérer variables de type single dans formules matricielles

Bonjour Eriiiiic,

Merci d'avoir tester mon fichier. Je te confirme que j'ai la même erreur sauf si la variable lim est déclarée en integer. Je suis sur un poste bureautique équipé d'excel 2007 et de winXP PRO. Je regarderais la version exact de excel si cela peut aider... mais demain car la journée est terminée! ;)

Bonne soirée.
 

Dranreb

XLDnaute Barbatruc
Re : Insérer variables de type single dans formules matricielles

Bonsoir.
Utilisez comme expression pour composer vos formules natives, c'est à dire A1 ou R1C1 mais non local :
VB:
Trim$(Str$(lim))
avec Dim Lim As Double évidemment
 
Dernière édition:

eriiic

XLDnaute Barbatruc
Re : Insérer variables de type single dans formules matricielles

Bonsoir,

pour info je suis sur 2010, windows7 64 bits.
Souvent les matricielles passent mieux si on les mets dans des noms calculés.
Pour ne pas mettre des dizaines de noms tu as déjà une partie commune, fonction de ic, qu'on peut mettre ainsi pour commencer (les noms test2 à test5 sont générés).
Des fois que ça aide sur 2007...
Sinon essayer sur le même principe pour chaque date (la formule bien qu'allégée reste complexe), mais ça fait autant de noms que de lignes.
Par ailleurs j'ai testé sur 2003, ça ne plante pas non plus chez moi (?).
eric
 

Pièces jointes

  • fichier_err1004_2.xlsm
    87.8 KB · Affichages: 35

ImNotAGeeK

XLDnaute Nouveau
Re : Insérer variables de type single dans formules matricielles

Bonjour messieurs,

Merci pour vos solutions, j'espère que ce n'est pas mon petit soucis qui vous a fait veiller jusqu'à 1h du matin!

J'ai testé vos propositions ce matin:

- Dranreb: Votre solution fonctionne parfaitement. J'avoue que j'ai du mal à comprendre pourquoi, j'ai même du mal à comprendre la fonction Trim utilisée dans mon cas! Je vais gratter tous ça!

- Eriiiic: Votre solution abouti à l'erreur 1004! J'immagine bien votre surprise en lisant cela! Je ne comprends pas pourquoi nos macros n'aboutissent pas au même résultat! Peut être l'OS: Je travaille sur win XP PRO SP version 5.1.2600 et Excel 2007 SP3 version12.0.6665.5003, le tout en 32 bits.

En tout cas, merci pour votre attention, mon problème est résolu!
 

Dranreb

XLDnaute Barbatruc
Re : Insérer variables de type single dans formules matricielles [RESOLU]

Les constantes numérique dans les formules natives doivent y être mises avec un point en guise de séparateur décimal, ce que fait la fonction Str$. Elle a juste l'inconvénient de rajouter un espace devant pour les nombres positifs, que la Trim$ enlève.
 

ImNotAGeeK

XLDnaute Nouveau
Re : Insérer variables de type single dans formules matricielles [RESOLU]

Le point, la virgule.... j'avais lu que cela pouvait poser problème, d'où ma tentative, sans succès, en changeant dans les options excel le séparateur de décimal. Merci pour l'explication!
 

Discussions similaires

Réponses
29
Affichages
917

Statistiques des forums

Discussions
312 196
Messages
2 086 099
Membres
103 116
dernier inscrit
kutobi87