Autres code macrodescriptions qui ne fonctionne pas

patricktoulon

XLDnaute Barbatruc
Bonjour
il y aurait quelqu'un qui saurait ce qui ne va pas dans mon code pour la macroptions
VB:
Sub descript()

    Application.MacroOptions _
            Macro:="DicoAndCountOrder4", _
            Description:="fonction dictionnaire en formule Developed by Patricktoulon 03/01/2022", _
            Category:=8, _
            ArgumentDescriptions:=Array( _
                                  "1° Adresse de la colonne à trier", _
                                  "2° 1= trier  les chaines  2=trier par le nombre d'occurences", _
                                  "3° 1=tri décroissant  2=tri croissant")


End Sub
?
 
Solution
Bonjour a tous
tout d’abord
@eriiic
J'avais déjà remarqué que seule la description du 1er argument s'affichait.
Comme s'il ne connaissait pas les tableaux, ou du moins ne prenais en compte que la 1ère valeur. Sans doute un bug
c'est pas tout a fait ça
en fait il n'accepte que 4 items (le tout faisant 255 caracteres max) meme si la fonction à enegistrer en possede plus (c'est malheureusement le defaut)

bon alors après avoir essayé plein de trucs
je suis parvenu à quelques chose de correct

pour l'exemple je crée 2 fonctions bidons

VB:
Function mafonction(a, b, c, d, e, f, g, h)
mafonction = a + b + c + d + e + f + g + h
End Function

Function mafonction2(a, b, c)
mafonction = a + b + c
End Function
...

Phil69970

XLDnaute Barbatruc
Bonjour Patrick

Je sais pas si cela peux t'aider

Mais dans l'aide j'ai vu ça.....

1644097379796.png


@Phil69970
 

Phil69970

XLDnaute Barbatruc
Re

Dans excel chez moi il y a un truc bizarre

Sub descript()

Application.MacroOptions _
macro:="DicoAndCountOrder4", _
Description:="fonction dictionnaire en formule Developed by Patricktoulon 03/01/2022", _
Category:=8, _
argumentDescriptions:=Array( _
"1° Adresse de la colonne à trier", _
"2° 1= trier les chaines 2=trier par le nombre d'occurences", _
"3° 1=tri décroissant 2=tri croissant")


End Sub
J'ai 2 paramètres qui ne sont pas reconnus par excel

@Phil69970
 

patricktoulon

XLDnaute Barbatruc
oui quand ça marche les deux derniers paramètres ne sont pas pris c'est bizarre
j'ai trouvé un palliatif mais je sais pas si c'est bon de faire comme ça
je suis limite en nombre de caractères
VB:
Sub descript()

    Application.MacroOptions _
            Macro:="DicoAndCountOrder4", _
            Description:="Developed by Patricktoulon 03/01/2022" & vbCrLf & vbCrLf & _
                         "Argument 1 : plage de cellule à trier(doit etre une colonne)" & vbCrLf & vbCrLf & _
                         "Argument 2 : trier  1 pour trier les chaines  et 2 pour trier par les nombres d'occurences" & vbCrLf & vbCrLf & _
                         "Argument 3 : 1 pour décroissant 2 pour croissant", _
                         Category:="personnalisées"
                      
                      

End Sub
 

patricktoulon

XLDnaute Barbatruc
Bonjour a tous
tout d’abord
@eriiic
J'avais déjà remarqué que seule la description du 1er argument s'affichait.
Comme s'il ne connaissait pas les tableaux, ou du moins ne prenais en compte que la 1ère valeur. Sans doute un bug
c'est pas tout a fait ça
en fait il n'accepte que 4 items (le tout faisant 255 caracteres max) meme si la fonction à enegistrer en possede plus (c'est malheureusement le defaut)

bon alors après avoir essayé plein de trucs
je suis parvenu à quelques chose de correct

pour l'exemple je crée 2 fonctions bidons

VB:
Function mafonction(a, b, c, d, e, f, g, h)
mafonction = a + b + c + d + e + f + g + h
End Function

Function mafonction2(a, b, c)
mafonction = a + b + c
End Function


la fonction pour enregistrer
VB:
Private Function resister_macroption(Funct_Name$, Funct_description$, Optional argumtsArray As Variant = "")
    If Not IsArray(argumtsArray) Then argumtsArray = Array("-")
    Application.MacroOptions Macro:=Funct_Name, _
                             Description:=Mid(Funct_description, 1, 255), _
                             ArgumentDescriptions:=argumtsArray, _
                             Category:="personnalisée"
End Function

