Bonjour,

J'ai créé un code permettant d'alimenter un tableau via un formulaire, mais de temps en temps au lieu de me mettre les données sur une nouvelle ligne ça m'écrase mes libellés de colonnes.
Je ne comprends pas d'où provient l'erreur surtout que ce n'est pas systématique.

Le fichier étant trop volumineux je n'arrive pas à le déposer sur le forum donc voici le code que j'ai raccourci :

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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Private Sub Valider_Click()
    Dim i As Long
    Dim j As Long
    Dim y As Long
    Dim rng As Range
 
    ' Contrôle des données saisies
    If Formulaire_saisie_bons.Mvt_bon = "" Or Formulaire_saisie_bons.Transporteur = "" _
    Or Formulaire_saisie_bons.N°_lot = "" Or Formulaire_saisie_bons.N°_bon = "" _
    Or Formulaire_saisie_bons.Catégorie = "" Or Formulaire_saisie_bons.Poids_brut = "" _
    Or Formulaire_saisie_bons.Céréale1 = "" Or Formulaire_saisie_bons.Impureté = "" _
    Or Formulaire_saisie_bons.Xcéréale1 = "" Or Formulaire_saisie_bons.Zone1 = "" Then
        MsgBox "Veuillez renseigner tous les champs", _
            vbExclamation, strAppName
        Formulaire_saisie_bons.Date_bon.SetFocus
        Exit Sub
    End If
 
    If Not (Oui Or Non) Then
        MsgBox "METEIL : oui ou non", vbExclamation, strAppName
        Formulaire_saisie_bons.Non.SetFocus
        Exit Sub
    End If
 
    With ThisWorkbook.Worksheets("SUIVI DES ENTREES & SORTIES")
    .Activate
        ' Ajout du bon sur la 1ère ligne vide
        If bNouveau Then
            i = .Range("A" & Rows.Count).End(xlUp).Row + 1
        Else
 
        ' Modification du bon sélectionné
        i = ListeBons.ListIndex + 2
        End If
        If Oui Then
            .Cells(i, 4) = "OUI"
        Else
            .Cells(i, 4) = ""
        End If
 
        If Oui = True Then
 
            If Formulaire_saisie_bons.Poids_normes2.Value = "" Then
            MsgBox "Veuillez cliquer sur le bouton 'Poids aux normes 2' avant de valider", vbExclamation, strAppName
            Formulaire_saisie_bons.Bouton_PN2.SetFocus
            Exit Sub
            End If
        .Cells(i, 1) = Formulaire_saisie_bons.Date_bon.Value
        Formulaire_saisie_bons.Date_bon.Value = Format(Formulaire_saisie_bons.Date_bon.Value, "dd/mm/yyyy")
        .Cells(i, 2) = Formulaire_saisie_bons.Mvt_bon
        .....
 
        Else:
        .Cells(i, 1) = Formulaire_saisie_bons.Date_bon.Value
        Formulaire_saisie_bons.Date_bon.Value = Format(Formulaire_saisie_bons.Date_bon.Value, "dd/mm/yyyy")
        .Cells(i, 2) = Formulaire_saisie_bons.Mvt_bon
        .....
 
        End If
 
 
        ' Tri par date
        Tri_Date
    End With
 
 
        'Réaffichage de la liste des bons
        Affiche_Bons
        Init_Bons
 
 
End Sub