Bonjour à tous,

Je suis pas très performant en VBA, et même après beaucoup de lectures et d'essais sur mon code, je ne parviens pas à résoudre le souci...

J'ai fait un UserForm VBA qui me permet de rentrer des valeurs (8 lignes à chaque fois) à insérer dans une tableau de 7 colonnes, à partir de la ligne 21 et colonne H.
Je veux que l'insertion se fasse maximum 9 fois d'affilée.
J'ai une CmdBox qui me permet de valider la saisie et l'insérer dans la feuille, voici son code :
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
 
Private Sub CmdNouvelle_Click()
    If IDStructure = "" Then
        MsgBox " Identifiant structure obligatoire"
        IDStructure.SetFocus
        Exit Sub
    End If
 
Dim i, cell As Byte
cell = 21
For i = 1 To 8
 
     If Sheets("Fiche").Cells(cell + i, 8) = "" Then
        Sheets("Fiche").Cells(cell + i, 8) = Saisie3F.Controls("IDStructure")
        Sheets("Fiche").Cells(cell + i, 9) = Saisie3F.Controls("Embranchement" & i)
        Sheets("Fiche").Cells(cell + i, 10) = Saisie3F.Controls("Recouvrement" & i)
        Sheets("Fiche").Cells(cell + i, 11) = Saisie3F.Controls("Sp1_" & i)
        Sheets("Fiche").Cells(cell + i, 12) = Saisie3F.Controls("Sp2_" & i)
        Sheets("Fiche").Cells(cell + i, 13) = Saisie3F.Controls("Sp3_" & i)
        Sheets("Fiche").Cells(cell + i, 14) = Saisie3F.Controls("Sp4_" & i)
 
    Else:
    cell = cell + 8
        If Sheets("Fiche").Cells(cell + i, 8) = "" Then
        Sheets("Fiche").Cells(cell + i, 8) = Saisie3F.Controls("IDStructure")
        Sheets("Fiche").Cells(cell + i, 9) = Saisie3F.Controls("Embranchement" & i)
        Sheets("Fiche").Cells(cell + i, 10) = Saisie3F.Controls("Recouvrement" & i)
        Sheets("Fiche").Cells(cell + i, 11) = Saisie3F.Controls("Sp1_" & i)
        Sheets("Fiche").Cells(cell + i, 12) = Saisie3F.Controls("Sp2_" & i)
        Sheets("Fiche").Cells(cell + i, 13) = Saisie3F.Controls("Sp3_" & i)
        Sheets("Fiche").Cells(cell + i, 14) = Saisie3F.Controls("Sp4_" & i)
        End If
 
    End If
Next i
    Saisie3F.Hide 'masque le formulaire
    Unload Saisie3F 'ca le sort de la mémoire
    MsgBox "Ajouté à la fiche"
    Saisie3F.Show 'Affiche à nouveau le formulaire pour poursuivre la saisie
End Sub
Cela marche pour les 2 premières itérations, mais ensuite, à chaque fois que je re-soumet le formulaire, il me supprime une ligne a partir du haut, puis deux, puis trois et ainsi de suite...
Je me doute qu'il y a un problème dans ma boucle mais je n'arrive pas à le trouver...

Merci d'avance, et désolé d'avance pour mon code qui doit être loin de celui d'un programmateur..

Etienne