Peut on demander à une textbox de mémoriser des valeurs ?

mhz

XLDnaute Junior
bonjour,

J'ai réalisé un formulaire vba excel. J'ai créé un textbox pour de rentrer des données (nom de structure) et je voudrais que le textbox se rappelle des données que je rentre quand je tape les 1ères lettres et pouvoir rentrer autant de données possibles.

Y a t il un moyen pour le faire ? J'ai aussi vu qu'on pouvait insérer des zones déroulantes modifiables, mais j'ai testé et ça n'a pas marché...

Quelqu'un aurait il une petite idée ?
Merci d'avance !!
 

mhz

XLDnaute Junior
Re : Peut on demander à une textbox de mémoriser des valeurs ?

Voila un fichier test.
j'ai inséré une textbox mais il n'y a pas de code car je n'arrive pas à le trouver...
 

Pièces jointes

  • vba test1.xlsm
    14.9 KB · Affichages: 32

mhz

XLDnaute Junior
Re : Peut on demander à une textbox de mémoriser des valeurs ?

Pour une combobox avec une listé prédéfinie le code à entrer est celui ci :

Private Sub UserForm_Initialize()
ComboBox1.ColumnCount = 1
ComboBox1.List() = Array("", "nom des entrées")
End Sub

Mais je ne veux pas qu'il y ait de données déjà enregistrer je souhaiterais qu'elles s'enregistre au fur et à mesure que je rentre des informations.
 

Dranreb

XLDnaute Barbatruc
Re : Peut on demander à une textbox de mémoriser des valeurs ?

Un ComboBox a aussi une méthode AddItem qui permet d'ajouter une ligne à son List.
Et aussi une propriété ListIndex qui indique l'élément sélectionné: -1 s'il est nouveau, 0 pour le 1er et 1 de plus pour chaque suivant.
 
Dernière édition:

Zdz16

XLDnaute Occasionnel
Re : Peut on demander à une textbox de mémoriser des valeurs ?

Bonjour Mhz et le forum;

Les éléments d'une liste déroulante sont au préalable chargées au départ. Sinon, il faudrait géré l'ajout à la liste des éléments. Or, si tu ne stocke pas les valeurs quelque part (Une feuille par exemple), tu ne pourra pas les récupérer une prochaine fois.

Voici un exemple de base, qui pourrait être amélioré en lui ajoutant par exemple le tri de la liste. L'exemple comporte une USF avec une liste déroulante, une feuille appelée 'Liste'. et un bouton qui permet l'appel à l'USF.

Attention le TextBox n'a pas de fonction particulière, simplement pour que l'évènement 'Exit" soit déclencher après la saisie et lorsqu'on quitte la liste. (en bref, après la saisie clique sur le textbox, ou ferme l'USF pour que le traitement d'ajout se déclenche)

Cordialement
 

Pièces jointes

  • Liste.xlsm
    21.4 KB · Affichages: 36
  • Liste.xlsm
    21.4 KB · Affichages: 43
  • Liste.xlsm
    21.4 KB · Affichages: 47

mhz

XLDnaute Junior
Re : Peut on demander à une textbox de mémoriser des valeurs ?

Merci pour le code, cependant le messages d'erreu medisant :

Option Explicit

Sub formulaire_aides()
'
' formulaire Macro
'
' Touche de raccourci du clavier: Ctrl+4
UserForm1.Show vbModeless
End Sub

Sub Rectangleàcoinsarrondis1_Cliquer()
UserForm1.Show
End Sub


Sub LoadList()

Dim iDrnLig As Integer
Dim Cell As Variant

Dim iRow As Integer, j As Integer
Dim strTemp As String

iDrnLig = Sheets("BD").Range("A" & Rows.Count).End(xlUp).Row

'Efface le contenu du ComboBox
UserForm.ComboBox5.Clear

'Boucle sur les cellules de la feuille 'Liste" pour charger le combo
For iRow = 1 To iDrnLig
UserForm1.ComboBox5.AddItem Worksheets("BD").Cells(iRow, 1)

Next iRow


End Sub

Sub AddToList()
Dim sItmInp As String
Dim rFndVal As Range
Dim iDrnLig As Integer

'recherche de la saisie dans la liste des valeurs
sItmInp = UserForm1.ComboBox5.Value
Set rFndVal = Sheets("BD").Columns("A:A").Find(What:=sItmInp, LookAt:=xlWhole)

'Si absent
If rFndVal Is Nothing Then
If MsgBox("Absent de la liste, Faut-il l'ajouter ?", vbQuestion + vbYesNo + vbDefaultButton1, "Nouvelle valeur") = vbYes Then
iDrnLig = Sheets("BD").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("BD").Cells(iDrnLig, 1) = sItmInp
Call LoadList 'on charge le comobox
End If
End If
End Sub

survient, que dois je faire
 

mhz

XLDnaute Junior
Re : Peut on demander à une textbox de mémoriser des valeurs ?

Merci beaucoup !!
J'ai trouvé ce qui n'allait pas en actualisant le code avec celui de mon userform car le nom des feuilles, du userform ne sont pas identiques.
 

mhz

XLDnaute Junior
Re : Peut on demander à une textbox de mémoriser des valeurs ?

Re bonjour,
Je comprend pas cela a marché et plus maintenant...
J'ai à nouveau une erreur de compilation...
Je souhaite que la combobox5 n'ai pas de valeurs enregistrées mais qu'elles s'enregistre au fur et à mesure que je les saisies.
Voici le code :

