VBA Erreur de compilation : fonction avec des arguments facultatifs

avaya

XLDnaute Nouveau
Bonjour à tous,

J'ai un soucis sur une fonction que j'ai créée qui me permet de filtrer des tableaux selon plusieurs critères sur une même colonne.
J'ai essayé de la tester mais impossible car au moment où je veux lancer la macro une erreur de compilation s'affiche.
J'ai mis plusieurs arguments facultatifs optionnels dans la fonction mais ce n'est pas la première fois que je fais ça donc je ne comprends pas d'où vient l'erreur.
J'ai remarqué que lorsque je mets un critère dans le dernier argument (=Cle10), l'erreur disparait.
Sauriez-vous me dire pourquoi et d'où vient le problème? Comment le résoudre?

Vous trouverez le fichier test en pièce jointe.



Merci d'avance

avaya
 

Pièces jointes

  • FunctionOptionalArguments.xlsm
    15.2 KB · Affichages: 67

ROGER2327

XLDnaute Barbatruc
Re : VBA Erreur de compilation : fonction avec des arguments facultatifs

Bonjour avaya.


Je vois au moins deux problèmes. D'abord cette ligne :​
Code:
    Tableaufiltre = montableau.FiltreMultArrayLignes(TableauFullData, 1, "salut", "bonjour", , , , , , , , )
qui devrait être :​
Code:
    Tableaufiltre = montableau.FiltreMultArrayLignes(TableauFullData, 1, "salut", "bonjour")
ou​
Code:
    Tableaufiltre = montableau.FiltreMultArrayLignes(TableauFullData, 1, Cle1:="salut", Cle2:="bonjour")

Ensuite :​
Code:
  Dim Include()
devrait être​
Code:
  Dim Include(1 To 10)
  Include(1) = Cle1
pour que la suite fonctionne.


Une autre façon de faire est d'utiliser ParamArray pour passer les paramètres optionnels.
On peut ainsi alléger notablement le code du module de classe.

D'autre part, je ne saisis pas l'intérêt de ce module de classe dans le cas présent. Voyez le classeur joint pour les détails ...​


Bonne journée.


ℝOGER2327
#8183


Mercredi 25 Décervelage 143 (Saint Petiot, expert - fête Suprême Quarte)
2 Pluviôse An CCXXIV, 1,2851h - mousse
2016-W03-5T03:05:03Z
 

Pièces jointes

  • Copie de FunctionOptionalArguments.xlsm
    25.8 KB · Affichages: 57

avaya

XLDnaute Nouveau
Re : VBA Erreur de compilation : fonction avec des arguments facultatifs

Bonjour Roger2327,

Merci beaucoup pour votre aide.
Je ne connaissais pas ParamArray et il est vrai que cela facilite grandement le codage.
La macro n'a effectivement aucune utilité dans le fichier que je vous ai envoyé (ce n'est qu'un fichier test) mais elle me sera grandement utile pour gérer mes array plus rapidement.

Merci encore,

avaya
 

Dranreb

XLDnaute Barbatruc
Re : VBA Erreur de compilation : fonction avec des arguments facultatifs

Bonjour.
Non, ce que ROGER2327, que je salue, veut dire, je crois, c'est qu'un module de classe possédant juste une méthode, dépourvu de variable globale (ni propriété ni donnée à conserver) et ne décrétant aucun évènement ne sert pas à grand chose en ce sens qu'une procédure classique dans module standard ferait aussi bien l'affaire.
 

avaya

XLDnaute Nouveau
Re : VBA Erreur de compilation : fonction avec des arguments facultatifs

Bonjour Dranreb,

Je comprends mieux. Oui c'est vrai que ça ne sert pas à grand chose...
Sauf à voir apparaitre les différentes fonctions/procédures en appelant le module de classe.
Merci pour cet éclaircissement.

avaya
 

Dranreb

XLDnaute Barbatruc
Re : VBA Erreur de compilation : fonction avec des arguments facultatifs

Bonjour.
Mais vous pouvez faire la même chose avec un module standard. Je le fais de plus en plus souvent, quoique ça doive rester rare, pour informer un demandeur du module dans lequel se trouve telles ou telles fonction de service peu utilisée sur l'ensemble du code.
Vous pouvez même encore mettre devant un nom de projet. C'est surtout utile s'il est mis en référence et porte un nom différent de VBAProject.
 
Dernière édition:

avaya

XLDnaute Nouveau
Re : VBA Erreur de compilation : fonction avec des arguments facultatifs

Bonjour Dranreb,

Je ne savais pas qu'on pouvait faire cela.
Si cela ne vous dérange pas, auriez-vous un exemple de fichier où l'utilisateur est informé du nom du projet + nom des fonctions/procédures du projet lors du codage?
Sinon je trouverai bien cela quelque part sur ce site ou ailleurs.

Merci d'avance,

avaya
 

Dranreb

XLDnaute Barbatruc
Re : VBA Erreur de compilation : fonction avec des arguments facultatifs

Bonjour.

Mais faites un essai, vous verrez bien. Tapez le nom d'un module standard, puis un point, vous aurez une liste des procédures qu'il contient. Et si vous laissez le nom du module vous vous rappellerez en relisant le code que c'est dans ce module que la procédure est écrite. Lorsque c'est un nom de projet d'une bibliothèque en référence, on le cite bien souvent, mais en général ce n'est pas nécessaire comme par exemple dans Scripting.FileSystemObject. Enfin si vous avez comme moi, rangé dans un bon dossier stable, un classeur de macros dont certaines sont destinées à être utilisées dans la programmation d'autres classeurs, vous pouvez, en cliquant sur VBAProject, changer ce nom en autre chose. Dès lors ce nom figure dans les références disponibles pour les autres projets et vous pouvez le cocher. Toutes les procédure Public sont connues dans les projets où il est en référence. Et la encore si vous tapez ce nom suivi d'un point, tous les membres sont proposés dans une liste.
 

Discussions similaires

Réponses
3
Affichages
513

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16