VBA - créer une fonction avec 2 ou + choix possibles comme paramètres

Hello le forum,

C'est la seconde fois que je passe de ce côté de l'écran pour rédiger une demande d'aide :)

J'avoue avoir diggé un peu pour trouver des réponses ou répondre à cette question par moi-même, en vain : mes excuses donc s'il s'agit d'un doublon! Je supprimerai sans souci

Ma question, donc :

Je suis en train d'écrire une courte fonction pour interroger le nom d'un fichier et contrôler si la date renseignée dans le nom du fichier correspond avec le jour du traitement souhaité. "JMZero" sert simplement à ajouter un 0 si le jour ou mois est un nombre à 1 chiffre.

Je cherche seulement à donner la possibilité de passer une liste d'arguments possible finie à "TypeFile" : ".csv", ".zip", etc, de sorte à ce que lorsque l'on saisit la fonction, la liste déroulante s'ouvre pour suggérer les options possibles. Je ne sais pas si j'ai été clair, mais l'exemple le plus simple serait par ex lors d'une recherche V : =RechercheV(Val cherché, Plage de donnée, N° de colonne, puis : 0 = valeur exacte ou 1 = valeur approximative)

Merci 1000x par avance!

Public Function EcartDateW(StrFile As String, typeFile As Variant) As Boolean
Dim Calc1, Calc2
Dim DateW As Date

DateW = CDate(ThisWorkbook.Sheets("PARAM").Range("E2").Value)

Select Case typeFile

Case Is = ".zip"

Calc1 = Left(Right(StrFile, 12), 8)

    If JMZero(Month(DateW)) <> Left(Right(Calc1, 4), 2) Or JMZero(Day(DateW)) <> Right(Calc1, 2) Then
    EcartDateW = True
    Else
    EcartDateW = False
    End If

Case Is = ".csv"

Calc1 = Left(Right(StrFile, 10), 6)

    If JMZero(Month(DateW)) <> Left(Right(Calc1, 4), 2) Or JMZero(Day(DateW)) <> Right(Calc1, 2) Then
    EcartDateW = True
    Else
    EcartDateW = False
    End If

End Select

End Function

Up ;)

Bonsoir Pierre-75

Je cherche seulement à donner la possibilité de passer une liste d'arguments possible finie à "TypeFile" : ".csv", ".zip", etc, de sorte à ce que lorsque l'on saisit la fonction, la liste déroulante s'ouvre pour suggérer les options possibles.

A ma connaissance et si j'ai bien compris, ce n'est pas possible

Vous pouvez envoyer cet argument à votre fonction, mais vous ne pouvez pas avoir de liste déroulante comme vous le souhaitez
D'ailleurs aucune fonction Excel ne le fait...

A+

Bonjour Bruno, merci pour votre réponse, je me suis peut-être (probablement ;) ) mal exprimé, je joints une capture d'écran en guise d'exemple

image

J'ai contourné la question en procédant autrement, mais ma curiosité réclame une réponse! ;) Merci encore

Bonjour Pierre-75

Arf oui d'accord, j'étais à côté de la plaque

Il me semble que l'on peut le faire, mais pas comment

Pas de souci! Il me semble que c'est avec ENUM mais en pratique je sèche

Bonjour Pierre-75

Non, "ENUM" sert seulement dans le cas ou l'on veuille se servir de l'énumération dans VBA

Pour afficher clairement les paramètres

image

Il faut lancer en 1er ce type de sub

Sub DescribeFunction()
  Dim FuncName As String, FuncDesc As String, FuncCat As String
  Dim ArgDesc(1 To 2) As String
  FuncName = "EcartDateW"
  FuncDesc = "Fonction pour interroger le nom d'un fichier et contrôler si la date renseignée dans le nom du fichier correspond avec le jour du traitement souhaité"
  FuncCat = 9
  ArgDesc(1) = "Chemin et nom du fichier"
  ArgDesc(2) = "Extension du fichier (Zip, Csv)"
  Application.MacroOptions Macro:=FuncName, Description:=FuncDesc, Category:=FuncCat, ArgumentDescriptions:=ArgDesc
End Sub

Mais cela ne donne pas l'affichage des paramètre dans la feuille Excel

image

A+

Hello Bruno merci, effectivement je me suis rendu compte que ce n'était pas adapté non plus!

Rechercher des sujets similaires à "vba creer fonction choix possibles comme parametres"