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

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 !

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:
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
@+
 
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

Dernière édition:
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! 😉

Bonne soirée.
 
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:
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

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!
 
- 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
3
Affichages
582
Réponses
7
Affichages
795
Réponses
5
Affichages
562
  • Question Question
Microsoft 365 VBA sur outlook
Réponses
14
Affichages
1 K
Réponses
1
Affichages
1 K
Retour