Bonjour,

Je relance mon sujet concernant l'archivage de ma feuille Excel à partir d'un UserForm.

Contexte:
Les utilisateurs disposent d'un UF simple à compléter. (Voir photo ci-dessous)
Nom : 1.png
Affichages : 114
Taille : 10,7 Ko

Lorsque l'utilisateur valide l'UF, les données rentrées dans l'UF sont transférées vers une feuille Excel appelée "Suivi affaires". Au fur et à mesure des demandes, les données sont incrémentées dans cette même feuille Excel. Jusque ici tout est OK.

Problème:
Seulement on peut remarquer dans l'UF que l'utilisateur peut cocher 3 cases différentes. CAO, Maquettage et Impression 3D. Pour l'instant on s'occupera seulement des cases CAO et Maquettage. Mon problème est que lorsque je valide un UF avec la case CAO à cocher, les données sont transférées dans la feuille principale (Suivi affaires) et également dans une autre feuille appelée "CAO". Même chose lorsque la case "Maquettage" est cochée. Seulement sur ces 2 feuilles là, l'incrémentation ne ce passent pas très bien. L'incrémentation ne se déroule pas ligne par ligne. Cela veut dire que si je varie mes demandes, j'aurais dans mon onglet "CAO" des lignes vides, ce qui me pose problème.

Voici la code que j'ai rédigé:
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
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
Private Sub valider_Click()
Dim Lig, LigCAO, LigMaq As Long
LigCAO = 4
Lig = 4 ' Première ligne à vérifier
LigMaq = 4
 
    If vieserie.Value = "" Or secteur.Value = "" Or demandeur.Value = "" Or date_demande.Value = "" Or delai.Value = "" Or objet.Value = "" Or pilote.Value = "" Or pilote.Value = "" Or priorite.Value = "" Then
    MsgBox "Veuillez remplir tous les champs"
        Else
            Do While Not IsEmpty(Range("A" & Lig))
            Lig = Lig + 1
            Loop
            Worksheets("Suivi affaires").Range("A" & Lig).Value = vieserie
 
                Do While Not IsEmpty(Range("B" & Lig))
                Lig = Lig + 1
                Loop
                Worksheets("Suivi affaires").Range("B" & Lig).Value = secteur
 
            Do While Not IsEmpty(Range("C" & Lig))
            Lig = Lig + 1
            Loop
            Worksheets("Suivi affaires").Range("C" & Lig).Value = demandeur
 
                Do While Not IsEmpty(Range("D" & Lig))
                Lig = Lig + 1
                Loop
                Worksheets("Suivi affaires").Range("D" & Lig).Value = date_demande
 
            Do While Not IsEmpty(Range("E" & Lig))
            Lig = Lig + 1
            Loop
            Worksheets("Suivi affaires").Range("E" & Lig).Value = delai
 
                Do While Not IsEmpty(Range("F" & Lig))
                Lig = Lig + 1
                Loop
                Worksheets("Suivi affaires").Range("F" & Lig).Value = objet
 
            Do While Not IsEmpty(Range("G" & Lig))
            Lig = Lig + 1
            Loop
            Worksheets("Suivi affaires").Range("G" & Lig).Value = pilote
 
                Do While Not IsEmpty(Range("H" & Lig))
                Lig = Lig + 1
                Loop
                Worksheets("Suivi affaires").Range("H" & Lig).Value = priorite
 
            Unload UserForm1
 
            If CAO.Value = True Then
            Do While Not IsEmpty(Range("I" & Lig))
                Lig = Lig + 1
            Loop
                Worksheets("Suivi affaires").Range("I" & Lig).Value = "X"
                Do While Not IsEmpty(Range("D" & LigCAO))
                LigCAO = LigCAO + 1
                Loop
                Worksheets("CAO").Range("D" & LigCAO).Value = priorite
                Worksheets("CAO").Range("E" & LigCAO).Value = date_demande
                Worksheets("CAO").Range("F" & LigCAO).Value = objet
                Worksheets("CAO").Range("G" & LigCAO).Value = demandeur
                Worksheets("CAO").Range("H" & LigCAO).Value = secteur
                Else
                Sheets("Suivi affaires").Range("I" & Lig).ClearContents
                    If maquettage.Value = True Then
                    Do While Not IsEmpty(Range("J" & Lig))
                        Lig = Lig + 1
                    Loop
                        Worksheets("Suivi affaires").Range("J" & Lig).Value = "X"
                        Worksheets("Maquettage").Range("A" & LigMaq).Value = date_demande
                        Worksheets("Maquettage").Range("B" & LigMaq).Value = objet
                    Else
                        Sheets("Suivi affaires").Range("J" & Lig).ClearContents
                            If impression.Value = True Then
                            Do While Not IsEmpty(Range("K" & Lig))
                                Lig = Lig + 1
                            Loop
                                Worksheets("Suivi affaires").Range("K" & Lig).Value = "X"
                            Else
                                Sheets("Suivi affaires").Range("K" & Lig).ClearContents
                            End If
 
                    End If
 
            End If
 
    End If
 
End Sub
Ma première idée était de déclarer 2 autre variables différentes (LigCAO et LigMaq) pour ces 2 onglets, mais j'ai toujours le même problème.
J'ai bien peur que la technique du Do while not IsEmpty ne s'accorde que en cas d'incrémentation dans un seul onglet...

Auriez-vous une idée concernant mon problème ?

Merci