IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Erreur '1004' : Excel ne trouve pas le fichier ..


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Février 2024
    Messages : 7
    Par défaut Erreur '1004' : Excel ne trouve pas le fichier ..
    Bonjour,

    Vous pouvez m’aider sur un problème de VBA Excel office 2016. Je suis débutante.

    J’ai une macro pour regrouper la même plage de cellules de plusieurs classeurs Excel « .xlsx », l’une en dessous des autres, à travers un chemin dynamique d’un dossier appelé « source », qui se trouve dans la cellule H1 de l’onglet de consolidation du fichier « creer_dossier1.xlsm ».

    Le problème c’est que le code reconnaît le chemin dynamique et nomme le 1er fichier du dossier appelé « source1 », mais bug pour l’ouverture (Workbooks.Open) affichant un code erreur 1004.
    Nom : ZZ2.png
Affichages : 573
Taille : 106,4 Ko

    Je joins le fichier pour consulter le code.

    NB : les fichiers du dossier « source1 » s'ouvrent le plus normalement "manuellement".
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 466
    Par défaut
    Salut,

    La fonction Dir ne renvoie que le nom du classeur et non son chemin complet.
    Soit tu dois reconstruire le chemin complet en concatenant le chemin du dossier et le nom du fichier.
    Soit tu fait moderne, en passant par la librairie FSO.
    Exemple:
    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
    Public Sub test()
        Const FolderPath As String = "C:\Users\I21164B\Documents\"
     
        Dim Fso As Scripting.FileSystemObject
        Set Fso = CreateObject("Scripting.FileSystemObject")
     
        Dim Folder As Object    '// Scripting.Folder
        Set Folder = Fso.GetFolder(FolderPath)
     
        Dim File As Scripting.File
        For Each File In Folder.Files
            If (Fso.GetExtensionName(File.Name) = "xlsx") Then
                MsgBox File.Path
            End If
        Next
    End Sub

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Février 2024
    Messages : 7
    Par défaut Erreur '1004' : Excel ne trouve pas le fichier ..
    Bonjour,

    Mon objectif c'est de regrouper la même plage de cellules de plusieurs classeurs Excel « .xlsx », l’une en dessous des autres, en ouvrant les fichiers du dossier "source1" un par un, puis copier la plage de cellules.

    Merci deedolith pour la réponse, mais on faisant un test avec le code en passant par la librairie FSO, Une erreur de compilation s'affiche

    Nom : aaa.png
