erreur 1004 - erreur définie par l'application ou par l'objet - .name
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.
Code:
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 |
et
Code:
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 |
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:
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.