Definir la taille d'un tableau par un UserForm

Bonsoir à tous,

J'ai besoin de votre aide pour un problème lors de la réalisation d'une macro VBA.

Je dois réaliser un UserForm dans lequel j'attends de l'utilisateur qu'il me donne la taille de deux tableaux pour réaliser un traitement (un tirage aléatoire et un tri d'une portion de tirage aléatoire).

Premièrement, j'ai conçu un UserForm avec trois boutons (deux avaient des événements "Click" avec un inputBox caché pour récupérer les valeurs et le troisième fermait simplement le UserForm (Unload...)).

Maintenant, je suis plus passé sur un modèle avec deux zones de textes et un bouton pour valider. Ce bouton contient trois actions à savoir récupérer la valeur de la textbox1 : TextBoxTaille1.Value et de la textbox2 par la même opération puis enfin fermer le UserForm.

Private Sub BoutonValider_Click()

   Taille1 = TextBoxRandom.Value
   Taille2 = TextBoxSort.Value
   Unload FormulaireUtilisateur

End Sub

Jusque là tout va bien (je pense). Mais maintenant mon soucis arrive. (Et pourtant j'ai bien mis les variables en Public)

Option Base 1
Option Explicit

Public Taille1 As Long
Public Taille2 As Long

Sub RandomAndSort()

    'Affiche le formulaire
    FormulaireUtilisateur.Show

    'Initialisation des variables
    Dim tab_random(Taille1) As String 'Construit le tableau des n nombres tirés
    ...

 

Et là, panique, un message d'erreur sur la dernière ligne ci-dessus : "Constante requise".

Je me dis ok, je vais rajouter Const dans mes Public Taille1... Erreur : "Impossible de définir une constante sur cette variable".

Du coup je cherche une parade : je me dis que je vais définir un tableau dynamique et faire Redim tab_random(Taille1).

Malheureusement cela ne marche pas non plus (soit le UserForm ne se ferme pas si j'enlève le Unload, soit il disparait mais les valeurs ne restent pas stockées).

Même en les stockant dans les cellules Excel celà ne passe pas...

Ma question : Savez vous comment je peux faire pour récupérer Taille1 et taille2 pour pouvoir les affecter ensuite à des tableaux?

Merci à vous d'avance !

Nicolas

bonsoir,

remplace

   'Initialisation des variables
   Dim tab_random(Taille1) As String 'Construit le tableau des n nombres tirés
   ...

par

dim tab_random() as string
redim tab_random(taille1)

Salut H2S04, j'avais déjà essayé cette possibilité mais là aussi cela ne fonctionne pas avec les Redim...

En tout cas merci de ton aide.

Je vais essayer de continuer et si je trouve je posterai pour aider! =)

Bonjour,

Pas de problème avec la solution proposée par h2so4

A+

20classeur1.xlsm (19.76 Ko)
Rechercher des sujets similaires à "definir taille tableau userform"