Definir la taille d'un tableau par un UserForm
Salut à tous,
J'ai un projet à faire et j'ai un petit soucis dans l’exécution d'une macro VBA.
On me demande de réaliser une interface par UserForm avec deux zones de textes qui permettent à l'utilisateur de choisir deux tailles de tableaux (le premier c'est la taille du tirage de nombres aléatoires et le deuxième le nombre de valeurs que je désire parmis le premier tableau pour les trier ensuite).
Je réalise donc un UserForm avec tous les cas possibles car ce que je veux faire ne marche pas.
Au début j'avais créer 3 boutons : un qui demande la première taille (et cachait un inputbox avec la procédure Click), un qui demandait la deuxième taille et un troisième qui fermait l'userform.
Maintenant je suis passé à un autre système avec deux zones de textes et un bouton terminer.
Voici le contenu de "terminer" :
Private Sub BoutonValider_Click()
Taille1 = TextBoxUnivers.Value
Taille2 = TextBoxUnivers.Value
Unload FormulaireUtilisateur
End SubBon jusque là je pense pas avoir raté quelque chose (A moins que la valeur de la zone de texte soit considéré comme d'un type qui m’échappe).
Là où les soucis commence, c'est dans mon code principal. Je désire remplacer les valeurs brutes de mes tableaux (50 et 30) par (taille1;taille2).
J'ai bien fait attention, j'ai bien déclaré les deux variables importantes en public hors du Sub de mon programme pour pouvoir utiliser les variables partout :
Option Base 1
Option Explicit
Public Taille1 As Long
Public Taille2 As Long
Sub TirageNombre()
Dim verif as boolean
Dim tab_random(Taille1) As String Le soucis c'est que VBA stop à la dernière ligne ci-dessus en indiquant : "Constante requise" en message d'erreur.
Alors ni une, ni deux, je mets vite fait Public Const Taille1 as Long et là apparait un nouveau message : "Impossible de mettre une constante ..."
Ma question, que dois je faire pour récupérer ces deux valeurs (ou sinon indiquez moi si je dois changer quelque chose dans le formulaire pour plus de faciliter) pour définir la taille de mes tableaux (ps: j'ai testé avec un simple inputbox et le resize et ca marche plutôt bien... mais ce n'est pas demandé de cette manière)..
MERCI d'avance!
Nicolas
PS : J'ai aussi essayé d'affecter ces valeurs de TextBox dans une cellule puis d’appeler la cellule après : impossible même erreur de constante
Bonsoir
A tester
Option Base 1
Option Explicit
Public Taille1 As Long
Public Taille2 As Long
Sub TirageNombre()
Dim verif As Boolean
'Dim tab_random(Taille1) As String
Dim tab_random() As String
ReDim tab_random(Taille1)
End SubSi pas ça
Dans ta 1ère macro tu as 2 fois TextBoxUnivers, normal ?
- Messages
- 1'794
- Excel
- 2010
- Inscrit
- 25/08/2014
- Emploi
- Consultant VB6 / SQL / VBA / Excel / Access
Edit : Bonsoir Banzaï, bon tu m'as encore précédé, ça tombe bien, on est à peu près d'accord
Bonsoir,
Lors de la déclaration d'un tableau, 2 possibilités :
- on lui donne une taille (fixe)
Dim tab_random(10) As String=> on ne pourra pas mettre plus de 10 éléments dans le tableau
- on ne lui donne pas de taille
Dim tab_random() As String=> la taille du tableau est illimitée.
on peut le dimensionner ensuite :
et dans ce cas, avec une taille passée en variable ;
Dim tab_random() As String
ReDim tab_random(Taille1)Par contre on ne peut pas déclarer un tableau avec une taille variable.
cf exemples en pièce jointe
Bonne soirée
Bouben