VBA - Fonction avec argument de sortie tableau données perso

elgringo123456

XLDnaute Occasionnel
Supporter XLD
Bonjour,

Je me permets une fois de plus de vous solliciter sur le cas suivant.

Contexte : problème de VBA avec appel de fonction avec des valeurs en arguments de sortie de tailles variables et personnalisée.

Je m'explique :

Je fait appel à une fonction qui va renvoyer en argument de sortie un tableau de données personnalisée et variable.

Je fais appel à une donnée de type AnnonceIdSelect qui doit contenir 2 types de variables :
- Id de type Integer
- Date de type Date

La fonction IdentificationDoublonsMax a pour objet de determiner pour plusieurs mêmes annonce de selectionner le n°ID ainsi que la date la plus récente.
Pour ce faire j'utilise ce tableau dynamique pour enregistrer au fur et à mesure les annonces en doubles ayant la date la plus récente.

Le problème rencontré se situe sur la manière de faire passer le tableau dynamique et personnalisé dans le programme principal.

A l'éxécution, j'obtiens une erreur de type :
Erreur de compilation

Seuls les types définis par l'utilisateur et qui sont définis dans les modules d'objets publics peuvent être convertis depuis ou vers un variant ou passé à des fonctions de liaison tardive.

Je ne sais pas comment definir un module public. Comment puis-je faire marcher mon programme en utilisant un argument de sortie avec tableau de donnée dynamique et personnelle ?

Pour vous donner un exemple concret de mon problème, je vous joins le fichier.

Merci d'avance de vos réponses et aides.
Encore désolé de vous importuner avec ce genre de problème mais cela fait plusieurs jours que je suis dessus.
Cordialement.
:confused:
El Gringo 123456
 

Pièces jointes

  • Pblm Fonction Variable Perso.xls
    33 KB · Affichages: 105

JNP

XLDnaute Barbatruc
Re : VBA - Fonction avec argument de sortie tableau données perso

Bonjour ElGringo123456 :),
J'ai essayé différentes solution sur ton fichier (entre autre Public Tableau() et utiliser Tableau() pour passer les valeurs, utitiser Cvar pour convertir en Variant, etc.), mais j'obtiens toujours un message d'erreur... Par contre, si j'ai bien suivi ton problème, tu souhaites éliminer les doublons d'ID en ne conservant que la date la plus récente. Vu que tu est sur 2007, il te suffit de trier par date, puis d'éliminer les doublons, soit :
Code:
    Range("A1:D8").Select
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Feuil1").Sort.SortFields.Add Key:=Range("B2:B8"), _
        SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Feuil1").Sort
        .SetRange Range("A1:D8")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveSheet.Range("$A$1:$D$8").RemoveDuplicates Columns:=1, Header:=xlYes
Bonne journée :cool:
 

Discussions similaires

Statistiques des forums

Discussions
312 330
Messages
2 087 335
Membres
103 523
dernier inscrit
mounir2025