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 :

Obtenir l'extension d'un fichier pour du tri


Sujet :

VBScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Stagiaire informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Stagiaire informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Par défaut Obtenir l'extension d'un fichier pour du tri
    Bonjour,
    j'ais créé un script qui me permet de choisir, de modifier puis d'importer un fichier texte .txt.
    Je souhaiterais que le script me renvoi une erreur si jamais on ne choisit pas un fichier .txt
    J'ai essayé avec GetExtensionName mais cela me renvoi une erreur "Objet requis".

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Dim fsot, ft, ts, oFL, p, name
    Dim fso, sIniDir, sFilter, sTitle, oDlg
    Dim fichierFEC
     
    'ouvre la fenêtre de choix de fichier
    Function GetFileDlgEx(sIniDir,sFilter,sTitle)
      Set oDlg = CreateObject("WScript.Shell").Exec("mshta.exe ""about:<object id=d classid=clsid:3050f4e1-98b5-11cf-bb82-00aa00bdce0b></object><script>moveTo(0,-9999);eval(new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(0).Read("&Len(sIniDir)+Len(sFilter)+Len(sTitle)+41&"));function window.onload(){var p=/[^\0]*/;new ActiveXObject('Scripting.FileSystemObject').GetStandardStream(1).Write(p.exec(d.object.openfiledlg(iniDir,null,filter,title)));close();}</script><hta:application showintaskbar=no />""") 
      oDlg.StdIn.Write "var iniDir='" & sIniDir & "';var filter='" & sFilter & "';var title='" & sTitle & "';"
      GetFileDlgEx = oDlg.StdOut.ReadAll
    End Function
     
    sIniDir = ""
    sFilter = "*.*txt"
    sTitle = "Choisissez le fichier à importer"
     
    fichierFEC = GetFileDlgEx(Replace(sIniDir,"\","\\"),sFilter,sTitle)
     
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set oFl = fso.GetFile(fichierFEC)
    Set name = fso.GetExtensionName(fichierFEC)
     
    MsgBox(oFl)
    MsgBox(name)
     
    'Les modifications et l'import se font après et fonctionnent correctement (grâce à vous par ailleurs)
    Il me renvoi une erreur sur la ligne Set name.
    Je ne comprend pas d'ou viens mon erreur puisque MsgBox(oFl) me renvoi le chemin complet du fichier.

  2. #2
    Expert confirmé

    Homme Profil pro
    Responsable déploiement (SCCM, InTune, GPO)
    Inscrit en
    Juillet 2014
    Messages
    3 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Responsable déploiement (SCCM, InTune, GPO)
    Secteur : Transports

    Informations forums :
    Inscription : Juillet 2014
    Messages : 3 218
    Par défaut
    "GetExtensionName" te retourne une chaine de caractère et pas un objet tu ne doit pas mettre "Set" au début.
    https://msdn.microsoft.com/en-us/lib...=vs.84%29.aspx

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    name = fso.GetExtensionName(fichierFEC)

  3. #3
    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 : 70
    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
    Il me semble que tu n'as pas regardé la modification que j'ai faite sur le filtre (*.txt) et pas (*.*txt) à la ligne 15 de ce POST.
    En dehors de la fonction, essaie avec cette modification
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    sIniDir = ""
    sFilter = "*.txt"
    sTitle = "Choisissez le fichier à importer"
     
    fichierFEC = GetFileDlgEx(Replace(sIniDir,"\","\\"),sFilter,sTitle)
    If fichierFEC ="" Then WScript.Quit 0
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set oFl = fso.GetFile(fichierFEC)
    ' name = fso.GetExtensionName(fichierFEC)
     If UCase(fso.GetExtensionName(fichierFEC)) <> "TXT" Then  MsgBox "Mauvais choix de fichier"
    MsgBox(oFl)
    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

  4. #4
    Membre averti
    Homme Profil pro
    Stagiaire informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Stagiaire informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Par défaut
    Bonjour,

    Merci de vos réponses.
    En effet, en faisant la modification sur le filtre de l'extension cela ne permet que de choisir des fichiers .txt. Donc plus de problème de choix.
    Pour être exact, le filtre doit être :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    sFilter = "Fichier texte (.txt)|.txt"
    pour avoir un affichage correct dans la barre de recherche.
    Merci quand même de vos réponses, cela pourra me servir plus tard.
    Cordialement

  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 : 70
    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
    Pourtant le filtre doit contenir le caractère * juste après la barre verticale sinon pas de retour de fichier :
    sFilter = "Fichier texte (*.txt)|*.txt"
    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 averti
    Homme Profil pro
    Stagiaire informatique
    Inscrit en
    Avril 2016
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Stagiaire informatique

    Informations forums :
    Inscription : Avril 2016
    Messages : 30
    Par défaut
    Bonjour,

    c'est exact, j'ai oublié de mettre * devant le .txt
    Le filtre nécessite en effet de le rajouter.

    Cordialement.

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 09/05/2014, 23h36
  2. obtenir le signal d'un fichier audio pour scipy
    Par Sebsheep dans le forum Calcul scientifique
    Réponses: 9
    Dernier message: 08/01/2009, 11h07
  3. Réponses: 2
    Dernier message: 16/11/2006, 12h21
  4. Réponses: 2
    Dernier message: 16/11/2006, 10h55

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