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

Scripts/Batch Discussion :

Ouvrir un fichier Excel quand le dossier parent possède des espaces [Batch]


Sujet :

Scripts/Batch

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Programmeur en agencement
    Inscrit en
    Janvier 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Programmeur en agencement
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2021
    Messages : 8
    Par défaut Ouvrir un fichier Excel quand le dossier parent possède des espaces
    Bonjour,

    Grâce à l'aide de hackoofr j'ai pu écrire ce code :
    Code batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    @echo off
    for %%a in ("%~dp0\.") do set "parent=%%~nxa"
    EXCEL.EXE /cmd/"%parent%" "Liste de documents test.xlsm"

    Grâce à lui la deuxième ligne permet de trouver le nom du dossier parent où se trouve le batch sans le chemin.
    Cette information est envoyée dans un fichier Excel se trouvant dans le même dossier.
    Le problème c'est que le nom du dossier parent comprend des espaces alors le code boucle sur chaque mot et donc avant de réussir à ouvrir le fichier, Excel essai d'ouvrir un fichier correspond à chaque mot du dossier parent.

    Exemple :
    Le fichier batch se trouve dans ce dossier :
    "C:\Users\Toto\Desktop\Planning BE\Toto Tata Titi"
    Quand je lance le batch Excel s'ouvre puis me dit :
    "Désolé... Nous ne trouvons pas Tata.xlsx. Peut-être l'avez vous déplacé, renommé ou supprimé ?"
    Puis me dit :
    "Désolé... Nous ne trouvons pas Titi".xlsx. Peut-être l'avez vous déplacé, renommé ou supprimé ?"
    Puis ouvre enfin le bon fichier et récupère correctement la variable "Toto Tata Titi".

    Je ne peux me passer des espaces dans la dénomination du dossier.
    Comment pourrai-je faire ? Je ne comprends vraiment pas pourquoi la valeur de %parent% se trouve être utilisé comme nom de fichier Excel

  2. #2
    Expert confirmé
    Avatar de hackoofr
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2009
    Messages
    3 844
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juin 2009
    Messages : 3 844
    Par défaut

    Donnez nous la commande principale exacte pour ouvrir EXCEL avec les arguments et les switches !
    How to open a specific excel file with a batch script and command line arguments?

  3. #3
    Membre habitué
    Homme Profil pro
    Programmeur en agencement
    Inscrit en
    Janvier 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Programmeur en agencement
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2021
    Messages : 8
    Par défaut
    Il s'agit d'Excel 2019 donc il semblerait qu'il n'y ait pas besoin d'indiquer le chemin cible complet pour le lancer.
    Le code suivant suffit :
    Par contre en lisant le contenu du lien que tu m'as donné j'ai appris que ce code est mieux car il permet de ne pas laisser la fenêtre de commande ouverte :
    Je n'ai pas besoin d'argument particulier, juste d'ouvrir Excel et une macro se charge de récupérer le paramètre %parent%.

    J'ai essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    start excel.exe /cmd/"aaa bbb" "Liste de documents test.xlsm"
    Excel s'ouvre et me dit :
    Désolé... Nous ne trouvons pas bbb".xlsx. Peut-être l'avez vous déplacé, renommé ou supprimé ?
    puis ouvre correctement le fichier "Liste de documents test.xlsm" et la macro récupère bien "aaa bbb".

    Il faudrait peut-être sinon que je change de méthode et que le batch remplace les espaces présents dans le nom du dossier parent par un caractère comme l'underscore "_".
    Mais là je ne sais pas faire du tout, je suis plus à l'aise en vba sur Excel que sur les batch

  4. #4
    Membre Expert
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    683
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 95
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 683
    Par défaut
    Bonjour,

    Si tu peux modifier ton code vba, il te sera alors possible de récupérer parent avec la fonction Environ("parent").
    Regarde aussi Workbook.Path et CurDir().
    Cependant, il semble que le mieux pour piloter excel, c'est vbs (vbscript).

  5. #5
    Membre habitué
    Homme Profil pro
    Programmeur en agencement
    Inscrit en
    Janvier 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Programmeur en agencement
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2021
    Messages : 8
    Par défaut
    Ah je comprends ton raisonnement et je me rends compte grâce à toi que j'ai commis une erreur dans mes tests.
    Effectivement si le fichier Excel se trouve dans le même dossier que le batch dans ce cas je pourrai récupérer le nom du dossier parent grâce à une macro avec la fonction Environ directement grâce à Excel.
    Mais je me suis trompé dans l'arborescence de mes fichiers.
    Un dossier va contenir le fichier "Liste de documents.xlsm" et une multitude de dossiers du genre "001 Dressing", "002 Porte d'entrée", "003 Meuble TV", etc... (Je travaille dans l'agencement).
    Et dans chacun des dossiers devra se trouver le batch que j'essaie de créer qui aura pour but de récupérer le nom du dossier parent, par exemple "001 Dressing" puis d'aller ouvrir le fichier "Liste de documents.xlsm" qui se trouve dans le dossier précédent (et non pas dans le même dossier comme je l'avais indiqué) et donc le paramètre "001 Dressing" sera récupéré par Excel.

  6. #6
    Membre Expert
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    683
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 95
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 683
    Par défaut
    Pourquoi ne fais-tu pas tout en vba ? Car si ton document s’ouvre à chaque fois dans une même instance d'excel, Environ() peut ne pas fonctionner, enfin je suppose.

  7. #7
    Membre habitué
    Homme Profil pro
    Programmeur en agencement
    Inscrit en
    Janvier 2021
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Programmeur en agencement
    Secteur : Bâtiment

    Informations forums :
    Inscription : Janvier 2021
    Messages : 8
    Par défaut
    J'ai fini par trouver une solution en rajoutant une ligne qui remplace les espaces par un # :
    Code Batch : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    @echo off
    for %%a in ("%~dp0\.") do set "parent=%%~nxa" 
    set parent=%parent: =#%
    start excel /cmd/"%parent%" "Liste de documents test.xlsm"
    Comme ça dans Excel je pourrai facilement remplacer ce caractère.
    Merci à tous.
    Je vais sûrement devoir poster un autre message pour réussir à ouvrir le fichier Excel quand il se trouve dans le dossier précédent mais je vais d'abord essayer de trouver par moi même

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2016] Ouvrir un fichier Excel provenant du même dossier
    Par Simon5713 dans le forum Excel
    Réponses: 2
    Dernier message: 03/12/2019, 12h34
  2. Réponses: 1
    Dernier message: 04/02/2010, 20h41
  3. Ouvrir un fichier Excel quand on clique sur un bouton
    Par perdeak dans le forum Composants VCL
    Réponses: 10
    Dernier message: 31/01/2008, 11h12
  4. ouvrir un fichier Excel avec une requete perso
    Par legillou dans le forum Access
    Réponses: 9
    Dernier message: 21/06/2005, 15h14
  5. Ouvrir un fichier excel depuis access
    Par ptitegrenouille dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 03/05/2005, 11h47

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