[VBA] Créer une fonction utilisée en tant que formule

Créer une fonction utilisée en tant que formule [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 27-10-2010 à 15:41:24    

Hello,  
 
J'ai besoin d'une nouvelle formule donc je fais ce qui suis :
 

Code :
  1. Public Function BLABLA(TextCheck As Range, Optional MaxLength As Integer = 0) As String
  2. ...
  3. BLABLA = résultat du calcul
  4. End Function


 
Deux problèmes :
- Comment insérer des commentaires comme sur les formules existantes d'Excel pour donner un résumé de l'utilité de la fonction et que les noms des paramètres apparaissent quand on tape la formule dans Excel ?
- Lorsque j'utilise la formule en mettant par exemple "=BLABLA(A1)" dans B1, tout fonctionne, mais quand je modifie A1, le résultat est bien changé, mais l'appel de formule disparait. C'est à dire que B1, au lieu de contenir toujours "=BLABLA(A1)" et d'afficher le nouveau résultat, semble contenir directement le résultat. Je dis bien semble, car dans la barre de formule, c'est bien le résultat qui apparait et plus l'appel de formule, mais si je change A1, B1 est bien mis à jour. En soit ce n'est pas si grave, mais ce n'est pas clair car en parcourant le tableau, on ne visualise pas directement que cette cellule est le résulat d'un calcul puisque la formule n'apparait pas...
 
Merci :)


Message édité par gooopil le 27-10-2010 à 15:47:42
Reply

Marsh Posté le 27-10-2010 à 15:41:24   

Reply

Marsh Posté le 27-10-2010 à 16:18:45    

Pour mettre un commentaire depuis le VBA, par exemple dans la cellule G31 :

   Range("G31" ).Comment.Visible = False
    Range("G31" ).Comment.Text Text:="Titre du commentaire:" & Chr(10) & "Voici un commentaire" & Chr(10) & "Derniere ligne"


Pour mettre une formule depuis le VBA, par exemple, pour mettre la moyenne des celulles A1 à A5 dans la cellule A6 :  

 Range("A6" ).Formula = "=AVERAGE(A1:A5)"  
  Range("A6" ).Calculate

Reply

Marsh Posté le 27-10-2010 à 16:23:27    

olivthill a écrit :

Pour mettre un commentaire depuis le VBA, par exemple dans la cellule G31 :

   Range("G31" ).Comment.Visible = False
    Range("G31" ).Comment.Text Text:="Titre du commentaire:" & Chr(10) & "Voici un commentaire" & Chr(10) & "Derniere ligne"


Pour mettre une formule depuis le VBA, par exemple, pour mettre la moyenne des celulles A1 à A5 dans la cellule A6 :  

 Range("A6" ).Formula = "=AVERAGE(A1:A5)"  
  Range("A6" ).Calculate



100% à côté de la question, mais merci quand même :d
 
(Peut-être mal formulée la question certes ;) )
 
- Les "commentaires", c'est pour utiliser quand tu tapes ta formule, Excel te décrit l'utilité de la formule, et t'indique les paramètres
- L'insertion de la formule se fait à partir d'Excel, en tapant =BLABLA(....), pas à partir de VBA. Le problème c'est qu'après modification de la cellule "observée" par la formule, l'appel de la formule disparait visuellement de la cellule (et visuellement seulement puisqu'elle contenu à se mettre à jour quand la cellule observée est modifiée

Reply

Marsh Posté le 27-10-2010 à 16:50:27    

Hello
 
Non tu ne peux pas mettre de commentaire pour tes arguments de fonctions. (Je ne sais plus depuis quelle version)
 
Quelle version d'Excel ? Car de 2000 à 2007 j'ai toujours ma formule que j'ai tapé... =MaFormule(Arguments)
Ou alors ta fonction mets le resultat dans la cellule et non plus la fonction elle meme ?

Message cité 1 fois
Message édité par SuppotDeSaTante le 27-10-2010 à 16:50:44

