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

VBScript Discussion :

Déplacement classeur excel dans dossier avec un espace dans le nom


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Par défaut Déplacement classeur excel dans dossier avec un espace dans le nom
    Bonjour à toutes et à tous,

    Je suis nouveau avec vbscript, donc il se peut que mon erreur soit stupide. Je vous prie de ne pas trop m'en vouloir

    J'ai un document excel contenant une macro. Cette dernière effectue 5 opérations :
    1. Récupérer le chemin du script de déplacement
    2. Récupérer le chemin du classeur excel
    3. Récupérer le chemin du dossier de destination
    4. Lancer le script de déplacement avec le chemin du classeur et du dossier de destination en arguments
    5. Fermer le classeur excel


    Je précise alors que le nom de mon dossier principal contient un espace.
    Ainsi dans ma macro l'appel du script est le suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strAppel = "WScript """ & strCheminScript & """ """ & strCheminClasseur & """ """ & strCheminDestination & """"
    Shell strRunScript
    Après débug et vérification des variables, tout me semble correct, du moins les chemins sont correctement formatés et entre guillemets.

    Maintenant, voici le code du script de déplacement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    WScript.Sleep 1000 'Afin de laisser au classeur le temps de se fermer
     
    Dim obj
    Dim fileIni
    Dim foldDesti
     
    fileIni = WScript.Arguments(0)
    foldDesti = WScript.Arguments(1)
     
    If obj.FileExists(fileIni) Then
        obj.MoveFile fileIni, foldDesti
    End If
    Ceci étant, lancer la macro a pour finalité de lancer le script correctement, de fermer le classeur, mais ensuite il crashe, prétextant un chemin d'accès introuvable, ciblant le caractère 2 de la ligne 11 comme source de l'erreur. Pourtant, les chemins des arguments sont tout ce qu'il y a de plus correct...

    J'ai essayé avec des guillemets dans cette ligne mais l'erreur devient "nom ou numéro de fichier incorrect".

    Je pense que ce problème serait réglé en retirant l'espace dans le nom de dossier, mais je dois parer à cette éventualité..

    Merci de votre aide,

    François

  2. #2
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    et Bienvenu sur DVP

    Une chose que je n'arrive pas à comprendre : comment cette ligne(10) Set obj.FileExists(fileIni) Then n'a pas été mentionnée comme étant source d'erreurs ?

    Elle devrait être If obj.FileExists(fileIni) Then.

    D'autre part, dans le premier code, il me semble que tu dois essayer avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    strAppel = "WScript.exe """ & strCheminScript & """ """ & strCheminClasseur & """ """ & strCheminDestination & """" 
    Shell strRunScript
    en ajoutant l'extension de Wscript.

    Si, après avoir appliquée des modifications répondant à ces remarques, le problème persiste, il faudra utiliser le nom court du chemin des différents fichiers. Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set  fso = CreateObject("Scripting.FileSystemObject")
    Set F = fso.GetFile("C:\Program Files\Windows NT\Accessoires\wordpad.exe") ' Chemin comportant des espaces et des noms longs
    Msgbox F.ShortPath  ' Récupération du nom court du chemin complet
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  3. #3
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Par défaut
    Citation Envoyé par l_autodidacte Voir le message
    Une chose que je n'arrive pas à comprendre : comment cette ligne(10) Set obj.FileExists(fileIni) Then n'a pas été mentionnée comme étant source d'erreurs ?

    Elle devrait être If obj.FileExists(fileIni) Then.
    Désolé, c'est en recopiant à la main que j'ai fait cette erreur

    De ce que j'observe, rajouter l'extension au bout de wscript ne change rien au schmilblick, car dans mes tests je vérifiais les arguments en les plaçant dans un wscript.echo, et ça fonctionnait très bien sans le .exe.

    Le ShortPath me semble être une bonne idée, j'essaye ça à la première heure demain


    ProgElect : Je ne pense pas, le but ici est de mettre des guillemets dans la chaîne. "" reviendrait à ne rien ajouter...

  4. #4
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Par défaut
    Citation Envoyé par l_autodidacte Voir le message
    il faudra utiliser le nom court du chemin des différents fichiers. Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Set  fso = CreateObject("Scripting.FileSystemObject")
    Set F = fso.GetFile("C:\Program Files\Windows NT\Accessoires\wordpad.exe") ' Chemin comportant des espaces et des noms longs
    Msgbox F.ShortPath  ' Récupération du nom court du chemin complet
    Au final ça a fonctionné comme un charme ! Merci beaucoup

    Je poste tout de même le code final si ça intéresse quelqu'un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Wscript.Sleep 1000
     
    Dim fso
    Dim fileIni
    Dim foldDesti
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set fileIni = fso.GetFile(Wscript.Arguments(0))
    Set foldDesti = fso.GetFolder(Wscript.Arguments(1))
     
    If fso.FileExists(fileIni.ShortPath) then
        fso.MoveFile fileIni.ShortPath, foldDesti.ShortPath & "\"
    End If
    J'ai rajouté un antislash à la fin car le ShortPath le retirait de la fin du chemin, et il n'était plus considéré comme un dossier !


    Merci encore pour l'aide, un pouce en l'air pour toi l_autodidacte

  5. #5
    Modérateur
    Avatar de l_autodidacte
    Homme Profil pro
    Retraité : Directeur de lycée/Professeur de sciences physiques
    Inscrit en
    Juillet 2009
    Messages
    2 420
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Retraité : Directeur de lycée/Professeur de sciences physiques
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 2 420
    Par défaut
    Merci encore pour l'aide, un pouce en l'air pour toi l_autodidacte
    Le pouce en l'air(il est vert) se trouve tout juste au-dessous de mon dernier post;
    il suffit de cliquer dessus pour confirmer ce que tu viens de dire
    Ne pas oublier le tag si satisfait.
    Voter pour toute réponse satisfaisante avec pour encourager les intervenants.
    Balises CODE indispensables. Regardez ICI
    Toujours utiliser la clause Option Explicit(VBx, VBS ou VBA) et Ne jamais typer variables et/ou fonctions en VBS.
    Vous pouvez consulter mes contributions
    Ne pas oublier de consulter les différentes FAQs et les Cours/Tutoriels VB6/VBScript
    Ne pas oublier L'Aide VBScript et MSDN VB6 Fr

  6. #6
    Membre régulier
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Charente (Poitou Charente)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2015
    Messages : 7
    Par défaut
    Citation Envoyé par l_autodidacte Voir le message
    Le pouce en l'air(il est vert) se trouve tout juste au-dessous de mon dernier post;
    il suffit de cliquer dessus pour confirmer ce que tu viens de dire
    Chose que j'ai faite sitôt après avoir envoyé le post précédent, un peu d'attention !!

  7. #7
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 130
    Par défaut
    Salut, bienvenue sur DVP
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    obj.MoveFile "" & fileIni & "", "" & foldDesti & ""
    me semble t il.
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

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

Discussions similaires

  1. [XL-2007] Lire et écrire dans les classeurs Excel fermés : Problème avec CopyFromRecordset
    Par schumiaja dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/01/2015, 20h18
  2. accéder directement dans dossier avec console
    Par fantomas261 dans le forum RedHat / CentOS / Fedora
    Réponses: 4
    Dernier message: 17/08/2007, 10h29
  3. Afficher des images avec des espaces dans le nom
    Par Space Cowboy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 15/03/2007, 07h18
  4. Problème avec les espaces dans un tableau !
    Par remixtech dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 10/07/2006, 19h30
  5. [Access] Nom d'une table avec un espace dans SQL
    Par Corsaire dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/04/2006, 15h50

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