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

VBA Access Discussion :

Problème avec fonction Split


Sujet :

VBA Access

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    89
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 89
    Points : 40
    Points
    40
    Par défaut Problème avec fonction Split
    Bonjour,

    J'aimerais parcourir un répertoire pour trouvere les différents fichiers et scinder le nom du fichier avec la fonction SPLIT (délimiteur "_") :

    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
     
     
    Public Sub RecupFichiersBMA()
     
    Dim Repertoires_rec As String
    Dim i As Integer
    Dim liste() As String
    Dim nom As String
     
    Repertoires_rec = Dir("C:\recep\*.xls", vbDirectory)
     
     
    Do While (Repertoires_rec <> "")
     
        Repertoires_rec = Dir
    Loop
     
         liste = Split(nom, "_")
         For i = 1 To 3
            MsgBox CStr(liste(1))
         Next i
     
     
    End Sub
    Lorsque j'execute mon programme j'ai une erreur : " L'indice n'appartient pas à la sélection".

    Merci pour votre aide.

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Les tableaux, sauf indication contraire (instruction Base) , commence à 0.

    Un moyen d'éviter les problèmes est de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
         For i = lbound(Liste) To ubound(liste)
            MsgBox CStr(liste(i))
         Next i
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre émérite Avatar de Zekraoui_Jakani
    Homme Profil pro
    Inscrit en
    Novembre 2013
    Messages
    1 670
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2013
    Messages : 1 670
    Points : 2 489
    Points
    2 489
    Par défaut Fonction split
    Vous pouvez essayer ceci, comme exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    sub test()
    bb=currentproject.FullName 'détermine le fichier voulu
    pl = instrrev(bb,"\") 'identifie le délémiteur à partir de la droite
    nn = right(bb,len(bb)-pl)  'extrait le nom de fichier
    debug.print nn
    end sub

  4. #4
    Membre expert
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2012
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2012
    Messages : 1 869
    Points : 3 448
    Points
    3 448
    Par défaut
    Bonjour developpeur71, Zekraoui_Jakani, René,

    Si tu as mis tout ton code, c'est impossible que ça fonctionne. Tu n'affectes pas de valeur à la variable liste donc impossible d'avoir un tableau(split).

    Si on regarde ton code plus en détail:
    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
    Public Sub RecupFichiersBMA()
     
    Dim Repertoires_rec As String
    Dim i As Integer
    Dim liste() As String
    Dim nom As String
     
    Repertoires_rec = Dir("C:\recep\*.xls", vbDirectory) 'Ici tu demandes de récupérer le premier fichier Excel présent dans le répertoire recep et tu l'affectes à la variable Repertoires_rec
     
     
    Do While (Repertoires_rec <> "")  'Tu balayes le répertoire tant qu'il y a des fichiers Excel
     
        Repertoires_rec = Dir  'Tu affectes le nom du fichier Excel à la variable Repertoires_rec
    Loop
    'Ta variable liste ainsi que ta variable nom est toujours vide alors comment veux-tu la diviser 
         liste = Split(nom, "_")
         For i = 1 To 3
            MsgBox CStr(liste(1))  'Ici si ta variable avait quelque chose tu aurais toujours le même message puisque tu demande systématiquement la deuxième partie du tableau
         Next i
     
     
    End Sub
    Si j'ai bien compris ce que tu veux faire et si tes fichiers Excel sont bien identifier avec un "_" dans leurs noms comme: Le_Fichier_Excel.xls voici un code qui fonctionnerait:
    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
    Public Sub RecupFichiersBMA()
     
    Dim Repertoires_rec As String
    Dim i As Integer
    Dim liste() As String
     
    Repertoires_rec = Dir("C:\recep\*.xls") 'Ici on récupère le premier fichier Excel du répertoire "recep"
    Do While (Repertoires_rec <> "")  'Parcours du répertoire
     
        liste = Split(Repertoires_rec, "_")  'On affecte le tableau créé avec la fonction split et le nom du fichier à la variable liste
        For i = LBound(liste) To UBound(liste)
            Debug.Print CStr(liste(i))  'On découpe le fichier et on imprime dans la fenêtre d’exécution la partie découpé
        Next i
        Repertoires_rec = Dir  'On récupère le fichier suivant
     
    Loop
     
    End Sub
    Bonne journée
    Ce qui se conçoit bien s’énonce clairement et les mots pour le dire arrivent aisément. Nicolas Boileau
    Si tout est OK, n'oubliez pas de cliquer sur

Discussions similaires

  1. Problème avec fonctions et string/char
    Par vdumont dans le forum C++
    Réponses: 6
    Dernier message: 08/04/2006, 16h54
  2. Problème avec fonction
    Par Goundy dans le forum C
    Réponses: 24
    Dernier message: 01/10/2005, 20h17
  3. [MFC][WINSOCK] Problème avec fonction recv
    Par Le Farfadet dans le forum MFC
    Réponses: 4
    Dernier message: 23/09/2005, 11h00
  4. Problème avec fonction d'envoie de mail
    Par zyg dans le forum Réseau/Web
    Réponses: 1
    Dernier message: 23/02/2005, 08h48
  5. [Requête] Problème avec fonction "DATE_FORMAT()"
    Par sekiryou dans le forum Requêtes
    Réponses: 4
    Dernier message: 11/01/2005, 21h52

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