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.
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.
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
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!
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
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!
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.
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!