la fonction pour la supprimer
en fait il suffit de vider les éléments de la fonction dans son enregistrement
VB:
Private Function Unregister_macroptions(Fname$)
    Application.MacroOptions Macro:=Fname, Description:=Empty, Category:=Empty
End Function

en premier test je merge la description avec les arguments (qui accepte 255 caractères sur 5 lignes max)
avec les arguments j'ai donc 5 lignes de description au lieu de 4 dans l'array argumentdescription
VB:
Sub testregisterMethode_1()
    Dim Funct_Name As String, Funct_description As String, argumtsArray

    Funct_Name = "mafonction"
    Funct_description = "fonction perso"


    argumtsArray = Array("Argmts 1 blablablablablablablablablablabla", _
                         "Argmts 2 balblabblablablablablablablablabla", _
                         "Argmts 3 balblablablablablablablablablablabl", _
                         "Argmts 4 balblablablablaablablaablablaablabla", _
                         "Argmts 5 balblblablablablblablablablablablala")
   
    'je joint les arguments a la description (255 caracteres Maxi)
    Funct_description = Funct_description & vbCrLf & Join(argumtsArray, vbCrLf)
   
    'appel  la sub pour enregistrer avec les arguments
    resister_macroption Funct_Name, Funct_description
End Sub

résultat

demo2.gif



Maintenant remettons les arguments a leur place

VB:
Sub testregisterMethode_2()
    Dim Funct_Name As String, Funct_description As String, argumtsArray

    Funct_Name = "mafonction"
    Funct_description = "fonction perso blablabla" & vbCrLf & "blablablablabla" '(max 255 caracteres)


    argumtsArray = Array("Argmts 1 blablablablablablablablablablabla", _
                         "Argmts 2 balblabblablablablablablablablabla", _
                         "Argmts 3 balblablablablablablablablablablabl", _
                         "Argmts 4 balblablablablaablablaablablaablabla", _
                         "Argmts 5 balblblablablablblablablablablablala")
   
     
    'appel  la sub pour enregistrer
    resister_macroption Funct_Name, Funct_description, argumtsArray
End Sub

résultat

demo2.gif



voyons maintenant quand la fonction possède seulement 3 arguments au lieu de 8 comme la précédente

là on vois que je ne peux pas descendre ou monter pour lire les description d'argument (je n'ai plus la scroll en haut à droite
1644141548645.png



pour supprimer les descriptions dans la liste des fonctions
VB:
Sub supprimermafonction()
    Unregister_macroptions ("mafonction")
End Sub
Sub supprimermafonction2()
    Unregister_macroptions ("mafonction2")
End Sub
 

eriiic

XLDnaute Barbatruc
Bonjour,

Ah, ok. La description disparait aussi à la fermeture du fichier.

J'avais déjà remarqué que seule la description du 1er argument s'affichait.
Comme s'il ne connaissait pas les tableaux, ou du moins ne prenais en compte que la 1ère valeur. Sans doute un bug
c'est pas tout a fait ça
Effectivement.
En fait une seule description s'affiche, celle de l'argument en cours d'édition.
Pas besoin de scroll qui n'est là qu'à cause de la limitation à 5 arg. affichés,
Cliquer dedans pour avoir la description de l'argument voulu.
eric
 

laurent950

XLDnaute Barbatruc
Bonjour @patricktoulon

Conformément à ton poste 1 voici la solution ci-dessous :

VB:
Sub descript()
Dim FuncName As String ' ........................................ Nom de la fonction
    FuncName = "DicoAndCountOrder4"
Dim FuncDesc As String ' ........................................ Description de la fonction
    FuncDesc = "fonction dictionnaire en formule Developed by Patricktoulon 03/01/2022"
Dim Category As String ' .........................................Categorie de la fonction ici personnalisé
    Category = 11
Dim ArgDecr(1 To 3) As String ' ................................. Tableau des descriptions des arguments de la fonction
    ArgDecr(1) = "1° Adresse de la colonne à trier"
    ArgDecr(2) = "2° 1= trier  les chaines  2=trier par le nombre d'occurences"
    ArgDecr(3) = "3° 1=tri décroissant  2=tri croissant"
Application.MacroOptions _
Macro:=FuncName, _
Description:=FuncDesc, _
Category:=Category, _
argumentdescriptions:=ArgDecr
End Sub
 

Discussions similaires

Réponses
4
Affichages
1 K
Réponses
0
Affichages
1 K

Statistiques des forums

Discussions
315 096
Messages
2 116 175
Membres
112 677
dernier inscrit
Justine11