Bonjour à tous,
Nous sommes des étudiants et devons réaliser un projet sur excel en VBA. N'étant pas informaticien, nous nous débrouillons avec le peu appris en cours et les tutoriaux sur internet. Mais nous sommes bloqué depuis peu et n'arrivons pas à comprendre d'où viennent nos erreurs.
Il nous a fallu créer des boutons de commande "créer", "modifier", "rechercher", "supprimer"
Lorsque nous rentrons nos données dans les champs que nous avons établi dans nos différents userforms, le bouton "créer" focntionne à merveille et insère les valeurs dans nos feuilles excels. Cependant, lorsqu'il s'agit d'utiliser les autres commandes, nous rencontrons différents problèmes:
soit cela supprime nos en-têtes, soit cela rajoute une ligne, etc..
J'espère que vous pourrez nous mettre sur une piste
Merci d'avance
Voici ce que nous avons codés pour un de nos formulaires nommé "Employés":
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 Private Sub CB_Créer_Click() Dim ws As Worksheet Dim i As Long Set ws = Worksheets("Employés") 'Trouver la première cellule disponible i = ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row 'Vérifier si le nom existe If Trim(Me.nom_TB.Value) = "" Then Me.nom_TB.SetFocus MsgBox "Entrez un nom" Exit Sub End If 'Entrer les données dans le ws ws.Cells(i, 1).Value = Me.nom_TB.Value ws.Cells(i, 2).Value = Me.Prénom_TB.Value ws.Cells(i, 3).Value = Me.Fonction_TB.Value ws.Cells(i, 4).Value = Me.Matricule_TB.Value ws.Cells(i, 5).Value = Me.Date_Naissance_TB.Value ws.Cells(i, 6).Value = Me.Adresse_TB.Value ws.Cells(i, 7).Value = Me.Code_postal_TB.Value ws.Cells(i, 8).Value = Me.Ville_TB.Value ws.Cells(i, 9).Value = Me.Pays_TB.Value ws.Cells(i, 10).Value = Me.TB_Salaire.Value ws.Cells(i, 11).Value = Me.Téléphone_TB.Value ws.Cells(i, 12).Value = Me.GSM_TB.Value ws.Cells(i, 13).Value = Me.Email_TB.Value 'Initialiser les données Me.nom_TB.Value = "" Me.Prénom_TB.Value = "" Me.Fonction_TB.Value = "" Me.Matricule_TB.Value = "" Me.Date_Naissance_TB.Value = "" Me.Adresse_TB.Value = "" Me.Code_postal_TB.Value = "" Me.Ville_TB.Value = "" Me.Pays_TB.Value = "" Me.TB_Salaire = "" Me.Téléphone_TB.Value = "" Me.GSM_TB.Value = "" Me.Email_TB.Value = "" Me.nom_TB.SetFocus 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
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Private Sub CB_Modifier_Click() Dim ws As Worksheet Dim i As Long Set ws = Worksheets("Employés") 'Sélectionner la ligne à modifier i = Me.SpinButton1.Value 'Vérifier si le nom existe If Trim(Me.nom_TB.Value) = "" Then Me.nom_TB.SetFocus MsgBox "Entrez un nom" Exit Sub End If 'Entrer les données dans le ws ws.Cells(i, 1).Value = Me.nom_TB.Value ws.Cells(i, 2).Value = Me.Prénom_TB.Value ws.Cells(i, 3).Value = Me.Fonction_TB.Value ws.Cells(i, 4).Value = Me.Matricule_TB.Value ws.Cells(i, 5).Value = Me.Date_Naissance_TB.Value ws.Cells(i, 6).Value = Me.Adresse_TB.Value ws.Cells(i, 7).Value = Me.Code_postal_TB.Value ws.Cells(i, 8).Value = Me.Ville_TB.Value ws.Cells(i, 9).Value = Me.Pays_TB.Value ws.Cells(i, 10).Value = Me.TB_Salaire.Value ws.Cells(i, 11).Value = Me.Téléphone_TB.Value ws.Cells(i, 12).Value = Me.GSM_TB.Value ws.Cells(i, 13).Value = Me.Email_TB.Value Me.nom_TB.SetFocus End Sub
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub CB_Quitter_Click() Unload Me 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
20
21
22
23
24
25
26
27
28
29
30
31
32
33 Private Sub CB_Rechercher_Click() Dim ws As Worksheet Dim i As Long Set ws = Worksheets("Employés") 'Recherche Nom For i = 1 To ws.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row Step 1 If InStr(1, ws.Cells(i, 1).Value, Me.nom_TB.Value, 1) Then Exit For End If Next i 'Retrouver la fiche ws.Cells(i, 1).Value = Me.nom_TB.Value ws.Cells(i, 2).Value = Me.Prénom_TB.Value ws.Cells(i, 3).Value = Me.Fonction_TB.Value ws.Cells(i, 4).Value = Me.Matricule_TB.Value ws.Cells(i, 5).Value = Me.Date_Naissance_TB.Value ws.Cells(i, 6).Value = Me.Adresse_TB.Value ws.Cells(i, 7).Value = Me.Code_postal_TB.Value ws.Cells(i, 8).Value = Me.Ville_TB.Value ws.Cells(i, 9).Value = Me.Pays_TB.Value ws.Cells(i, 10).Value = Me.TB_Salaire.Value ws.Cells(i, 11).Value = Me.Téléphone_TB.Value ws.Cells(i, 12).Value = Me.GSM_TB.Value ws.Cells(i, 13).Value = Me.Email_TB.Value Me.nom_TB.SetFocus 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
20
21
22
23
24
25
26
27
28
29
30 Private Sub CB_Supprimer_Click() Dim ws As Worksheet Dim i As Long Set ws = Worksheets("Employés") 'Trouver la première cellule disponible i = Me.SpinButton.Value 'Supprimer une donnée ws.Rows(i).EntireRow.Delete 'Initialiser les données Me.nom_TB.Value = "" Me.Prénom_TB.Value = "" Me.Fonction_TB.Value = "" Me.Matricule_TB.Value = "" Me.Date_Naissance_TB.Value = "" Me.Adresse_TB.Value = "" Me.Code_postal_TB.Value = "" Me.Ville_TB.Value = "" Me.Pays_TB.Value = "" Me.TB_Salaire = "" Me.Téléphone_TB.Value = "" Me.GSM_TB.Value = "" Me.Email_TB.Value = "" Me.nom_TB.SetFocus 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
20
21
22
23
24
25
26
27
28
29
30 Private Sub SpinButton_1Change() Dim ws As Worksheet Dim i As Long Set ws = Worksheets("Employés") i = Me.SpinButton.Value 'Empêche de trop remonter If i < 2 Then i = 2 SpinButton1.Value = 1 End If Me.nom_TB.Value = ws.Cells(i, 1).Value Me.Prénom_TB.Value = ws.Cells(i, 2).Value Me.Fonction_TB.Value = ws.Cells(i, 3).Value Me.Matricule_TB.Value = ws.Cells(i, 4).Value Me.Date_Naissance_TB.Value = ws.Cells(i, 5).Value Me.Adresse_TB.Value = ws.Cells(i, 6).Value Me.Code_postal_TB.Value = ws.Cells(i, 7).Value Me.Ville_TB.Value = ws.Cells(i, 8).Value Me.Pays_TB.Value = ws.Cells(i, 9).Value Me.TB_Salaire.Value = ws.Cells(i, 10).Value Me.Téléphone_TB.Value = ws.Cells(i, 11).Value Me.GSM_TB.Value = ws.Cells(i, 12).Value Me.Email_TB.Value = ws.Cells(i, 13).Value End Sub
Partager