---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 27-10-2010 à 17:06:10    

SuppotDeSaTante a écrit :

Hello
 
Non tu ne peux pas mettre de commentaire pour tes arguments de fonctions. (Je ne sais plus depuis quelle version)
 
Quelle version d'Excel ? Car de 2000 à 2007 j'ai toujours ma formule que j'ai tapé... =MaFormule(Arguments)
Ou alors ta fonction mets le resultat dans la cellule et non plus la fonction elle meme ?


Dommage pour les commentaires, c'est pas essentiel, mais quand meme pratique...
 
C'est sur du 2010, j'essayerai sur une ancienne version tiens. Ma fonction fait ce que j'ai indiqué dans l'extrait de code, elle ne touche pas à la valeur de la cellule directement, c'est juste un retour (BLABLA = "résultat" )

Reply

Marsh Posté le 27-10-2010 à 17:13:38    

Pas essayé sous 2010
 
Pour tes commentaires, il y a en fait une solution "bidouille"
 
Quand tu as tapé le nom de ta fonction et que tu ouvres la parenthese, tu as la possibilité de faire :
- Ctrl + A : Ca ouvre la boite de dialogue d'aide a la saisie d'arguments de fonctions
- Ctrl + Shift + A : Affiche les arguments sous forme d'info bulle. Comme tu le demandes en fait.
 
A voir si avec du code type SendKeys "^+(A)" sur un Change de cellule le fait...


---------------
Soyez malin, louez entre voisins !
Reply

Marsh Posté le 27-10-2010 à 17:18:11    

SuppotDeSaTante a écrit :

Pas essayé sous 2010

 

Pour tes commentaires, il y a en fait une solution "bidouille"

 

Quand tu as tapé le nom de ta fonction et que tu ouvres la parenthese, tu as la possibilité de faire :
- Ctrl + A : Ca ouvre la boite de dialogue d'aide a la saisie d'arguments de fonctions
- Ctrl + Shift + A : Affiche les arguments sous forme d'info bulle. Comme tu le demandes en fait.

 

A voir si avec du code type SendKeys "^+(A)" sur un Change de cellule le fait...


Hum je vais explorer ton idée, mais pour faire ça faut que j'aille changer la feuille de travail (je vais juste distribuer un xlam en fait, il faut surtout pas que je touche aux fichiers où la fonction serait utilisée)
Dommage qu'ils aient pas pensé à ça directement ;)


Message édité par gooopil le 27-10-2010 à 17:18:17
Reply

Marsh Posté le 27-10-2010 à 17:51:25    

De mémoire, c'était pas possible :D
(de toucher à la description de la formule faites en VBA)
 
Mais je confond peut être
en tout cas il y a déjà eu un sujet la dessus, faut fouiller.
 
Edit, peut être par la :D
http://forum.hardware.fr/hfr/Progr [...] 0033_1.htm

Message cité 1 fois
Message édité par Xxxaaavvv le 27-10-2010 à 18:06:46
Reply

Marsh Posté le 02-11-2010 à 12:06:07    

Xxxaaavvv a écrit :

De mémoire, c'était pas possible :D
(de toucher à la description de la formule faites en VBA)
 
Mais je confond peut être
en tout cas il y a déjà eu un sujet la dessus, faut fouiller.
 
Edit, peut être par la :D
http://forum.hardware.fr/hfr/Progr [...] 0033_1.htm


Hum ça me semblait plutôt intéressant, mais quand j'entre une description et que je clique sur OK, quand je reviens dans la fenêtre propriétés, la description que j'ai tapée a disparu... Dommage ^^
 
Pour l'histoire de l'appel de fonction qui disparaissait, entre la semaine dernière et aujourd'hui, je suis incapable de reproduire le problème, donc on va dire qu'il n'y a plus de problème ^^
 
Merci pour les tentatives de réponse en tout cas !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed