Valeur textbox dans cellule excel [Résolu]

louprovencou 6 Messages postés lundi 1 octobre 2007Date d'inscription 25 janvier 2010 Dernière intervention - 10 mai 2008 à 17:12 - Dernière réponse : louprovencou 6 Messages postés lundi 1 octobre 2007Date d'inscription 25 janvier 2010 Dernière intervention
- 11 mai 2008 à 10:49
Bonjour à tous. Je débute en VBA donc ma question risque de vous sembler évidente mais je galère même aidé de sujets similaires déja postés. Je souhaite simplement qu'en lançant une macro, un Userform apparaisse permettant la saisie dans un TextBox de texte quelconque qui soit affiché dans une cellule A1 (par example) en appuyant sur le bouton OK de l'userform.
Mon code est le suivant:
Dans le module 1:

Sub macroTest()

UserForm1.Show False
Range("A2").Value = UserForm1.TextBox1.Text

End Sub

Dans UserForm1 (ben rien en fait):

Private Sub CommandButton1_Click()
End Sub

Private Sub TextBox1_Change()
End Sub

Merci d'éclairer ma lanterne... dans l'état actuel excel me renvoie l'erreur "objet requis" (à cause de TextBox1.Text)
Afficher la suite 

2 réponses

Répondre au sujet
cs_Jack 14010 Messages postés samedi 29 décembre 2001Date d'inscription 28 août 2015 Dernière intervention - 10 mai 2008 à 18:36
+3
Utile
Salut
Tu n'as pas saisi le sens de l'argument fourn i avec la méthode Show.
C'est vrai que dans l'aide de Excel, ce n'est pas clair du tout :
Après un Show, on doit préciser vbModal ou vbModeless (et pas False ou True) :
vbModal : Il faudra que la forme ainsi chargée soit déchargée (après le bouton Ok par exemple) pour que le code situé après la commande Show continue.
vbModeless : Les instructions situeés après la commande Show s'exécutent tout de suite.

En pratique et dans ton cas, ta macro doit :
- charger le UserForm
- l'utilisateur doit saisir une donnée puis cliquer sur un bouton Ok
- Recopier le contenu de la TextBox dans une cellule.

Si tu fais cette copie depuis la macro, ça ne marchera pas, quelque soit le mode du Show :
- Si tu utilises vbModal :
La UserForm s'affiche, l'utilisateur saisit son texte et clique sur Ok qui fait fermer la UserForm (à faire)
Quand le programme reprend après la fermeture de la UserForm, elle n'existe plus puisqu'elle vient d'être fermée et le contenu de la TextBox non plus !
- Si tu utilises vbModeless :
La UserForm s'affiche et le programme continue tout de suite en faisant la recopie de la TextBox dans ta cellule.
L'utilisateur n'aura alors encore rien saisi !

Il faut donc que ce soit la UserForm qui écrive la valeur dans ta cellule :
Dans ton Command1 qui, je suppose, est ton bouton Ok, il suffit d'écrire :
   Range("A2").Value = UserForm1.TextBox1.Text
et d'ajouter
   Unload Me
pour fermer la UserForm.
Côté macro, uniquement cette commande :
   UserForm1.Show vbModal
ou 
   UserForm1.Show vbModeless
La seule chose que cela va changer, c'est que, durant l'affichage de la UserForm, l'utilisateur pourra ou ne pourra pas accéder aux feuilles ou aux menus de Excel. A toi de choisir.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de cs_Jack
louprovencou 6 Messages postés lundi 1 octobre 2007Date d'inscription 25 janvier 2010 Dernière intervention - 11 mai 2008 à 10:49
0
Utile
Salut!
Et bien je te remercie vraiment pour cette réponse précise et bien détaillée
;)
A bientôt
Commenter la réponse de louprovencou

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.