Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1362 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

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

n°2032579
gooopil
pfiew
Posté le 27-10-2010 à 15:41:24  profilanswer
 

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
mood
Publicité
Posté le 27-10-2010 à 15:41:24  profilanswer
 

n°2032586
olivthill
Posté le 27-10-2010 à 16:18:45  profilanswer
 

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

n°2032589
gooopil
pfiew
Posté le 27-10-2010 à 16:23:27  profilanswer
 

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

n°2032600
dje69r
Arme de distraction massive
Posté le 27-10-2010 à 16:50:27  profilanswer
 

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 dje69r le 27-10-2010 à 16:50:44

---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2032606
gooopil
pfiew
Posté le 27-10-2010 à 17:06:10  profilanswer
 

dje69r 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" )

n°2032607
dje69r
Arme de distraction massive
Posté le 27-10-2010 à 17:13:38  profilanswer
 

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


---------------
Plus tu pédales moins vite, moins tu avances plus vite — SuperLoustic ! La radio des Loustics !
n°2032610
gooopil
pfiew
Posté le 27-10-2010 à 17:18:11  profilanswer
 

dje69r 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
n°2032618
Xxxaaavvv
Posté le 27-10-2010 à 17:51:25  profilanswer
 

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
n°2033557
gooopil
pfiew
Posté le 02-11-2010 à 12:06:07  profilanswer
 

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 !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

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

 

Sujets relatifs
Problème POO et execution de fonction[VBA]modifier point d'entrée du programme [Resolu]
programmation en VBA[VBA] Support d'apprentissage
Fonction ok sous ie6 mais ne fonctionne pas sous firefoxVBA Excel CheckBox
[RESOLU]Créer une listbox à partir d'un recordsetVBA Excel - concatener en fonction d'un Tag
Access VBA cellule vide avec IF et Then (marche pas ?) 
Plus de sujets relatifs à : [VBA] Créer une fonction utilisée en tant que formule


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR