Bonjour à tous,

Cela fait déjà quelques jours que je cherche une solution à mon problème mais je fais face à un échec, je suis loin d'être à l'aise dans VBA mais je suis attirée par cet outil qui peux tant nous faciliter la vie.

Actuellement j'ai 3feuilles et 3 userform

Ma 1er qui s'appelle "RENSEIGNEMENT" me sert de base pour remplir mes combobox
ma 2ème s'appelle "TEMPORAIRE" elle me sert juste lors du remplissage de mes textbox, combobox et ma listblox à être écrit quelques part.
Ma 3ème s'appelle "ARCHIVES" qui sert d'archivages avec un compteur d'incrémentation au fur et à mesure que l'ont rentre des lignes.


Mon Userform1 "sert à la prise en compte de matériel" avec des textbox combobox et une listbox (à 7 colonnes)
Mon userform2 "sert à la mise en page avant impression"
Mon userform 3 "servira à la modification"



Je vais essayé de m'expliquer le plus clairement possible (je ne mets pas le fichiers car toutes les données en feuille1 sont trop ciblé)

Le déroulement est assez simple à l'ouverture d'excel, mon usf1 s'ouvre, le technicien le rempli et valide ce qui envoie vers le USF2 si tout est bon il click sur le bouton impression et ça imprime la feuille.

Mon soucis provient de ma feuille "ARCHIVES" si dans la listbox il n'y a qu'une seule ligne ça archives correctement, mais si cette listbox comporte 2 lignes ou plus rien ne part dans ma feuille "Archives" et à la colonne incrémentation il m'incrémente d'un numéro .


Je me sers du code suivant dans mon bouton impression:

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
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
Private Sub CommandButton1_Click()
Dim LastLig As Long
Dim cDest As Range
Dim i As Long
 
 
'phase d impression
 
'UserForm2.PrintForm
 
'---------------------------------------COPIER COLLER VERS ARCHIVES (ARCHIVAGE)---------------------------------------------------------------------------------
 
With ThisWorkbook
    'cDest: La celllule de destination: première cellule vide de la colonne A de ARCHIVES
    With .Worksheets("ARCHIVES")
        Set cDest = .Cells(.Rows.Count, "A").End(xlUp)(2)
    End With
    With .Worksheets("TEMPORAIRE")
        'Enlève l'éventuel filtre automatique
        .AutoFilterMode = False
        'LastLig, ligne de la dernière cellule remplie de colonne A de TEMPORAIRE
        LastLig = .Cells(.Rows.Count, "A").End(xlUp).Row
 
        'Si au moins une ligne résultat du filtre (en plus de la ligne 1 des titres)
        If .Range("A3:A" & LastLig).SpecialCells(xlCellTypeVisible).Count > 1 Then
            With .Range("A3:A" & LastLig).SpecialCells(xlCellTypeVisible).EntireRow
                'On copie toutes les lignes visibles vers cDest (sauf la ligne des titres)
                .Copy cDest
                'on supprime toutes les lignes visibles (sauf la ligne des titres)
                .Delete
 
 
            End With
        End If
        'on vide notre variable cDest
        Set cDest = Nothing
        'On enlève le filtre automatique
        .AutoFilterMode = False
    End With
 
 
Application.AlertBeforeOverwriting = False
ThisWorkbook.Save
 
 
 
'---------------------------'Compteur d'incrémentation numero d'inter-----------------------------------------------------
 
Dim lig As Integer, a As Integer
 
 
 
lig = Sheets("ARCHIVES").Range("Q65535").End(xlUp).Row
a = Sheets("ARCHIVES").Range("Q" & lig)
Sheets("ARCHIVES").Range("Q" & lig + 1) = a + 1
 
 
 
 
'----------------------------------------COPIER COLLER VERS ARCHIVES (ARCHIVAGE)-------------------------------------------------------------------------------------
 
 
'Nettoyage de la feuille3
 
Sheets("TEMPORAIRE").Range("A2:A999999").ClearContents
Sheets("TEMPORAIRE").Range("B2:B999999").ClearContents
Sheets("TEMPORAIRE").Range("C2:C999999").ClearContents
Sheets("TEMPORAIRE").Range("D2:D999999").ClearContents
Sheets("TEMPORAIRE").Range("E2:E999999").ClearContents
Sheets("TEMPORAIRE").Range("F2:F999999").ClearContents
Sheets("TEMPORAIRE").Range("G2:G999999").ClearContents
Sheets("TEMPORAIRE").Range("H2:H999999").ClearContents
Sheets("TEMPORAIRE").Range("I2:I999999").ClearContents
Sheets("TEMPORAIRE").Range("J2:J999999").ClearContents
Sheets("TEMPORAIRE").Range("K2:K999999").ClearContents
Sheets("TEMPORAIRE").Range("L2:L999999").ClearContents
Sheets("TEMPORAIRE").Range("M2:M999999").ClearContents
Sheets("TEMPORAIRE").Range("N2:N999999").ClearContents
Sheets("TEMPORAIRE").Range("O2:O999999").ClearContents
Sheets("TEMPORAIRE").Range("P2:P999999").ClearContents
 
 
UserForm2.Repaint
Unload UserForm2
 
End With
 
End Sub
 
 
Private Sub CommandButton2_Click()
Unload UserForm2
UserForm1.Show
End Sub
 
 
 
Private Sub UserForm_CHANGE()
 
'-------------------affichage listbox feuil temporaire--------------------------------------------------------------------
With UserForm2.ListBox1
    .ColumnCount = 7
    .ColumnWidths = "100"
    .ListBox1 = Sheets("TEMPORAIRE").Range("lisbox").Value
 
 
End Sub

Merci de vos réponses et de votre indulgence par avance.