Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Ecrire une fonction dans une cellule Excel par VBA;

  • Initiateur de la discussion Initiateur de la discussion PierreP
  • Date de début Date de début

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 !

PierreP

XLDnaute Nouveau
Bonjour à tous,

Je vous pose ma question après pas mal de recherche sur le net, voila (une partie..) de mon problème:
J'écris,par VBA, dans une cellule Excel la fonction suivante:
= IF( AND( (Simulation!R7C17 > 0), (Simulation!R7C16 > 0),( Fleet_test!R2C20 <= Simulation!R7C17)), Simulation!R7C16 + Fleet_test!R2C15, IF( AND( (Simulation!R7C17 > 0), (Simulation!R7C16 > 0),( Fleet_test!R2C20 > Simulation!R7C17)), Simulation!R7C16 + Fleet_test!R2C15 + Fleet_test!R2C20 - Simulation!R7C17, IF( AND( (Simulation!R7C17 > 0),(Simulation!R7C16 = 0),( Fleet_test!R2C20 <= Simulation!R7C17)), Fleet_test!R2C15 , IF( AND( (Simulation!R7C17 > 0), (Simulation!R7C16 = 0),( Fleet_test!R2C20 > Simulation!R7C17)), Fleet_test!R2C15 + Fleet_test!R2C20 - Simulation!R7C17, IF( AND( (Simulation!R7C17 = 0), (Simulation!R7C16 > 0)), Fleet_test!R2C15 + Simulation!R7C16, IF( AND( (Simulation!R7C17 = 0), (Simulation!R7C16 = 0)), Fleet_test!R2C15 + Fleet_test!R2C20 ))))))

Ceci qui correspond à 6 IF imbriqués. J'ai bien vérifié la limite d'excel est de 7 donc c'est bon.
Toutefois, à un autre endroit, j'écris un IF beaucoup plus simple et dans cette cellule, mon IF est traduit en SI et les virgules en point virgule alors que la méthode d'écriture est la même. Je pense donc qu'excel interprete mal ma fonction mais je ne vois pas pourquoi.

Merci de votre aide.

PierreP
 
Re : Ecrire une fonction dans une cellule Excel par VBA;

Si Excel reconnaissait bien ma formule comme fonction, il remplacerait ( à l'affichage en tous cas) le IF => SI, AND=> ET, ','=>';' et RC => LC.
 
Re : Ecrire une fonction dans une cellule Excel par VBA;

Merci pour votre test, de cette manière ça fonctionne chez moi aussi

Donc mon probleme ne vient pas de la...
En fait ma fonction est stockée dans un tableau de string 'mesFonctions' que je vais écrire dans un range:
range(A1:AX).formula = Application.transpose(mesFonctions())

Et dans ces condition ça ne fonctionne pas, alors que
range(A1).formula = mesfonctions(1) fonctionne...

Edit:
Ca a l'air d'etre Application.Transpose qui me pose problème, mais alors pourquoi?
 
Dernière édition:
Re : Ecrire une fonction dans une cellule Excel par VBA;

Re,
Pour aller plus loin, il faudrait joindre un fichier exemple, ta description ne me permet pas de comprendre exactement comment tu fais.
A+
 
Re : Ecrire une fonction dans une cellule Excel par VBA;

tout d'abord merci de ton aide.

Je ne peux pas posté d'exemple (pro...) mais je vais etre le plus précis possible:

Je crée un type qui contient un tableau de string (en VBA):

Public Type MonType
MyStringArray() as string
end type

Dans MyStringArray j'écris:
MyStringArray(1) = "MyFunction1"
MyStringArray(2) = "MyFunction2"
...

Dans feuille, je selectionne ensuite un range:
set MyRange = range( .cells(x,y), .cells(x + ubound(MonType.MyStringArray) -1 , y)

Et j'y mets mes fonctions:

MyRange.formulaArray = Application.Transpose(MonType.MyStringArray)

En faisant comme ça j'ai une erreur:
"Erreur Automation. L'objet Invoqué s'est déconnecté de ses clients."
 
Dernière édition:
Re : Ecrire une fonction dans une cellule Excel par VBA;

Re,
Désolé, je ne suis pas adepte des jeux de pistes (il suffit parfois d'une erreur de déclaration ou de dimentionnement, c'est pourquoi il faut un code complet)
Je ne peux rien faire de plus si tu ne peux pas joindre un petit exemple simplifié
A+
 
Re : Ecrire une fonction dans une cellule Excel par VBA;

Pas de soucis, je comprends bien le truc :/

J'ai fini par trouver un bout d'explication à force de trifouiller mon code:
Application.Transpose ne fonctionne pas si le nombre de caratere dans une case de mon tableau (tableau VBA j'entends) dépasse les 255...

Mais merci quand même!

Pierre
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…