Sauvegarder la saisie de la textBox

Signaler
Messages postés
6
Date d'inscription
mardi 23 juin 2015
Statut
Membre
Dernière intervention
26 juin 2015
-
Messages postés
6
Date d'inscription
mardi 23 juin 2015
Statut
Membre
Dernière intervention
26 juin 2015
-
Bonjour, je suis débutante en visual basic (très très débutante). Je dois créer un formulaire où je dois sauvegarder ma saisie.

Exemple: après avoir saisie "Strasbourg" une première fois, dès que je saisirai "S", Strasbourg doit pouvoir m'être proposé.

Idem pour ma textBox "Nom" et "Parcelle"

Merci d'avance !

18 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Bonjour,
Les solutions sont très différentes si tu développes sous VB6, VBA ou VB.Net.
Or, tu as ouvert cette discussion dans le forum général Visual Basic, tant et si bien(mal) que que bien malin serait celui capable de répondre efficacement !
Oui en effet. Je travaille sous VBA :)
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Je déplace donc vers le sous-forum (VBA) adéquat.
Prends s'il te plait dorénavant ce soin (important).

Bien.
J'ai par ailleurs mal compris (pas vraiment clair) ce que tu entends exactement par "sauvegarder".
Peux-tu être plus précis ?
"sauvegarder" veut dire garder en mémoire (sur disque dur, base de registre, etc ...) alors que ton message donne plutôt à penser que tu fais allusion à autre chose
Eh bien, en écrivant 1 première fois le prénom d'unn client dans un formulaire, il faudrait que la 2è fois qu'on ai besoin de saisir ce meme prénom il y ait la proposition en dessous des prénoms commençant par "D" par exemple.

Exemple: mon nouveau client s'appelle "Dupont", je l'écrit dans la textbox de mon formulaire: "Dupont".
Et puis, ce meme client revient une deuxième fois et je dois à nouveau saisir son nom. Dans ce cas si j'écrit le "D" dans ma textbox, il faudrait que "Dupont" me soi proposé.

Et si déja plusieurs nom de clients commençant par "D" sont enregistrer, il faudrait aussi que tous ces nom me sois proposé.

Dans le but de ne pas à avoir a réecrire en entier un nom surtout s'il est compliqué.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
On commence (seulement commence) à y voir plus clair.
Il va falloir que tu y ailles pas à pas :
Pas 1 : intéresse-toi à ce qu'est une combobox placée sur un userform, ce qu'est sa propriété MatchEntry et ce qu'est sa propriété Rowsource
Et fais un petit exercice liant cette combobox à une plage de données de ton choix sur la feuille de calcul de ton choix.

Reviens lorsque tu auras maîtrisé (c'est indispensable) ce premier pas.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Alors : où en es-tu ?
Pour ton info : je me suis amusé à faire un exemple tout cuit, sur la base de ce que je t'ai indiqué.
1) - La première partie (combobox liée) est très simple
2) - C'est le reste, qui demande par contre adresse et astuce

Autant je suis prêt à un sacré coup de main pour la partie 2), qui peut échapper à un débutant, autant je tiens à te voir faire le premier pas -la partie 1-, au moins tenté ! ) d'abord. Pourquoi ? Tout simplement parce que sans ce pas-là, tu serais totalement incapable de suivre tout le reste.
Quand tu seras prêt, donc ...
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Hé bien ! Voilà une :
débutante en visual basic (très très débutante)

qui, à la fois :
- veut du complexe, dès le début
- abdique avant même de commencer à s'y mettre !

Voilà, Esther000, comment s'y prendre ===>>> exemple ===>>>

1) crée dans ton classeur une feuille nommée "Donnees"

2) sur un userform :
- une textbox TB_noms
- plus bas : une textbox TB_villes
- n'importe où (elle sera invisible) : une textbox nommée fantome
- n'importe où : une combobox nommée combobox1
- en bas de ton formulaire : un commandbutton nommé commandbutton1
et ce code :
Option Explicit
Private Const les_donnees As String = "Donnees"
Private Const NOM As String = "A"
Private Const VILLE As String = "B"

