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.
Partager