UserForm modification de données
Bonjour,
J'ai un assez gros fichier dzl mais mon UserForm nécessite pas mal de données.
Je suis novice en VBA ce que je vous joins est mon premier code en VBA donc soyez gentil ^^
Le principe est celui d'un formulaire de saisie classique sauf que dans mon cas c'est pour gérer des stages de formations.
Je sélectionne un nom, un stage et j'indique la date et je coche une des 3 OptionButton (Inscrit, Présent, Absent).
Si c'est une incription pas de soucis j'ajoute une nouvelle ligne à la suite de la précédente et zou !!
Par contre, là où je bloque c'est pour la modification de données...J'ai un deuxième UserForm dans lequel je souhaite faire les modifications mais là je bloque.... J'ai marqué ce que je souhaite faire dans l'onglet de mon fichier.
Par avance merci à vous !!!!
Edit -----------------------------------------------
Le bon fichier est en dessous
Bonjour
lerbofiwol a écrit :J'ai un deuxième UserForm
Où est-il ? Je n'en trouve qu'un seul...
J'ai marqué ce que je souhaite faire dans l'onglet de mon fichier.
Où ça ? Sur quel onglet ? Je ne trouve rien nulle part...
Bye !
Voici le bon fichier dzl je me suis planté..
Bonjour
Déjà répondu....https://forum.excel-pratique.com/excel/userform-modification-de-donnees-t74698.html
Les optionButton fonctionnent dans le dernier fichier.
Dzl mais c'est incompréhensible ce que tu as fait 1000...
Donc pour résumer :
Le formulaire comprend deux listes déroulantes avec choix en cascade (Combobox1 ET 2), ce qui te permettra, si il y a plusieurs NOMS identiques dans la colonne NOM, de faire la sélection par le Prénom.
Dans le programme, ce choix en cascade est défini :
a) Dans initialize par :
With Me.ComboBox2
.ColumnCount = 2
.ColumnWidths = "-1;0"
End With
InitCombo1 'Lance le programme InitCombo1 développé ci-desous
b) Alimentation de la Combobox1
Sub InitCombo1()
Dim J As Long
Dim Mondico As Object
Set Mondico = CreateObject("Scripting.dictionary")
For J = 2 To NbLignes
Mondico(Ws.Range("A" & J).Value) = ""
Next J
With Me.ComboBox1
.Clear
If Mondico.Count > 0 Then
.List = Application.Transpose(Mondico.keys)
End If
End With
End Sub
c) Dès lors que le choix est effectué dans la Combobox1 => alimentation de la Combobox2
Private Sub ComboBox1_Change()
Dim J As Long
Me.ComboBox2.Clear 'Efface les données de la combobox2
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
With Me.ComboBox2
For J = 2 To NbLignes
If Ws.Range("A" & J) = Me.ComboBox1 Then
.AddItem Ws.Range("B" & J)
.List(.ListCount - 1, 1) = J
End If
Next J
End With
End Sub
d) Après choix dans la Combobox2 alimentation du formulaire pour toutes les texbox et valeur des OptionButton en fonction des donnés de la TB7
Private Sub ComboBox2_Change()
Dim Ligne As Long
Dim i As Integer
If Me.ComboBox2.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox2.List(Me.ComboBox2.ListIndex, 1)
For i = 1 To 8
Me.Controls("TB" & i) = Ws.Cells(Ligne, i + 2)
Next i
If TB7 = "Inscrit" Then
inscrit.Value = True
ElseIf TB7 = "Présent" Then
present.Value = True
ElseIf TB7 = "Absent" Then
absent.Value = True
End If
End Sub
L'ordre des Combobox et TextBox (Renommées TB => Explications ici https://cellulexcel.blogspot.fr/p/excel-creer-un-formulaire-complexe.html) en ligne 3
Sur mon blog à cette page https://cellulexcel.blogspot.fr/p/qui-na-pas-un-jour-utilise-loption.html, tu as déjà des explications basiques pour la création d'un formulaire.... un peu de lecture t'aidera à comprendre la programmation.
Ne t'inquiètes pas ce n'est pas compliqué et il y a tous les jours des lecteurs qui me remercient pour la clarté des explications... donc je pense que c'est à la portée de tout le monde .... Bon courage.
et1000lio....je n'ai pas besoin d'une pub pour un blog qui t'apprend à faire du copier coller ! Si j'ai fermé mon précédent post c'est car ta solution ne me convient pas du tout malgrès de nombreux essais !!
De plus, dans ton blog tu n'expliques que les parties "faciles" des codes VBA présents !! Tout se qui est complexe et qui permet de rechercher les noms dans tel ou tel colonne de le rebalancer dans la ComboBox de lier une autre en cascade avec la première et récupérer les infos en fonction du choix de la première ComboBox rien de tout celà est dit !!!
Alors s'il te plaît laisse quelqu'un d'autre me proposer une solution !!! Je suis encore obligé de fermer le sujet pour en rouvrir un autre pour que quelqu'un d'autre puisse m'aider !!
Par ailleurs, si je transmet ma question sur ce forum c'est parce que j'ai regardé ailleurs auparavant et que malgrès tout je n'ai pas réussi !! Ce forum par sa communauté propose une aide adaptée à ton besoin. Je n'ai encore une fois nul besoin d'être redirigé vers un quelconque blog pour augmenter le nombre de visite de celui-ci.