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

Fonctions VBA renvoyant des tableaux dans Excel

  • Initiateur de la discussion Initiateur de la discussion phil_75
  • 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 !

phil_75

XLDnaute Nouveau
Bonjour

J'ai essayé de chercher sur le forum la réponse à la question suivante, sans succès : j'aimerais créer des fonctions VBA qui renvoient des tableaux dans les feuilles excel et remplissent des plages de cellules.

Un exemple : si j'ai une matrice 2*2 dans la plage A1:B2, j'aimerais créer une fonction par exemple MonInverse en VBA, et j'écris quelque chose comme '{=MonInverse(A1:B2)}' dans la plage A4:B5 et magie, l'inverse de la matrice s'affiche. Peut-être même mieux : j'écris dans la case A4 '=MonInverse(A1:B2)' et la plage A4:B5 reçoit l'inverse de la matrice.

L'idée serait ensuite de faire des traitements plus personnalisés sur des tableaux, mais l'esprit restera le même...
J'arrive déjà à effectuer ce genre d'opération via des sub's VBA, mais je trouve que c'est beaucoup moins souple que des formules à écrire directement dans Excel.

Est ce que quelqu'un à une idée sur la question ? Est-ce possible ?

Merci pour vos réponses.
 
Re : Fonctions VBA renvoyant des tableaux dans Excel

En fait ce que j'aimerais ça serait plutôt créer ma propre fonction similaire à INVERSEMAT... si par exemple je veux afficher la trigonalisation d'une matrice ? Il n'y a pas de fonction Excel qui fait cela à ma connaissance. Et donc j'amerais le faire en VBA, mais garder la possibilité de l'appeler dans la barre de formule Excel.
Merci !
 
Re : Fonctions VBA renvoyant des tableaux dans Excel

Salut Phil, Jacques,

Pourquoi je ne suis pas étonné de voir mon ami Jacques sur ce fil ?
L'an dernier, j'ai fais durant ma maitrise, des programmes sous R qui servaient lors de calcul des coefficient de régression linéaire.
Si tu veux, je peux t'envoyer les programmes que je pense ne sont pas tres difficile a adapter en vba. J'ai le calcul de la transposé, du déterminant et de l'inverse.

Si ca t'interesse, tiens moi au courant,

@+
 
Re : Fonctions VBA renvoyant des tableaux dans Excel

Le problème ne réside pas dans la partie "calcul" (je l'ai déjà faite).
Ce que j'aimerais maintenant c'est une 'function' (et non sub), qui prend comme argument un range et renvoie un autre tableau directement dans la feuille Excel.

Si par exemple je déclare une fonction Function Tableau(source As Excel.Range) As Excel.Range, j'aimerais l'utiliser directement dans la barre de formule d'Excel et faire en sorte que le range en sortie soit directement collé dans la feuille (comme pour la fonction INVERSEMAT).

J'arrive sans problème à utiliser des fonctions VBA qui renvoient des nombres dans Excel, par contre dès que ça renvoie un tableau, ça marche plus...
 
Re : Fonctions VBA renvoyant des tableaux dans Excel

Bien, finalement voilà ce que j'ai trouvé sur internet, après d'autres recherches :

"Par contre, dans le code d'une fonction personnalisée, vous ne pouvez pas sélectionner/modifier des cellules/feuilles autres, vous pouvez juste calculer une valeur pour la cellule en cours."
"Excel verrouille toute possibilité de modifier quoi que ce soit dans le classeur quand il est en cours de calcul, pour éviter que les modifications perturbent l'ordre de recalcul entre les cellules."
(vu sur Ce site n'existe plus)

Il va peut-être falloir que je revoie mes objectifs à la baisse...
 
- 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
9
Affichages
1 K
Réponses
7
Affichages
996
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…