Dde de précisions sur les fonctions
Bonjour,
J'ai "piqué" une fonction qui supprime les formats particuliers d'une chaîne.
je voudrais pouvoir y avoir accès régulièrement ; je l'ai positionnée dans mon fichier personnel qui est actif à l'ouverture d'excel, pourtant sur le classeur 1 si je tape = MajS..., elle n'apparait pas dans le menu des fonctions...
J'ai cherché dans mes bouquins et sur la toile à partir de "Portée", "Visibilité", mais je ne trouve rien
autre question svp :
J'ai également mis cette fonction dans le classeur sur lequel je travaille actuellement, dans un module.
Or si je ne la désactive pas (Commenter Bloc), le pas à pas ne fonctionne pas, c'est à dire que même si je suis dans un autre module, dans une procédure qui n'utilise pas la fonction, le pas à pas "entre" dans la fonction et donc n'en ressort pas.
Au cas où vous penseriez que cela vient de la fonction, je la joins :
Function MajSansAccent$(ByVal Chaine$)
'$ = string
Const VAccent = "àáâãäåéêëèìíîïðòóôõöùúûü-'", VSsAccent = "aaaaaaeeeeiiiioooooouuuu "
Dim Bcle As Long
If Len(Chaine) > 0 Then 'Len fonction (Long) renvoie le nb de caractères
For Bcle = 1 To Len(VAccent)
Chaine = Replace(Chaine, Mid(VAccent, Bcle, 1), Mid(VSsAccent, Bcle, 1))
Next Bcle
MajSansAccent = UCase(Chaine)
End If
End FunctionMerci de bien vouloir m'éclairer
Bonjour,
Normalement la fonction est visible dans la boite de dialogue Fonctions : rubrique Personnalisées (tout en bas, à la fin)
Si elle n'est pas visible, c'est que tu ne l'as pas mis dans un module standard (Module1)
Il n'y a aucune raison que le pas à pas entre dans une fonction (surtout quand il n'y est pas invité !
Quand bien même il y entrerait, il n'y a aucune raison qu'il n'en ressorte pas !
A+
Bonjour Galopin,
Merci de bien vouloir m'aider.
Effectivment, je l'ai mise dans un module standard (Module1) de mon fichier, effectivement aussi, si je passe par le menu Inserer une fonction / personnalisée, je vois PERSONAL.XLB!MajSansAccent().
mais quand je suis dans mon fichier de travail (ou la fonction existe aussi), sur toutes mes feuilles, si je tape =majs, la fonction m'est proposée sans passer par un menu..., comme si je tape =si, Excel propose la fonction de condition
C'est ce que je voudrais avoir sur tout nouveau fichier. Que dois-je faire pour cela ?
galopin01 a écrit :Il n'y a aucune raison que le pas à pas entre dans une fonction (surtout quand il n'y est pas invité !
Quand bien même il y entrerait, il n'y a aucune raison qu'il n'en ressorte pas !
Pourtant, je confirme, ce matin, j'ai créé une nouvelle procédure pour créer un onglet, j'ai fait F8, mon onglet s'est créé et la ligne Pas à Pas est venue se positionner dans la fonction, puis elle boucle sur les lignes :
Chaine = Replace(Chaine, Mid(VAccent, Bcle, 1), Mid(VSsAccent, Bcle, 1))
Next Bcle. si je déplace le pas à pas sur End Function, il repart à Function et non sur ma procédure en cours.
NB: si je lance ma procédure par F5 ou un bouton, pas de soucis avec la fonction.
Mais je débute et j'use beaucoup du pas à pas...
As-tu essayé cette fonction ?
Bonjour,
Si la fonction s'invite sans avoir été appelée expressément, je suppose que qu'il doit y avoir une procédure évènementielle qui s'insinue sournoisement...
Mais comme je ne comprend pas trop tes explications donc je ne peux rien te proposer.
Evite d'utiliser F8 à propos de tout et de rien : Inutile de repasser à chaque fois sur une fonction dont on sait pertinemment qu'elle est correcte... Pour "sauter" la fonction (avant d'entrer dedans) utilise Maj+F8 qui ne parcourt que la macro principale...
Donc je ne peut que confirmer ma réponse précédente.
Remarque : Si vous voulez utiliser des fonctions ou des macros sur plusieurs classeurs, faites les choses correctement : utilisez un (ou des) classeurs de macros complémentaires.
J'ai dit et redit je ne sais combien de fois sur ce forum que PERSONAL.XLSB ne ressemble à rien : c'est une ineptie. Donc je me refuse à examiner les conséquences de cette construction. Ça ne solutionnera sans doute pas le problème actuel, mais il y aura au moins une brique solide...
A+
Bonjour à tous,
Effectivment, je l'ai mise dans un module standard (Module1) de mon fichier, effectivement aussi, si je passe par le menu Inserer une fonction / personnalisée, je vois PERSONAL.XLB!MajSansAccent().
mais quand je suis dans mon fichier de travail ([u]ou la fonction existe aussi[/u]), sur toutes mes feuilles, si je tape =majs, la fonction m'est proposée sans passer par un menu...La boite de dialogue affiche toujours le nom du fichier si la fonction personnalisée n'est pas dans le classeur actif.
Or si je ne la désactive pas (Commenter Bloc), le pas à pas ne fonctionne pas, c'est à dire que même si je suis dans un autre module, dans une procédure qui n'utilise pas la fonction, le pas à pas "entre" dans la fonction et donc n'en ressort pas.C'est plutôt qu'il fonctionne bien.
Pour une raison x ta fonction est ré-évaluée et le pas-à-pas se fait également dessus.
Si tu l'as d'inscrite 150 fois et bien il la passera 150 fois.
J'ai déjà constaté des ré-évaluations intempestives car la fonction n'était pas volatile et ses arguments n'avaient pas évolués, sans pouvoir l'expliquer. Pas sûr qu'excel gère très bien les fonctions personnalisées sur plusieurs classeurs (?)
eric
Bonjour Eric,
Merci pour ta réponse, donc si j'ai bien compris, je dois vivre avec !
Alors vivons !
Tant pis
Bonjour,
La programmation (même avec Excel) n'est pas une loterie.
Je viens de tester (avec F8) la fonction avec une douzaine d'occurrences ou elle pourrait se déclencher or elle ne le fait qu'une seule fois au moment ou l'exécution de la macro l'exige et quand je lance une macro ou elle n'a aucune incidence., et bien la fonction ne se manifeste pas du tout...
Donc fait un peu le ménage dans ton code et tout se passera bien.
A+