Affichages : 296
Taille : 25,2 Ko

    Merci.

  4. #4
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 548
    Par défaut
    Bonjour

    Pourquoi ne pas synthétiser par PowerQuery, intégré à Excel, plutôt que VBA ?

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 466
    Par défaut
    Soit tu déclares la variable en tant que Objet, soit tu ajoute la référence Microsoft Scripting Runtime au projet.

    Je t'invite a te documenter sur le sujet Early binding vs Late binding.
    C'est très commun en VBA.

  6. #6
    Nouveau membre du Club
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Février 2024
    Messages : 7
    Par défaut Erreur '1004' : Excel ne trouve pas le fichier ..
    Bonsoir 78chris,

    Certes PowerQuery peut accomplir la consolidation, mais les fichiers excels sources (modèle) du dossier "source1" sont déja transmis aux unités opérationnelles sans que je définie la plage de cellules à consolider comme plage données.

    est ce que c'est rattrapable ou non ?

    Merci.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Février 2024
    Messages : 7
    Par défaut
    Bonsoir deedolith,

    J'ai activé Microsoft Scripting Run-time dans la bibliothèque.

    les messages box (les fichiers) sont affichés, mais ne s'ouvrent pas.

    pouvez vous m'orienter svp.

    Merci.

  8. #8
    Membre très actif
    Profil pro
    Inscrit en
    Février 2010
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 288
    Par défaut suffit d'ouvrir le workbook
    il faut essayer un worbook.open avec un activeworkbook pour ouvrir la page désirée

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 466
    Par défaut
    Citation Envoyé par Excelus Voir le message
    Bonsoir deedolith,

    J'ai activé Microsoft Scripting Run-time dans la bibliothèque.

    les messages box (les fichiers) sont affichés, mais ne s'ouvrent pas.

    pouvez vous m'orienter svp.

    Merci.
    Peux-tu poster ton code à jour ?

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Février 2024
    Messages : 7
    Par défaut
    Citation Envoyé par deedolith Voir le message
    Peux-tu poster ton code à jour ?
    Merci d'avance deedolith

    Mon code avec les explications à coter


    Public Sub test()
    Const FolderPath As String = "G:\Test_CONSO_RMA\27022024\Source1" 'Rendre chemin dynamique contenue dans la cellule "H1"

    Dim Fso As Scripting.FileSystemObject
    Set Fso = CreateObject("Scripting.FileSystemObject")

    Dim Folder As Object '// Scripting.Folder
    Set Folder = Fso.GetFolder(FolderPath)

    Dim File As Scripting.File

    Range("A2:E200").Clear

    For Each File In Folder.Files
    If (Fso.GetExtensionName(File.Name) = "xlsx") Then
    MsgBox File.Path

    '==========
    Workbooks.Open (File)
    Range("D5:G10").Copy 'On copie la plage de données du classeur Sources "même plage dans tt les classeurs"
    Workbooks("creer_dossier2.xlsm").Activate 'On revient sur le classeur de synthèse
    DerLigne = ActiveSheet.UsedRange.Rows.Count + 1 'On récupére le nombre de ligne de la feuille
    Range("B" & DerLigne).Select 'On se positionne sur la cellule vide
    ActiveSheet.Paste 'On colle les données dans le classeur de synthèse
    Range("A" & DerLigne & ":A" & ActiveSheet.UsedRange.Rows.Count) = File.Name 'On y colle le nom du classeur Sources
    Columns("A:A").Replace ".xlsx", "" 'On retire l'extension des noms des fichiers
    Workbooks(File).Close 'On ferme le classeur Sources
    '==========

    End If
    Next

    End Sub

  11. #11
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 466
    Par défaut
    Citation Envoyé par Excelus Voir le message
    Workbooks.Open (File)
    File est un objet de type Scripting.File, hors la fonction Open attend une chaîne.

    Je t'invite à regarder les propriétés de la classe File dans l'explorateur d'objets (raccourcis clavier: F2),
    et choisir celle qui convient.

  12. #12
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 548
    Par défaut
    RE
    Citation Envoyé par Excelus Voir le message
    Bonsoir 78chris,

    Certes PowerQuery peut accomplir la consolidation, mais les fichiers excels sources (modèle) du dossier "source1" sont déja transmis aux unités opérationnelles sans que je définie la plage de cellules à consolider comme plage données.

    est ce que c'est rattrapable ou non ?
    Si la plage est la même normalement oui

    Il faudrait un exemple de fichier (anonymisé) et l'indication de la plage concernée

  13. #13
    Nouveau membre du Club
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Février 2024
    Messages : 7
    Par défaut
    Citation Envoyé par 78chris Voir le message
    RE

    Si la plage est la même normalement oui

    Il faudrait un exemple de fichier (anonymisé) et l'indication de la plage concernée
    Bonjour 78chris,

    je joins le dossier compressé contenant 4 fichiers pour extraire la plage D5 à G10 de chaque fichier avec power query sans définition de la plage.

    Merci d'avance pour l'aide.
    Fichiers attachés Fichiers attachés

  14. #14
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 548
    Par défaut
    Bonjour

    Modifier le chemin dans la cellule en jaune et actualiser
    Fichiers attachés Fichiers attachés

  15. #15
    Nouveau membre du Club
    Femme Profil pro
    Contrôleur de gestion
    Inscrit en
    Février 2024
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Février 2024
    Messages : 7
    Par défaut
    Citation Envoyé par 78chris Voir le message
    Bonjour

    Modifier le chemin dans la cellule en jaune et actualiser
    Merci 78chris, pour le travail.

    Comment puis je passé par le powerquery sans passer par la définition de la plage ?

  16. #16
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 548
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 548
    Par défaut
    RE

    Il te suffit de regarder les requêtes présentes dans mon fichier et en particulier Transformer l'exemple de fichier qui est ensuite transformé en fonction pour s'appliquer à chaque fichier

Discussions similaires

  1. [XL-2010] Erreur '1004' : Excel ne peut pas accéder au dossier sélectionné
    Par Lsoma dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/05/2021, 05h16
  2. [XL-2016] Erreur '1004' : Excel ne peut pas accéder au fichier ..
    Par EddyBertey dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/05/2021, 10h23
  3. Réponses: 6
    Dernier message: 18/12/2016, 22h20
  4. Réponses: 4
    Dernier message: 06/11/2013, 22h21
  5. PROC REG qui ne trouve pas le fichier excel
    Par Invité dans le forum Débutez
    Réponses: 5
    Dernier message: 04/07/2012, 15h09

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo