[Function custom] création d'une fonction perso. bug pour son affichage

Bonjour toutes et tous,

J'ai voulu créer une fonction perso, mais, un problème subsiste sur cette fonction de mon côté, v.Excel 2016 Fr

Objet: création d'une fonction personnalisée j'ai un bug pour son affichage pour l'aide de cette fonction et de plus la fonction BISSEXTILE

Voici dans un Module1:

Option Explicit
' source : https://excel.quebec/excel-formules-et-fonctions/excel-fonction-personnalisee/

' test Andre13 pour création de cette fonction
'24/02/2021
' -----------------------------------------------------

Sub DescribeFunction()
' Permet d'ajouter une fonction personnalisée dans l'assistant de fonction
' et dans la catégorie de son choix.

Dim FuncName As String '   NEW il y avait 1 faute ici
Dim FuncDesc As String
Dim Category As String
Dim ArgDesc(1 To 1) As String

    FuncName = "BISSEXTILE"
    FuncDesc = "Trouve la plus proche année bissextile vers le futur"  'Description de la Fonction
    Category = 2 'Catégorie Date et Heure
    ArgDesc(1) = "Année pour laquelle une recherche est faite" 'Description du 1er argument

Application.MacroOptions _
Macro:=FuncName, _
Description:=FuncDesc, _
Category:=Category, _
ArgumentDescriptions:=ArgDesc
End Sub

Function BISSEXTILE(Annee As Integer) As Integer
'Trouve la plus proche année bissextile vers le futur

Dim varResteDivision As Double

    varResteDivision = Annee / 4 - WorksheetFunction.RoundDown(Annee / 4, 0)  '   NEW il y avait 1 faute ici

    Select Case varResteDivision
            Case 0 'C'est une année bissextile(varResteDivision = 0)
                BISSEXTILE = Annee
            Case 0.25 'Cela fait un an depuis la dernière année bissextile (varResteDivision =0.25)
                BISSEXTILE = Annee + 3
            Case 0.5 'Cela fait 2 ans depuis la dernière année bissextile (varResteDivision =0.5)
                BISSEXTILE = Annee + 2
            Case 0.75 'Cela fait 3 ans depuis la dernière année bissextile (varResteDivision =0.75)
                BISSEXTILE = Annee + 1
    End Select
End Function
  • aucune aide ne s'affiche sur cette fonction, même si je me dirige sur le ruban, (Formules, Date et Heure)
  • je l'a vois présente dans Fx personnalisé à côté de la barre de formule mais aucune réaction
  • Note: j'ai ôté l'Option Explicit sur la feuille 1 et dans le Module 1

merci d'avance pour votre aide, ceci ne presse pas !

ci-joint le classeur

crdlt,

André

Salut André !

Edit : Excuse-moi, j'ai répondu trop vite, à côté du problème... Je cherche en attendant.

A plus,

Merci 3GB

pas de soucis 3Gb et merci

j'ai vu peut-être qu'il fallait déclarer la fonction lors, de l'ouverture du classeur dans le ThisWorkbook à l'ouverture Workbook_Open

apparemment dans le ruban cela fonctionne correctement dans Formules, Date et Heure il apparaît BISSEXTILE, mais pétard le détour que cela fait, bizarre
Note: mais la fonction ne fonctionne pas encore grrr, je dois me tromper quelque part, grrr
Option Explicit

Private Sub Workbook_Open()
Application.MacroOptions Macro:="BISSEXTILE", Description:="Trouve la plus proche année bissextile vers le futur", Category:=2
End Sub
merci d'avance
zbissextiletest01

Note : trouve l'année la plus proche dans son future

2 petites erreurs trouvées : String et non Sting + WorksheetsFunction le s de trop

Re André,

J'ai essayé de le faire manuellement en reprenant ton lien (puis d'autres trouvés sur Internet disant la même chose) mais impossible d'arriver à quelque chose...

J'arrive seulement à mettre une description, notamment en faisant clic droit sur le code de la fonction/ Explorateurs d'objets/Clic droit sur le titre de la fonction/Propriété.

Mais je n'arrive pas à décrire les paramètres...

Est-ce que tu as essayé manuellement toi ?

Je vais essayer ton code pour voir s'il fonctionne.

Pour le code de la fonction, je t'en propose un autre (c'était ma réponse en fait que j'ai effacée) :

