Variable dans macro créant un menu déroulant
Résolu
Informadream
Messages postés
465
Date d'inscription
Statut
Membre
Dernière intervention
-
Informadream Messages postés 465 Date d'inscription Statut Membre Dernière intervention -
Informadream Messages postés 465 Date d'inscription Statut Membre Dernière intervention -
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 :
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
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:
- Variable dans macro créant un menu déroulant
- Menu déroulant excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Excel menu déroulant en cascade - Guide
- Comment créer un groupe whatsapp - Guide
- Créer un compte google - Guide
3 réponses
Bonjour,
Il suffit de déclarer une simple variable String (chaine de caractères) et de lui affecter la valeur souhaitée :
Cordialement,
Franck P
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
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 ?
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 ?
Essaye plutôt ceci : (je précise que je n'ai pas testé...)
La saisie dans les textbox doit être simplement, par exemple :
A1
A10
sans guillemets, sans : , sans rien d'autre...
fais ceci pour vérifier :
Le message qui apparait doit te donner : =A1:A10
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