Private Sub ComboBox1_Change()
If Not encours Is Nothing Then encours.Text = ComboBox1.Text
ActiveControl.ZOrder
End Sub

Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
validation
End Sub

Private Sub ComboBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 46 And Shift = 2 Then suppression
End Sub

Private Sub CommandButton1_Click()
MsgBox "contenus des deux champs : " & vbCrLf & _
"nom =======>> " & TB_noms.Text & vbCrLf & _
"ville =====>>" & TB_villes.Text & vbCrLf & vbCrLf & _
"que vous pouvez donc enregistrer là où vous le souhaitez."

End Sub

Private Sub TB_noms_Enter()
traitons ActiveControl, les_donnees, NOM
End Sub
Private Sub TB_villes_Enter()
traitons ActiveControl, les_donnees, VILLE
End Sub
Private Sub UserForm_Initialize()
Set CB = ComboBox1
Set Fant = fantome
With Worksheets(les_donnees)
.Range("A1").Value = "NOMS"
.Range("B1").Value = "VILLES"
End With
placons
End Sub

3) dans un module :
ce code :
Option Explicit
Public encours As Object, CB As Object, Fant As Object
Private F As String, c As String
Public Sub traitons(TB As Object, feuille As String, colonne As String)
Dim derlig As Long
F = feuille
c = colonne
With TB
derlig = Worksheets(F).Range(c & Rows.Count).End(xlUp).Row
.Tag = F & "!" & c & "2:" & c & derlig
End With
With CB
.Move TB.Left, TB.Top, TB.Width, TB.Height
.RowSource = TB.Tag
.Visible = True
.Text = TB.Text
.ZOrder
.SetFocus
End With
Set encours = TB
DoEvents
End Sub

Public Sub placons()
CB.Visible = False
CB.MatchEntry = fmMatchEntryComplete
CB.ZOrder
Fant.Move -10, -10, 3, 3
Fant.SetFocus
End Sub
Public Sub suppression()
Dim rang As Long, derlig As Long
With CB
If .ListIndex = -1 Then Exit Sub
rang = .ListIndex + 2
If MsgBox("Etes-vous certain(e) de vouloir supprimer " & _
.Text & " de la liste des " & Worksheets(F).Cells(1, c).Value & _
" répertorié(e)s ?", vbYesNo) <> vbYes Then Exit Sub
.Text = ""
derlig = Worksheets(F).Cells(Rows.Count, c).End(xlUp).Row
If rang = derlig Then
Worksheets(F).Cells(rang, c).Value = ""
Else
Worksheets(F).Cells(rang, c).Value = Worksheets(F).Cells(derlig, c).Value
Worksheets(F).Cells(derlig, c).Value = ""
End If
.Text = ""
End With
End Sub

Public Sub validation()
Dim derlig As Long
With CB
If Not encours Is Nothing Then
encours.Text = .Text
If .ListIndex = -1 And .Text <> "" And Not encours Is Nothing Then
If MsgBox("Souhaitez-vous ajouter " & .Text & " à la liste des " & _
Worksheets(F).Cells(1, c).Value & " répertorié(e)s ?", vbYesNo) = vbYes Then
derlig = Worksheets(F).Cells(Rows.Count, c).End(xlUp).Row + 1
Worksheets(F).Cells(derlig, c) = .Text
End If
End If
DoEvents
End If
End With
Set encours = Nothing
End Sub


Depuis où tu veux : lance :
userform1.show

