Userform et tableau

Bonjour,

N'étant pas un développeur professionnel en vba, je me tourne vers vous pour tenter d'obtenir une aide sur un problème de gestion de variables.

dans un userform j'ai positionné un calendrier (monthview) sur lequel l'utilisateur peut choisir successivement plusieurs dates.

Dans l’événement "calend1_DateClick" je récupère dans une variable "listdat" la (les) date(s) choisie(s).

J'aimerais pouvoir stocker cette date et les suivantes dans un tableau.

Que je créée une procédure publique en passant ma variable en paramètre (en ayant déclaré publiques n et tabdat) :

Sub mesdat(listdat)

ReDim Preserve tabdat(0 To n)

tabdat(n) = listdat

end sub

Ou que je laisse le code dans la procédure de l'évènement, je ne garde toujours que la dernière date choisie par l'utilisateur

Comment dois-je procéder ?

Je vous remercie sincèrement pour votre aide éclairée.

Bonjour,

Si tu opères à partir du Userform, tu n'as nul besoin de variable publique (ce n'est nécessaire que si tu dois y accéder de l'extérieur du Userform).

Pour la Sub, qu'elle soit publique n'est pas gênant, elle ne peut être appelée par inadvertance car il faut l'appeler par : NomModule.NomProcédure (un module de Userform étant privé), [NB- Je ne mets jamais de Private pour les procédures hors évènements d'un Userform, cela me permet de les distinguer d'emblée...]

La procédure que tu cites suppose que tu incrémentes n mais cela n'apparaît pas ?

Sinon l'affectation à un tableau ne pose pas plus de problème que l'affectation à une variable scalaire...

Le choix de conservation de tes valeurs est dépendant de leur utilisation ultérieure. C'est donc cela qu'il conviendrait de savoir.

Cordialement.

Bonjour et merci pour votre réponse.

J’incrémente n dans la procédure évènementielle après l'appel de la procédure publique.

Mais lorsque j'essaye de lire mon tableau, tous les indices inférieurs à n, appelés par une msgbox sont vides

voici ma procédure évènementielle :

Private Sub calend1_DateClick(ByVal DateClicked As Date)

Dim sep, listdat, As String

listdat = ""

sep = " - "

calend1.TitleBackColor = &HC0C000

listdat = Format(Me.calend1.Value, "dd/mm/yyyy")

Module1.mesdat (listdat)

msgbox tabdat(n)

n = n + 1

saisiedat.Tblistdat.Value = Tblistdat.Value & sep & listdat

End Sub

Merci encore une fois pour votre aide,

Cordialement

C'est de la bouillie ! Et tu n'avais pas fourni les informations utiles !

listdat n'a pas à être initialisée ainsi.

L'utilisation de Format est à proscrire, tu n'affectes plus une date mais du texte !!!

Module1 est un module public, sa mention est inutile, et surtout tu n'avais nullement indiqué que ton code précédent était hors Userform! Il faudrait savoir ce qui le justifie !

Du coup on ne sait plus où sont déclarées tes variables !

La dernière ligne est à ce stade incompréhensible sans explications.

Et sans les explications préalables que j'ai réclamée, je n'ai rien d 'autre à dire ! (de toute façon je dois sortir ! )

Bonjour,

Et merci d'avoir pris la peine de me répondre. Excuse mon ignorance, mais je ne comprends pas mieux ta réponse.

En résumant mon problème, peux-tu me dire comment, à partir de la procédure évènementielle "Private Sub calend1_DateClick(ByVal DateClicked As Date) ", je range à chaque click de souris sur une date, les différentes valeurs dans un tableau ?

Merci encore pour ton aide,

Cordialement,

Bonjour,

1) Quelle destination des dates stockées ?

2) Code complet du Userform.

3) Code en module Standard impliqué par l'utilisation du Userform.

Ne pas omettre les déclarations de variables niveau modules.

Prière utiliser les balises Code (bouton Code) pour citer du code dans un post.

Un fichier muni du Userform ne serait peut-être pas superflu...

Cordialement.

Bonjour,

Je pars en déplacement dans 40 mn. Si j'ai le temps, je vous envoie tout ça. Sinon, je reprends contact avec vous à mon retour. Merci pour votre aide.

Cordialement,

Rechercher des sujets similaires à "userform tableau"