Function BISSEXTILE(Annee As Integer) As Integer
'Trouve la plus proche année bissextile vers le futur
dim estbiss as boolean 'variable booléenne permettant de tester si l'année est bissextile, par défaut sur False

do while estbiss = false 'tant que estbiss est false
    if Dateserial(Annee, 12, 31) - Dateserial(Annee, 1, 1) < 365 then 'si la différence entre les 2 extrémités de l'année est inférieure à 365 (donc si l'année compte moins de 366 jours)
        Annee = Annee + 1 'incrémentation Annee
    else 'sinon
        estbiss = true 'estbiss = true >> sortie boucle
    end if
loop
BISSEXTILE = Annee

End Function

Il est possible de l'écourter en se passant de la variable estbiss.

Ici, l'avantage c'est que cela comprend toutes les années bissextiles (parce qu'il existe des années multiples de 4 qui ne sont pas bissextiles > les années multiples de 100 sauf celles multiples de 400)...

Sinon, je ne vois pas pourquoi ça ne marche pas... En C2, tu es sûr d'avoir un nombre ?

Cdlt,

J'ai pas vu que tu avais trouvé...

Est-ce que tu as la description alors ?

Edit : Avec la macro, ça marche chez moi ! Merci beaucoup, c'est génial ! C'est étonnant que je n'y arrive pas manuellement...

A plus,

Re,

merci 3Gb, je vais opté pour ta fonction @ toi lol

oui sur la cellule C5 s'était bien le format de cellule en nombre,

je me suis aperçu de 2 grosses fautes j'ai rectifié sur le 1er post de ce fil de discussion, s'était la variable String, j'avais oublier de mettre le 'r' de string, et l'autre erreur le WorksheetsFunction le s de trop, tout les deux mal orthographiés ce qui, faisait que BISSEXTILE la formule n'était pas opérationnelle donc faussé

j'ai réussi cela affiche bien l'année future la plus proche pour BISSEXTILE

une ch'tite capture d'écran, le classeur test003 ci-joint du post précédent est ok

merci@toi, je vais faire ta fonction personnalisé ^^ et te tiens au courant

zoki

crdlt,

André

Merci André ! Oui, j'obtiens bien ce résultat avec ton code ! J'aurais voulu le faire à la main (pour savoir le faire sans utiliser la macro sur tous les fichiers)... Mais tant pis, j'essaierais de retenir application.macrooptions .

A bientôt,

bonsoir,

Ici, l'avantage c'est que cela comprend toutes les années bissextiles (parce qu'il existe des années multiples de 4 qui ne sont pas bissextiles > les années multiples de 100 sauf celles multiples de 400)...

y compris l'erreur d'avoir volontairement considéré que 1900 est une année bissextile pour rester compatible avec lotus 123.

Salut h2so4 !

Ah, je ne savais pas, je suis allé regardé à l'instant (ce ne sont pas des années que j'utilise souvent^^).

Merci à toi !

Cdlt,

Re,

coucou et merci H2so4 pour l'information 1900

@tous

petite précision, cette fonction personnalisée BISSEXTILE, classeur ci-dessus Test003

Il se peut qu'une fois le classeur fermé puis lors de la création d'un nouveau classeur Excel, sur cette fonction personnalisé vous puissiez voir ' BISSEXTILE-v1.0-Function-test003--ok dans Formule, Date et Heure à la place de BISSEXTILE, ne pas s'alarmer!

DESINSTALLATION de cette fonction manuellement : pour effectuer sa désinstallation voir dans le Ruban : Options Excel, menu de droite, Personnalisé le Ruban, puis à droite à la liste déroulante choisir Onglets Principaux, cliquer sur le signe + de Formules puis, Bibliothèque de Fonctions cliquer sur le signe + de DateHeure et Réinitialisations puis Ok

Note: il faudra fermer le classeur et rouvrir un classeur vierge pour que cela prenne effet, afin de vérifier si cela à fonctionner allez sur le menu du ruban, Formules et vérifier Date et Heure si il n'y a plus BISSEXTILE c'est oki

J'ai un peu galéré

crdlt,

André

ztext7 zokkii

Merci André pour cette précision ! C'est pratique ça : on se donne du mal à créer des fonctions perso et Excel les personnalise finalement à notre place...

Rechercher des sujets similaires à "function custom creation fonction perso bug affichage"