et regarde ce qui se passe (tu vas vite comprendre) en renseignant les 2 textboxes.
Ta feuille Donnees est vide au départ. Elle va se remplir des nouveaux noms et nouvelles villes, qui te seront ensuite proposés.
Tu auras la liberté de mémoriser ou non un nouveau nom ou une nouvelle ville
Tu auras la possibilité de supprimer un article existant (utiliser la combinaison de touches CRTL + SUPPR une fois l'artiche choisi)

Si tu veux conserver ces données entre deux sessions : n'oublie bien évidemment pas de sauvegarder ton classeur avant de le fermer.

Maintenant, Esther000 : je crains fort, si tu ne t'es pas au moins intéressée à ce que je t'ai invitée à apprendre d'abord (plus haut), que ce code ne soit pour toi totalement ésotérique.

Mais bon ... Je l'ai quand-même mis là pour le cas où d'autres seraient intéressés.








________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Merci infiniment ! Toutefois, une question: dans votre étape 3) vous dites "dans un module", qu'entendez vous par module ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Depuis l'éditeur visual basic (onglet développeur ===>> visual basic) ===>>> insertion ===>>> module
Eh bien enfait, je sais déjà ce qu'est une Combobox, j'ai déjà créer un formulaire, c'était un formulaire de contact ! Seulement le code m'était donné, ce n'était plus que du copié collé ! Le souci c'est que a certains moment il y a des lignes que je ne connaissais pas ! En faisant ce formulaire j'ai du me renseigner via Google évidemment pour comprendre un minimum ce que j'écrit.

Ce deuxième formulaire que je dois faire comprend cette partie de sauvegarde, et pour ça je n'ai aucune aide à part google et ces millions d'informations et vous.

Je vais essayer ce que vous venez de m'écrire et je vous tiens au courant.

Merci beaucoup
Messages postés
6
Date d'inscription
mardi 23 juin 2015
Statut
Membre
Dernière intervention
26 juin 2015

Une autre question: il faut que je fasse la macro pour lancer le formulaire (TB_noms...) c'est bien ça ?
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
 Une autre question: il faut que je fasse la macro pour lancer le formulaire (TB_noms...) c'est bien ça ?

Le ... "formulaire" ... TB-noms !!!!!!
Désolé, mais cette seule question me fait t'abandonner là.
Elle démontre une incompréhension et une méconnaissance totales.
Je crois avoir compris que tout ce que tu avais jusqu'à présent n'était que du copié/collé totalement incompris.
Je ne participe plus à ce "jeu"-là !
Bonne chance.

EDIT : pour tout dire, je m'y attendais. Le code que j'ai montré est là pour les
développeurs
éventuellement intéressés.
Merci de ne revenir que lorsque tu auras appris et connaîtras au moins les rudiments de chez rudiment.
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Messages postés
6
Date d'inscription
mardi 23 juin 2015
Statut
Membre
Dernière intervention
26 juin 2015

vous n'avez pas compris ma question... je parle du formulaire que vous me demandiez de faire dans vos précédentes réponses
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
233
Si tu parles de l'affichage (le "lancement") du formulaire et s'il s'appelle UserForm1 (par exemple), je crois avoir déjà dit plus haut comment, non ?
Depuis où tu veux : lance :
userform1.show
--

ce peut être depuis une macro, depuis l'évènement click d'un bouton, etc ... depuis : "où tu veux" !!!
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Messages postés
6
Date d'inscription
mardi 23 juin 2015
Statut
Membre
Dernière intervention
26 juin 2015

J'ai message d'erreur: "impossible d'exécuter le code en mode arrêt"...

Cordialement
Messages postés
6
Date d'inscription
mardi 23 juin 2015
Statut
Membre
Dernière intervention
26 juin 2015

C'est pareil pour mes autres documents excel...
Messages postés
7223
Date d'inscription
jeudi 13 septembre 2007
Statut
Contributeur
Dernière intervention
21 janvier 2021
118
Bonjour à tous,

Je crois qu'avant de continuer quoi que se soit, il faut que tu passes par là:

http://silkyroad.developpez.com/VBA/UserForm/

et par là:

http://silkyroad.developpez.com/VBA/ControlesUserForm/

tu comprendras mieux!
Messages postés
6
Date d'inscription
mardi 23 juin 2015
Statut
Membre
Dernière intervention
26 juin 2015

Merci pour la doc cs_Le Pivert !!!