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 :

Collection Files de FileSystemObject, choix de l'Item


Sujet :

VBScript

  1. #1
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut Collection Files de FileSystemObject, choix de l'Item
    Salut
    Est-il possible d'accéder directement à un Item(n) de la collection Files de FileSystemObject sans passer par une boucle For Each .... Next?
    Mes essais
    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
    27
    28
    29
    30
    31
    32
    Dim stRep 'Nom du répertoire à parcourir
    Dim oFSO, oFld, oFiles
    Dim PrimFichier
     
    Set oFSO = CreateObject("Scripting.FileSystemObject")
    stRep = "C:\Program Files\CaptEcran"
    If oFSO.FolderExists(stRep) Then
        Set oFld = oFSO.GetFolder(stRep)
        Set oFiles = oFld.Files
        If oFiles.Count <> 0 Then
            'pas de probléme
            For Each PrimFichier In oFiles
                MsgBox PrimFichier.Name
                Exit For
            Next
            'Set PrimFichier = oFiles.Items(1) 'L'objet ne gère pas cette propriété ou cette méthode
            'Set PrimFichier = oFiles.Items("1") 'L'objet ne gère pas cette propriété ou cette méthode
            'Set PrimFichier = oFiles.Items() 'L'objet ne gère pas cette propriété ou cette méthode
     
            'Set PrimFichier = oFiles.Item(1) 'Argument ou appel de procédure incorrect
            'Set PrimFichier = oFiles.Item("1") 'Fichier introuvable
            'Set PrimFichier = oFiles.Item() 'L'objet ne gère pas cette propriété ou cette méthode
     
            'Set PrimFichier = oFiles.Files(1) 'L'objet ne gère pas cette propriété ou cette méthode
            'Set PrimFichier = oFiles.Files("1") 'L'objet ne gère pas cette propriété ou cette méthode
            'Set PrimFichier = oFiles.Files() 'L'objet ne gère pas cette propriété ou cette méthode
     
            'Set PrimFichier = oFiles.file(1) 'L'objet ne gère pas cette propriété ou cette méthode
            'Set PrimFichier = oFiles.file("1") 'L'objet ne gère pas cette propriété ou cette méthode
            'Set PrimFichier = oFiles.file() 'L'objet ne gère pas cette propriété ou cette méthode
        End If
    End If
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Bonsoir,

    je dirais que non .. c'est pas possible ... l'on peu tricher , en utilisant un tableau supplémentaire pour stoker "les clefs" ...:


    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
     
     Dim tb()
     Dim i  
    ...
        If oFiles.Count <> 0 Then
            'pas de problème
            i = 0
            For Each PrimFichier In oFiles
                tb(i) = PrimFichier.Name
                i = i + 1
            Next
     
     
            Set PrimFichier = oFiles(tb(1))
     
    ....

  3. #3
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Salut bbil

    Merci d'avoir confirmé se que j'avais fini par penser, mais j'espérai avoir raté cette information dans mes recherches sur le site.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    En fait, l'item s'utilise comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set PrimFichier = oFiles.Item("nom du fichier")

  5. #5
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 185
    Points
    17 185
    Par défaut
    Citation Envoyé par minnesota Voir le message
    En fait, l'item s'utilise comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set PrimFichier = oFiles.Item("nom du fichier")
    Oui bien sûr, mais moi je ne desire que recuperer le nom du premier fichier et, quand je suis branché sur le dossier (GetFolder("Chemin et nom du dossier"))
    , je ne connais pas son nom, merci quand même.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Membre émérite
    Inscrit en
    Avril 2010
    Messages
    1 495
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 1 495
    Points : 2 274
    Points
    2 274
    Par défaut
    J'avais bien compris, c'était juste pour info au cas où.
    Cela dit, comme tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    For Each PrimFichier In oFiles
      MsgBox PrimFichier.Name
      Exit For
    Next
    rien ne t'empêche d'y introduire un objet "Dictionary", tu gagnerais en flexibilité par rapport à ce que tu cherches à faire.

    exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set files = fso.GetFolder("chemin dossier").Files
    Set dic = CreateObject("Scripting.Dictionary")
    Dim file
    For Each file In files
      dic.add dic.count, file
    Next
    wscript.echo dic.Item(2)

  7. #7
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    salut,
    la propriété item de l'objet collection vbscript ne supporte pas les index numériques
    sur le plan de la structure, un objet collection est une liste chainée couplée à une table de hashage pour accélérer l'accès à un item donné (voir ici)
    le seul moyen consisterait à rechercher dans la structure de la variable le pointeur de la liste chainée et lire son 1er item...
    n'hésitez pas à poster votre contribution
    nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
    le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
    pas de questions techniques par mp

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 05/04/2015, 20h35
  2. [XL-2007] Valeur d'une textbox en fonction du choix d'un item d'une combobox
    Par jacksparot dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 14/02/2011, 18h11
  3. Choix pour la création de notre propre "Collection"
    Par goomazio dans le forum Langage
    Réponses: 9
    Dernier message: 23/12/2006, 23h03
  4. Réponses: 5
    Dernier message: 09/05/2006, 15h57

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