Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Modifier, créer données etc. dans TextBox

  • Initiateur de la discussion Initiateur de la discussion JPP01
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

JPP01

Guest
Bonjour,

Je suis débutant en VBA, malgré mes gros efforts et les heures passées sur les fils, j'ai bien du mal à faire un petit travail qui doit être simpliste pour vous.

Voici mon souhait, j'aimerai à partir des différents TextBox contenus dans UserForm: modifier,compléter, mettre des nombres etc.. au choix des noms sélectionnés par ListeBox sur une liste pré-établie à partir de la Feuil2.
Hors, je n'arrive pas à faire inscrire les nouvelles données dans la feuill2, mais sur ma Feuill1 et en plus de manière incomplète !.

Pour la compréhension ci-joint mon fichier de débutant

Je remercie par avance de ce que vous pourrez faire avec quelques petites explications peut-être? . JP
 

Pièces jointes

Re : Modifier, créer données etc. dans TextBox

Bonsoir JPP, bonsoir le forum,

Plusieurs incohérences dans l'UserForm2 rendent la tâche difficile.

D'abord l'initialisation. Il ne faut pas nommer l'Userform pour les procédures. Pour éviter ce genre d'erreur, plutôt que de taper le nom de la procédure d'un objet, sélectionne-le puis [F7] puis choisis la procédure dans la liste des procédures. Cela aurait donner pour l'Userform2 : Private Sub UserForm_Initialize() plutôt que Private Sub UserForm2_Initialize() qui produit autant d'effet qu'une déjection d'urine dans un Stradivarius...

Ensuite tu avais attribué à la propriété RowSource de la ComboBox1 la valeur : Feuil2!A1:A241. Le code d'initialisation qui rendait dynamique l'alimentation de cette ComboBox1 ne servait à rien. C'est soit l'un, soit l'autre. J'opterai bien évidemment pour la méthode dynamique. Donc il faut supprimer la valeur de la propriété RowSource de cette ComboBox1.
Voici le code :
Code:
Private Sub UserForm_Initialize()
Dim Plg As Range 'déclare la variable Plg
Dim i As Byte 'déclare la variable i
 
With Sheets("Feuil2") 'prend en compte l'onglet "Feuil2"
    .Select 'sélectionne
    Set Plg = .Range("A2:A" & .Range("A65536").End(xlUp).Row) 'définit la variable Plg
End With 'fin de la prise en compte de l'onglet "Feuil2"
 
ComboBox1.List = Plg.Value 'alimente la ComboBox1
End Sub

Ensuite l'idée d'utiliser une boucle pour renseigner les textboxes me paraît excellente mais à condition que ces textboxes suivent la logique des colonnes. C'est un peu le b... dans ton Userform2.
Ta TextBox7 est la date qui est placé en dernier dans le tableau...
Ta TextBox8 devrait ête un Label
Elles ne sont pas rangées dans l'ordre des colonnes et il y en a mois que de colonnes à renseigner...

Je ne comprends pas la largeur important de la TextBox1 alors que la colonne B est toute petite...
En plus il y a ces deux checkboxes qui sur le tableau (colonne I) équivalent à une valeur. Alors là mystère ?
D'abord pour un Oui/Non il faudrait des boutons d'option (OptionButtons) plutôt que des case à cocher (checkboxes) car c'est, en principe, oui ou non et pas oui et non. Ensuite comment éditer une valeur ? Je pense qu'il faudrait tout simplement un textbox dans laquelle on éditerait (ou pas) la valeur.

Dernière chose. Ton UserForm2 manque d'étiquettes (labels) indiquant à quoi correpondent les champs à éditer (ton tableau aussi d'ailleurs manque de titres).

En résumé, si tu mets tout dans l'ordre avec 16 textboxes (correspondant aux 16 colonnes de ton tableau), le code suivant devrait convenir :
Code:
Private Sub ComboBox1_Change() 'au changement de la ComboBox1
Dim i As Byte  'déclare la variable i
 
If ComboBox1.ListIndex > -1 Then 'si une nom de la liste est choisi
    'définit la variable Ligne
    Ligne = ComboBox1.ListIndex + 2 'attention le premier de la liste à 0 comme index
    For i = 1 To 16 'boucke sur les 16 textboxes
        Me.Controls("TextBox" & i).Value = Cells(Ligne, i + 1) 'renseigne la textbox
    Next i 'prochaine textbox de la boucle
Else 'si un nouveau nom est édité
    Ligne = .Range("A65536").End(xlUp).Row + 1
End If
End Sub
 
Private Sub cmbMVALID_Click() 'bouton "Valider"
Dim i As Byte  'déclare la variable i
 
Cells(Ligne, 1) = ComboBox1.Value 'place la donnée de la ComboBox1 dans le tableau
For i = 1 To 16 'boucle sur les 16 textboxes
    Cells(Ligne, i + 1) = Me.Controls("TextBox" & i).Value 'renseigne le tableau
Next i 'prochaine textbox de la boucle
Unload Me
End Sub
 
Re : Modifier, créer données etc. dans TextBox

Grand merci Robert,

Heu, j'ai décroché du fil... car je suis allé voir le Match de rugby Fr/Angl.
Bref, me voici revenu, et je suis ravis car tu m'as donné de très bonnes explications que j'étudie en ce moment, pour application ensuite suivant tes directives.
Je te re-posterai pour te tenir informé du déroulement de ces procédures.
Merci encore et bonne nuit.

P.S en ce qui concerne le stradivarius, je joue du sax et pss. dedans c'est pas vraiment génial! °))
 
Re : Modifier, créer données etc. dans TextBox

ben,

Vois pas trop la relation entre un Stad (que je respecte, voir mon profil)..... et un sax tout à fait ordinaire..... et en plus des allusions dont on peut se passer..................
 
Re : Modifier, créer données etc. dans TextBox

Oups! voulais pas te fâcher, donc désolé pour l'allusion mal écrite! c'était un clin d'oeil, par rapport à ta remarque sur mon UserForm : "UserForm2_Initialize() qui produit(...)" que j'avais prise avec humour.

Amicalement

A plus
JPP
 
Re : Modifier, créer données etc. dans TextBox

Bonsoir, le fil, bonsoir le forum,

Hé te bile pas JPP c'était aussi de l'humour de la part je Jean-Pierre ! C'est vrai que je n'avait pas pensé à son avatar quand j'ai écrit... Promis je ne pisserais plus que dans des violoncelles...
 
Re : Modifier, créer données etc. dans TextBox

Re, et pour un salut à l'ami Robert,

Bof, je n'aime pas certes, mais j'en rigole tout de même....

Pour Robert : pourquoi un violoncelle....? Une contrebasse est plus spacieuse.......

C'est week-end sur XLD.....
 
Re : Modifier, créer données etc. dans TextBox

Merci à Robert & à son violoncelliste(J.P) et le Forum,

Robert, tes explications ont été suivies pas à pas, et cela m'a permis de progresser dans la Gde aventure du VBA, le nettoyage et autres conseils que tu m'a prodigué ont été efficaces- tout fonctionne à merveille comme je l'avais souhaité.

Encore merci à Robert et au forum.

Bon dimanche à vous tous.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…