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