Bonjour,
Pour commencer, je souhaite vous informer que je suis un débutant ++++ en vba. Je me suis lancé dans le projet de mettre en place un planning d'activité concernant un groupe spécialisé de ma profession.
Je fais donc les chose au fur et à mesure en apprenant (mais plus on vieillit et moins c'est facile). D'ailleurs Boisgontierjacques m'a bien aidé
Mon problème actuelle est que je souhaiterai que mes entête de colonne soient sur la frame "liste du personnel" et non pas sur l'userform (voir fichier joint) et je ne vois pas; ne sait pas quel code mettre dans le userform_initialize
Merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Option Compare Text Dim Rng, TblBD(), ColRech, NomTableau Private Sub UserForm_Initialize() 'http://boisgontierjacques.free.fr NomTableau = "Tabl_Pers" Set D = CreateObject("Scripting.Dictionary") Set Rng = Range(NomTableau) TblBD = Rng.Value Me.ListBox1.List = TblBD ColRech = 3 D("*") = "" For I = LBound(TblBD) To UBound(TblBD) D(TblBD(I, ColRech)) = "" Next I Me.Cmd_search.List = D.keys ' liste des professions sans doublons Me.ListBox1.ColumnCount = Rng.Columns.Count EnteteListBox End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 Private Sub Cmd_search_click() id = Me.Cmd_search: n = 0 Dim Tbl() For I = 1 To UBound(TblBD) If TblBD(I, ColRech) Like id Then n = n + 1: ReDim Preserve Tbl(1 To UBound(TblBD, 2), 1 To n) For k = 1 To UBound(TblBD, 2): Tbl(k, n) = TblBD(I, k): Next k End If Next I Me.ListBox1.Column = Tbl End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub EnteteListBox() x = Me.ListBox1.Left + 8 Y = Me.ListBox1.Top + 45 For I = 1 To Me.ListBox1.ColumnCount Set lab = Me.Controls.Add("Forms.Label.1") lab.Caption = Rng.Offset(-1).Cells(1, I) lab.Top = Y lab.Left = x x = x + Int(Rng.Columns(I).Width * 1.1) temp = temp & Int(Rng.Columns(I).Width * 1.1) & ";" Next temp = Left(temp, Len(temp) - 1) Me.ListBox1.ColumnWidths = temp End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Private Sub CommandButton_enregister_Click() If TextBox_name.Value = "" And ComboBox_fonct = "" And TextBox_d_deb = "" Then Dd = MsgBox("Merci de renseigner" & Chr(10) & Chr(10) & "- Nom," & Chr(10) & "- Prénom," & Chr(10) & "- Fonction", 48, "Erreur") Else 'Si Ok ligne_insertion = Sheets(DATASOURCEFEUIL).Range("D65000").End(xlUp).Row + 1 Sheets(DATASOURCEFEUIL).Cells(ligne_insertion, 4) = TextBox_name.Value Sheets(DATASOURCEFEUIL).Cells(ligne_insertion, 5) = ComboBox_fonct.Value Sheets(DATASOURCEFEUIL).Cells(ligne_insertion, 6) = CDate(TextBox_d_deb.Value) MsgBox "votre agent à bien été ajouté", vbOKOnly + vbInformation, "CONFIRMATION" End If End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 Private Sub Cmd_Recherche_Click() If Not Cmd_search.Value = "" Then Dim no_ligne As Integer no_ligne = Cmd_search.ListIndex + 2 ComboBox_fonct.Value = Cells(no_ligne, 5) TextBox_name.Value = Cells(no_ligne, 4) TextBox_d_deb = Cells(no_ligne, 6) Else End If CommandButton_enregister.Enabled = False End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 Private Sub Cmd_change_Click() If Not Cmd_search.Value = "" Then Sheets("Cfg").Select modif = Cmd_search.ListIndex + 2 Cells(modif, 5) = ComboBox_fonct.Value Cells(modif, 4) = TextBox_name.Value Cells(modif, 6) = TextBox_d_deb MsgBox ("Modification effectuée") Else MsgBox ("Veuillez sélectionner le Nom & Prénom de la personne à modifier") End If Unload Usf_Pers Usf_Pers.Show End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Private Sub CommandButton_annuler_Click() Unload Me End Sub
Musar_FRA8C_Pre_NAP_v2.xlsm
Partager