Option Explicit
Dim F As Worksheet
Private Sub UserForm1_Activate()
Set F = BD
iniC
End Sub

Private Sub ini(C)
C.BD = F.Range("A1", F.[A6500].End(xlUp)).Value
C = ""
End Sub

'Pour le bouton enregistrer
Private Sub CommandButton1_Click()
If Not F.[A:A].Find(C) Is Nothing Then le message qui apparait est variable non définie
MsgBox "déjà incluse dans la liste", 16, "Saisie invalidée..."
C = "": Exit Sub
End If
If MsgBox("Confirmez-vous l’insertion de cette nouvelle aide ?", 4, "Demande de confirmation d’ajout") = 7 Then C = "": Exit Sub
F.Cells(F.[A65536].End(xlUp).Row, 1)(2) = C
iniC
ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="crha33", UserInterfaceOnly:=True
Dim L As Integer
If MsgBox("Confirmez-vous l’insertion de cette nouvelle aide ?", vbYesNo, "Demande de confirmation d’ajout") = vbYes Then
L = Sheets("BD").Range("A65536").End(xlUp).Row + 1
Range("A" & L).Value = ComboBox5
Dim Date1 As Date
Date1 = DTPicker1.Value
Range("B" & L).Value = Date1
Range("C" & L).Value = ComboBox1
Range("D" & L).Value = TextBox2
Range("E" & L).Value = TextBox3
Range("F" & L).Value = ComboBox2
Range("G" & L).Value = ComboBox3
Range("H" & L).Value = ComboBox4
Dim Date2 As Date
Date2 = DTPicker2.Value
Range("I" & L).Value = Date2
Range("J" & L).Value = TextBox4
Range("K" & L).Value = TextBox5
Dim Date3 As Date
Date3 = DTPicker3.Value
Range("L" & L).Value = Date3
Range("N" & L).Value = TextBox6
Range("O" & L).Value = TextBox7
Range("P" & L).Value = TextBox8
Range("Q" & L).Value = TextBox9
Dim Ctrl As Control
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.TextBox Then Ctrl.Value = ""
Next Ctrl
End If
End Sub

Je ne peux joindre le fichier car il est trop lourd...
Merci d'avance pour votre aide !
 
Dernière édition:

Zdz16

XLDnaute Occasionnel
Re : Peut on demander à une textbox de mémoriser des valeurs ?

Bonjour Mhz;

Pas de soucis pour t'aider, mais il serai judicieux de joindre un fichier allégé (avec Quelques lignes de data). Cela peut m'aider à localiser facilement les anomalies. Le fait de coller les lignes VBA à avec ton post ne me permet pas de tester ou de suivre correctement l'utilisation afin de réagir. En première remarque, la lecture rapide des lignes collées, montre, sauf erreur de ma part que l'appel à la routine Ini n'a pas de paramètre.

Cordialement
 
Dernière édition:

mhz

XLDnaute Junior
Re : Peut on demander à une textbox de mémoriser des valeurs ?

J'ai réduis au minimum mon fichier et le userform.
Voilà le fichier
 

Pièces jointes

  • Base de données test.xlsm
    18.4 KB · Affichages: 48
  • Base de données test.xlsm
    18.4 KB · Affichages: 32

Si...

XLDnaute Barbatruc
Re : Peut on demander à une textbox de mémoriser des valeurs ?

Salut

Re bonjour,
Je comprend pas cela a marché et plus maintenant...
J'ai à nouveau une erreur de compilation...
Je souhaite que la combobox5 n'ai pas de valeurs enregistrées mais qu'elles s'enregistre au fur et à mesure que je les saisies.
Voici le code :

Option Explicit
Dim F As Worksheet
Private Sub UserForm1_Activate()
Set F = BD
iniC
End Sub

Private Sub iniC <----------------- il y avait une erreur
C.Liste = F.Range("A1", F.[A6500].End(xlUp)).Value
C = ""
End Sub

'Pour le bouton enregistrer
Private Sub CommandButton1_Click()
If Not F.[A:A].Find(C) Is Nothing Then le message qui apparait est variable non définie

dans les différentes macros remplace C par combobox5 (ou autre)

attention aux noms des contrôles.
Regarde la pièce jointe 917223
 

Pièces jointes

  • Nom d'objet.jpg
    Nom d'objet.jpg
    49.8 KB · Affichages: 31

Zdz16

XLDnaute Occasionnel
Re : Peut on demander à une textbox de mémoriser des valeurs ?

Salut Mhz, bonjour Si..

Bon, j'ai un peu remanier le source, afin de le rendre plus claire et l'adapter à l'exemple Liste.xlsm, pour enfin aboutir à l'exemple ci-joint. Je ne dispose pas du control DTPicker, mais je l'ai remplacer par un ComboBox. Tu pourrais facilement l'adapter. Enfin, si tu permet quelques conseils de base

Ne déclare pas des variables n'importe où dans le source, essaye de les mettre toujours au début de la routine
Utilise CALL pour faire des appels au Sub
Ne fait pas directement de concaténation String/numérique, mais plutôt convertit le tout en string et concatène

Cordialement
 

Pièces jointes

  • liste.xlsm
    26.6 KB · Affichages: 38
  • liste.xlsm
    26.6 KB · Affichages: 56
  • liste.xlsm
    26.6 KB · Affichages: 53

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz