Variable dans macro créant un menu déroulant

Résolu/Fermé
Informadream Messages postés 465 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 9 mars 2022 - 30 juin 2011 à 10:17
Informadream Messages postés 465 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 9 mars 2022 - 30 juin 2011 à 11:00
Bonjour,

Je ne sais pas si le titre est assez explicite, difficile de résumer en quelques mots !
Pour être précis, je crée un menu déroulant en VBA (me suis servi de l'enregistreur), dont la plage de cellules est - pour l'instant - fixée.

En parallèle, j'ai un UserForm qui contient plusieurs TextBox.
Les valeurs entrées par l'utilisateur correspondent à la plage de cellules à valider, qui devront apparaitre par la suite dans le menu déroulant.

Donc ma question est : Comment introduire des variables à l'intérieur de la macro qui crée le menu déroulant ?

Voici mon code :


With Selection.Validation
                                .delete
                                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertWarning, Operator _
                                :=xlBetween, Formula1:="=X120:X134"
                                .IgnoreBlank = False
                                .InCellDropdown = True
                                .InputTitle = ""
                                .ErrorTitle = "Valeur inexistante"
                                .InputMessage = ""
                                .ErrorMessage = _
                                "Cette valeur ne fait pas partie de la liste." & Chr(10) & "Etes-vous sur de vouloir continuer ?"
                                .ShowInput = True
                                .ShowError = True
                            End With



Je ne sais même pas si c'est vraiment possible d'ailleurs ?
J'ai essayé de mettre ma variable sous la forme UserForm1.TextBox1.Value, mais ça ne marche pas.

Sachant que j'ai testé avec un MsgBox les valeur contenues dans les TextBox et tout est ok de ce côté la.
Auriez-vous une idée ...?

Merci pour votre aide !

Cordialement,
Polochon
A voir également:

3 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 754
30 juin 2011 à 10:22
Bonjour,
Il suffit de déclarer une simple variable String (chaine de caractères) et de lui affecter la valeur souhaitée :

Dim Plage As String
Plage = "=A10:A20" 'ici tu mets ce que tu veux obtenir dans ta Formula1 ci-dessous
'ça peut être aussi de la forme : Plage = "=" & TextBox1.Value
'ce qui te permet d'écrire dans ton textbox1 : A10:A20 et de travailler sur cette plage...
With Selection.Validation
                .Delete
                .Add Type:=xlValidateList, AlertStyle:=xlValidAlertWarning, Operator _
                                :=xlBetween, Formula1:=Plage  
                .IgnoreBlank = False
                .InCellDropdown = True
                .InputTitle = ""
                .ErrorTitle = "Valeur inexistante"
                .InputMessage = ""
                .ErrorMessage = _
                                "Cette valeur ne fait pas partie de la liste." & Chr(10) & "Etes-vous sur de vouloir continuer ?"
                .ShowInput = True
                .ShowError = True
End With
--
Cordialement,
Franck P
1
Informadream Messages postés 465 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 9 mars 2022 39
30 juin 2011 à 10:31
Salut Franck, et merci beaucoup pour ton aide !

J'ai donc fait :

Dim plage As String
plage = "=" & UserForm11.TextBox1.Value: UserForm11.TextBox2.Value ""

.Add Type:=xlValidateInputOnly, AlertStyle:=xlValidAlertWarning, _
Operator:=xlBetween, Formula1:=plage


Mais j'obtiens une erreur qui me dit "Utilisation incorrecte de la propriété", en faisant référence à :

plage = "=" & UserForm11.TextBox1.Value: UserForm11.TextBox2.Value ""

(Le .Value du TextBox2 en fait, qui est surligné)

Je fais erreur dans la syntaxe ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 754
30 juin 2011 à 10:39
Essaye plutôt ceci : (je précise que je n'ai pas testé...)
plage = "=" & UserForm11.TextBox1.Value & ":" & UserForm11.TextBox2.Value 

La saisie dans les textbox doit être simplement, par exemple :
A1
A10
sans guillemets, sans : , sans rien d'autre...
fais ceci pour vérifier :
Dim plage As String 
plage = "=" & UserForm11.TextBox1.Value & ":" & UserForm11.TextBox2.Value
MsgBpx plage

Le message qui apparait doit te donner : =A1:A10
0
Informadream Messages postés 465 Date d'inscription samedi 28 mars 2009 Statut Membre Dernière intervention 9 mars 2022 39
30 juin 2011 à 11:00
C'est bon ça marche !
Yeeeeeeeees !

Je te remercie sincèrement, tu m'enlèves un sacré épine du pied ! :)

Informadream
0