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