Bonjour à tous,
J'ai un petit problème dans un module.
Mon code fonctionnait très bien lorsque mes variables étaient déclarées dans les procédures. Mais comme c'est un fichier que je vais envoyer à pas mal de monde et qu'ils auront à changer des chemins ou nom de fichiers, j'ai décidé de déclarer toutes les variables en un lieu unique, pour ne pas avoir à fouiller dans tout le code.
En tête de module (avant la première fonction) j'ai donc déclaré des variables Public, et dans la fonction qui s'effectue à l'ouverture du fichier Excel j'ai attribué des références aux variables.
et
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Public Rapport_final_gdc As Workbook Public Extraction As Workbook Public Rapport_sans_macros As Workbook Public Nom_preparateur As String
Depuis que j'ai changé cela, j'ai l'erreur 1004 inscrite en objet qui s'affiche pour la ligne en rouge, et je ne comprends vraiment pas pourquoi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Sub WorkBook_Open() Set Rapport_final_gdc = Workbooks("GDC_delai_reso.xls") Set Extraction = Workbooks.Open("S:\DAUSE\Permis\Rapports permis et certificats\GDC_requetes\GDC_extraction.xls") 'CHEMIN ET NOM DU FICHIER À REMPLACER SI BESOIN donne à une variable le nom du fichier Excel extrait de GDC et je l'ouvre Set Rapport_sans_macros = Workbooks.Open("S:\DAUSE\Permis\Rapports permis et certificats\GDC_delai_reso_sans_macros.xls") Call creation_rapport Call Copier_feuilles End Sub
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 Sub creation_rapport() ' Désactivation des messages d'alerte Application.DisplayAlerts = False 'suppression des données existantes dans le fichier que l'on utilise pour le rapport final Rapport_final_gdc.Activate 'postionne sur le fichier désiré DerniereLigneRapport_final_gdc = Rapport_final_gdc.Sheets(1).UsedRange.Rows.Count 'compte le nombre de lignes du fichier Excel "actif" Range("A2:AP" & DerniereLigneRapport_final_gdc).Delete 'supprime toutes les lignes du fichier, sauf la première (l'entête) 'copier/coller des informations du rapport extrait au rapport final Extraction.Activate 'positionne sur le fichier désiré Range("J:K,G:G").Delete Shift:=xlToLeft 'supprime du fichier les colonnes non désirées DerniereLigneExtraction = Extraction.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row 'compte le nombre de ligne du fichier Extraction.Sheets(1).Range("A2:L" & DerniereLigneExtraction).Copy 'copie les colonnes Rapport_final_gdc.Activate 'positionne sur le fichier dans lequel on veut coller les données Range("A2").Select 'sélectionne la cellule qui sera la première à recevoir les données ActiveSheet.Paste 'colle les données 'fermeture du fichier extrait de GDC sans sauvegarder les modifications qui y ont été faites (suppression des colonnes) Extraction.Close SaveChanges:=False 'Remplissage des champs vides de "délai de résolution" et des quatres dernières colonnes DerniereLigneRapport_final_gdc = Rapport_final_gdc.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row 'compte le nombre de lignes du fichier For Ligne = DerniereLigneRapport_final_gdc To 2 Step -1 'en partant de la dernière ligne et en remontant ligne par ligne, on effectue les actions demandées If Not Range("L" & Ligne) <> "" Then 'si la cellule dans la colonne L (délai de résolution) est vide, on indique 365 Range("L" & Ligne) = 365 End If Range("M" & Ligne) = Format(Date, "d mmmm yyyy") 'ajout de la date du jour Range("N" & Ligne) = DateDiff("d", Range("B" & Ligne), Range("M" & Ligne)) 'calcul du nombre de jours entre la date de création et la date du jour Range("O" & Ligne) = Range("N" & Ligne).Value - Range("L" & Ligne).Value Range("P" & Ligne) = Range("N" & Ligne).Value \ Range("L" & Ligne).Value If Range("O" & Ligne).Value >= 0 Then 'si la valeur de la cellule dans la colonne O (nombre de jours hors délai) est supérieur à 0, on grise la cellule (15 est le code pour le gris choisi) Range("O" & Ligne).Interior.ColorIndex = 15 End If Next Ligne 'on remonte d'une ligne 'modification du nom de la feuille Rapport_final_gdc.Sheets(1).Name = "Requêtes " & Format(Date, "d mmmm yyyy") 'mise en page Range("A:C").HorizontalAlignment = xlCenter 'alignement horizontal du texte dans la plage indiquée Range("E:E").HorizontalAlignment = xlCenter Range("J:J").HorizontalAlignment = xlCenter Range("L:P").HorizontalAlignment = xlCenter Range("A:P").VerticalAlignment = xlCenter 'alignement vertical du texte dans la plage indiquée Range("A1:P" & DerniereLigneRapport_final_gdc).Borders.Value = 1 'ajout des bordures Range("A1:P" & DerniereLigneRapport_final_gdc).Sort Key1:=Range("O2"), Order1:=xlDescending 'triage par ordre décroissant en fonction de la colonne O (nombre de jour hors délai) Range("K2:K" & DerniereLigneRapport_final_gdc).ShrinkToFit = True 'ajustement automatique du texte à la taille de la colonne Range("G2:H" & DerniereLigneRapport_final_gdc).ShrinkToFit = True 'Ajout de l'en-tête et du pied de page With ActiveSheet.PageSetup .CenterHeader = "&14&BGDC" & Chr(10) & "actifs" & Chr(10) & Format(Date, "d mmmm yyyy") 'le texte à changer est entre guillemets, après le &14&b (ce qui veut dire police 14 et en gras). chr(1o) permet d'aller à la ligne .RightFooter = Nom_preparateur End With 'Définition de la plage d'impression ActiveSheet.PageSetup.PrintArea = "$A$1:$P$" & DerniereLigneRapport_final_gdc End Sub
Est-ce que vous sauriez m'aider?
Si vous avez des questions, n'hésitez surtout pas.
Merci d'avance.
Partager