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

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
Re

Dans excel chez moi il y a un truc bizarre

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
 

eriiic

XLDnaute Barbatruc
Bonjour,

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
eric
 

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




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




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



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.

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
 

patricktoulon

XLDnaute Barbatruc
re
oui la description n'est visible dans la liste que dans le classeur de la function àmoins que le classeur de la dite fonction soit ouvert là on le vois sous cette forme dans la liste


et le formulaire de la fonction


 

laurent950

XLDnaute Accro
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
 

patricktoulon

XLDnaute Barbatruc
merci @laurent950
mais j'avais trouvé mon bonheur déjà
et dans la mienne je met une sécurité au cas ou un caractères espace ou saut de ligne en trop ne me fasse pas planter le truc
dans la tienne donc
Description:=mid(FuncDesc,1,255), _
le texte sera donc tronqué si il est trop grand
 

Discussions similaires

Réponses
4
Affichages
1 K
Réponses
0
Affichages
1 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…