Vider le contenu d'une Textbox
Bonjour à tous,
Grâce à Sébastien que je remercie chaleureusement, j'ai utilisé le code de son fichier "champ_recherche" qui permet via une Textbox et une Listbox de simuler un moteur de recherche.
Dans le cadre de mon travail, je tente d'adapter ce code afin de créer un fichier qui sera utilisé par mes collègues pour effectuer de la réservation de matériel.
Le problème que je rencontre se situe au niveau du contenu de la Textbox qui sera rempli par les utilisateurs et qui fait ensuite l'objet d'une recherche dans une liste de matériel.
Pour résumer, l'utilsateur entre des caractères dans la textbox et le résultat de la recherche apparait dans une listbox. L'utilisateur sélectionne ensuite la ligne qui l'intéresse dans cette Listbox puis via un bouton valide l'article qu'il veut réserver.
Il y a en tout 14 boutons ce qui permet à l'utilisateur de réserver 14 articles si nécessaire. J'ai ajouté un bouton "Reset" permettant de vider le contenu des formulaires et des différents champs de ma feuille. Ce bouton notamment vide le contenu de ma textbox avec le code Textbox1 = "".
Tout fonctionne bien à l'exception du scénario suivant:
si l'utilisateur enregistre le fichier avant de le fermer par exemple, et que dans le même temps il reste du texte dans la textbox, ce même texte va réapparaître à l'ouverture suivante du fichier. Or, je souhaite qu'à chaque nouvelle ouverture de mon fichier le contenu da ma textbox soit vide.
Je n'arrive pas à adapter mon code pour obtenir ce fonctionnement.
J'ai tenté d'utiliser le même code que celui associé à mon bouton "Reset" en l'intégrant à l'évènement "Workbook Open" mais cela ne fonctionne pas (tous mes champs se vident correctement à l'exception du texte de ma Textbox). Voici le code de l'évènement Workbook Open:
Private Sub Workbook_Open()
Sheets("Formulaire").Select
TextBox1 = ""
[B1:B41].ClearContents
[I6:I6].ClearContents
[D1:D41].ClearContents
[E3:E3].ClearContents
End Sub
Pour le reste du code, je vous joins le fichier excel pour une meilleure compréhension de mon problème en espérant que quelqu'un ici ait la solution. Je précise que mon niveau en VBA est débutant, je ne fais que tenter de reprendre des codes existants.
Merci beaucoup par avance pour votre aide !
David
Bonjour,
Remplace par ce code dans le ThisWorkbook
Private Sub Workbook_Open()
Dim x As OLEObject
Sheets("Formulaire").Activate
For Each x In Sheets("Formulaire").OLEObjects
If TypeName(x.Object) = "TextBox" Then x.Object.Value = ""
Next x
[B1:B41].ClearContents
[I6:I6].ClearContents
[D1:D41].ClearContents
[E3:E3].ClearContents
End SubBonjour,
Je viens d'effectuer le remplacement du code comme tu me l'as indiqué. J'obtiens enfin le fonctionnement que je recherchais. Merci beaucoup pour ton aide !
David
M12 a écrit :Bonjour,
Remplace par ce code dans le ThisWorkbook
Private Sub Workbook_Open() Dim x As OLEObject Sheets("Formulaire").Activate For Each x In Sheets("Formulaire").OLEObjects If TypeName(x.Object) = "TextBox" Then x.Object.Value = "" Next x [B1:B41].ClearContents [I6:I6].ClearContents [D1:D41].ClearContents [E3:E3].ClearContents End Sub