Erreur 1004:fichier introuvable depuis changement de version(97-2003->2016)
Bonjour tout le monde ,
Avant toute chose je préfère préciser que la macro que j'essaie de réparer n'est pas de moi donc certains éléments peuvent me paraitre obscurs ou difficile à comprendre de plus je ne suis pas habitué pour ne pas dire débutant avec le langage VBA d'Excel .
La macro sur laquelle je travaille à pour but de récupérer un fichier Excel de récupérer les donnés qu'il contient et de crée un nouveau fichier contenant les données traité et trier selon certains filtres.
Pour se faire au clic sur un bouton de la première feuilles, une boite de dialogues s'ouvre permettant à l'utilisateur de choisir le fichier à rentrer, un menu de lancement apparait ensuite pour choisir les filtres ( été/hiver , semaine/semaine vacance /samedi/dimanche). Aprés cette sélection la macro est censée récupérer les données et les traitées avant de le ressortir dans un nouveaux fichiers .
Aprés avoir fournis le fichier et choisis les filtres ,le module principal doit ouvrir le workbook FichierATraiterStr mais ne le trouve pas empêchant la suite du programme.Le problème qui survient à chaque tentatives est une erreur 1004:" désolé nous ne trouvons pas FichierATraiterStr.xlsx.Peut être l'avez vous déplacé ,renommé ou supprimé". Cependant le fichier des chemins récupérer ne sont pas des chemins relatifs donc ce n'est pas une erreur de cheminement ,on récupère directement le chemin lors de la saisie du document à traiter.
Récupération par le bias du bouton:
Private Sub TraitementBouton_Click()
Dim FichierOutils As Workbook
Dim FichierTempsDeParcours As Workbook
Dim ReponseOuverture
Set FichierOutils = ActiveWorkbook
ReponseOuverture = MsgBox("Veuillez importer le fichier temps de parcours à traiter.", vbOKCancel, "Démarrage")
If ReponseOuverture = vbOK Then
StockageNomFichierATraiter = ""
ReponseOuverture = Application.GetOpenFilename("Fichier Excel,*.xlsx", , "Importation du Fichier Temps de Parcours")
If ReponseOuverture = False Then GoTo SortieFermeture
Application.ScreenUpdating = False
Workbooks.Open ReponseOuverture
Set FichierTempsDeParcours = ActiveWorkbook
MenuLancement.StockageNomFichierATraiter = ReponseOuverture
MenuLancement.AffichageDeLaLigne = "Ligne : " & FichierTempsDeParcours.Sheets(1).Cells(10, 7)
FichierTempsDeParcours.Close
FichierOutils.Activate
MenuLancement.Show
Set FichierTempsDeParcours = Nothing
Application.ScreenUpdating = True
End If 'ReponseOuverture = vbOK
SortieFermeture:
Set FichierOutils = Nothing
End Sub 'TraitementBouton_ClickCode du module 1
Sub CompilationLancements(FichierOutils As Workbook, FichierATraiterStr As String)
Dim FichierTP As Workbook, FichierPRD As Workbook
Workbooks.Open "FichierATraiterStr"
Set FichierTP = ActiveWorkbook
If FichierTP.Sheets.Count > 2 Then
MsgBox "Le fichier semble être un fichier déjà compilé", vbExclamation, "Erreur"
'Application.DisplayAlerts = False
FichierTP.Close False
'Application.DisplayAlerts = True
GoTo Sortie
End If 'FichierTP.Sheets.Count > 2
FichierOutils.Activate
ExtractionTroncon FichierTP, 2
Colorisation FichierTP, 2
GestionFeuilleSynthese FichierTP
MiseEnPage FichierTP.Sheets(3).Range(FichierTP.Sheets(3).Cells(2, 2), FichierTP.Sheets(3).Cells(FichierTP.Sheets(3).Cells(4, 2).CurrentRegion.Rows.Count + 1, FichierTP.Sheets(3).Cells(4, 2).CurrentRegion.Columns.Count + 4)), FichierTP
CorrectionTheorique FichierTP
EcritureMnemosLong FichierTP, FichierOutils
Application.DisplayAlerts = False
FichierTP.Sheets(4).Delete
Application.DisplayAlerts = True
If MenuLancement.ArrondiTempsReal = False Then RecalculTempsGlobaux FichierTP
If MenuLancement.SuppressionDoublonsTick Then SuppressionDesDoublons FichierTP
With FichierTP.Sheets(3).PageSetup
.LeftMargin = Application.InchesToPoints(0.78740157480315)
.RightMargin = Application.InchesToPoints(0.78740157480315)
.TopMargin = Application.InchesToPoints(0.984251968503937)
.BottomMargin = Application.InchesToPoints(0.984251968503937)
.HeaderMargin = Application.InchesToPoints(0.511811023622047)
.FooterMargin = Application.InchesToPoints(0.511811023622047)
.PrintHeadings = False
.PrintGridlines = False
.CenterHorizontally = True
.CenterVertically = False
.Orientation = xlLandscape
.Zoom = 100
.PrintTitleRows = "$2:$4"
.PrintTitleColumns = ""
End With
Dim NomSauvegarde
ReponseSauvegarde = MsgBox("Voulez-vous sauvegarder le fichier Temps de Parcours ?", vbYesNo, "Enregistrement")
If ReponseSauvegarde = vbYes Then
Dim Extraction As String
If Right(FichierTP.Name, 4) = ".xlsx" Then Extraction = Left(FichierTP.Name, Len(FichierTP.Name) - 4) Else Extraction = FichierTP.Name
NomSauvegarde = Application.GetSaveAsFilename(Extraction & " version compilée du " & Format(Now, "dd-mm-yy") & ".xlsx")
If NomSauvegarde = False Then GoTo Sortie
FichierTP.SaveAs NomSauvegarde
End If 'ReponseSauvegarde = vbYes
Sortie:
Unload MenuLancement
End Sub 'CompilationLancements(FichierOutils As Workbook, FichierATraiterStr As String, FichierPRDStr As String)Ligne posant problèmes pour le débogeur :
Workbooks.Open "FichierATraiterStr"
Elle retourne une erreur 1004 FichierATraiterStr.xlsx déplacé renommé ou supprimé
Si besoin de précisions ou du fichier je peux fournir les documents .
Merci d'avance pour votre aide!
Cordialement Nelson
Bonsoir,
avez vous fait par exemple un MSGBOX de la variable qui pose problème juste avant la ligne qui pose problème, comme cela vous verrez bien si elle correspond ce à quoi vous vous attendez.
@ bientôt
LouReeD
Bonjour LouReeD
Bonjour NelsonDEOR et
Une petite présentation ICI serait la bienvenue
Si vous ne l'avez pas encore fait, je vous invite à lire la charte du forum [A LIRE AVANT DE POSTER]
qui vous aidera dans vos demandes et réponses sur ce forum
En ce qui concerne votre problématique, vous appelez la sub avec des paramètres
Sub CompilationLancements(FichierOutils As Workbook, FichierATraiterStr As String)Or, dans votre votre code, vous ne vous servez pas du paramètre, mais d'un texte (mis entre guillemets)
Workbooks.Open "FichierATraiterStr"A remplacer par (sans les guillemets)
Workbooks.Open FichierATraiterStr@+
Bonjour BrunoM45 et LouReeD;
J'ai essayer un msgbox mais rien ne s'affiche à part le text contenu dans la box , et j'ai enlevé les guillemets sur la ligne concernée mais juste le message de l'erreur 1004 à changé , désormais il affiche :" Désolé nous ne trouvons pas .Peut être l’avez vous déplacé,renommé ou supprimer .
Merci pour les propositions
Bonjour,
Donc si rien ne s'affiche avec
Sub CompilationLancements(FichierOutils As Workbook, FichierATraiterStr As String)
Dim FichierTP As Workbook, FichierPRD As Workbook
Msgbox FichierATraiterStr
Workbooks.Open FichierATraiterStrc'est que rien n'est envoyé à la procédure, d'où le message
Merci ! C'est bien ce qui me semblais que cet attribut (FichierATraiterStr) passé en paramètre au début de la fonction était vide et donc me faisait une erreur . Un idée de comment faire pour que FichierATraiterStr sois égal au fichier qui à été sélectionner au début de la macro ?
Re,
Un idée de comment faire pour que FichierATraiterStr sois égal au fichier qui à été sélectionner au début de la macro ?
Non pas d'idée, perso je ne comprends pas votre code "brouillon" et nous n'avons pas de fichier (comme il est vivement recommandé dans la charte du forum)
@+
Je ne peu pas fournir le fichier complet ,c'est pourquoi j'ai fournis le code des deux pages principales(les autres pages ne nous avancent pas elles ont pour but le traitements des données) , celle de récupération du fichier et celle qui va traiter le fichier et crée un nouveau fichier avec des données exploitées.J'ai pu régler pas mal de soucis sur la macro et ai presque trouvé la solution cependant je peine à la mettre en place .En renommant mon fichier fichierATraiterStr il est trouvé par la macro et donc traités ,le problème c'est que normalement le paramètre FichierATraiterStr doit être le nom du fichier qu'on lui as transmis via le menu de sélection en début .
Re,
Bon ok, mais je ne vois a aucun moment dans le premier module un appel à la sub
Call CompilationLancements(NomFichierOutils, NomFichieràtraiter)@+
Merci beaucoup de la réponse je vais essayer ça !
J'ai réussi à trouver une solutions temporaire au problèmes elle fonctionne avec le rafistolage je posterais la solution dés que je l'aurais trouvée, merci pour votre aide