Sauvegarder la saisie de la textBox

Esther000 Messages postés 6 Date d'inscription mardi 23 juin 2015 Statut Membre Dernière intervention 26 juin 2015 - 23 juin 2015 à 16:42
Esther000 Messages postés 6 Date d'inscription mardi 23 juin 2015 Statut Membre Dernière intervention 26 juin 2015 - 26 juin 2015 à 15:39
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

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 juin 2015 à 18:14
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 !
0
Oui en effet. Je travaille sous VBA :)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 juin 2015 à 23:33
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
0
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é.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 juin 2015 à 08:17
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 juin 2015 à 11:33
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 ...
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 26/06/2015 à 07:20
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.
0
Merci infiniment ! Toutefois, une question: dans votre étape 3) vous dites "dans un module", qu'entendez vous par module ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
26 juin 2015 à 09:22
Depuis l'éditeur visual basic (onglet développeur ===>> visual basic) ===>>> insertion ===>>> module
0
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
0
Esther000 Messages postés 6 Date d'inscription mardi 23 juin 2015 Statut Membre Dernière intervention 26 juin 2015
26 juin 2015 à 14:47
Une autre question: il faut que je fasse la macro pour lancer le formulaire (TB_noms...) c'est bien ça ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 26/06/2015 à 15:00
 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.
0
Esther000 Messages postés 6 Date d'inscription mardi 23 juin 2015 Statut Membre Dernière intervention 26 juin 2015
26 juin 2015 à 15:09
vous n'avez pas compris ma question... je parle du formulaire que vous me demandiez de faire dans vos précédentes réponses
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 26/06/2015 à 15:21
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.
0
Esther000 Messages postés 6 Date d'inscription mardi 23 juin 2015 Statut Membre Dernière intervention 26 juin 2015
26 juin 2015 à 15:32
J'ai message d'erreur: "impossible d'exécuter le code en mode arrêt"...

Cordialement
0
Esther000 Messages postés 6 Date d'inscription mardi 23 juin 2015 Statut Membre Dernière intervention 26 juin 2015
26 juin 2015 à 15:34
C'est pareil pour mes autres documents excel...
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 137
26 juin 2015 à 15:36
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!
0
Esther000 Messages postés 6 Date d'inscription mardi 23 juin 2015 Statut Membre Dernière intervention 26 juin 2015
26 juin 2015 à 15:39
Merci pour la doc cs_Le Pivert !!!
0
Rejoignez-nous