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

Macros et VBA Excel Discussion :

Remplissage de tableau


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Par défaut Remplissage de tableau
    Bonjour,

    J'ai écris un code VBA permettant de me récupérer le nom, le chemin et la date de dernières modifications des fichiers contenus dans un dossier et de les stocker dans un tableau

    voici mon code

    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
    33
    34
    35
     
    Sub essaie123()
     
        Dim i As Integer, j As Integer
        Dim dimension1 As Integer
     
     
     
        Dim oCom1 As Scripting.FileSystemObject
        Dim oCom1Fd As Folder
     
    Set oCom1 = New Scripting.FileSystemObject
    Set oCom1Fd = oCom1.GetFolder("Chemin d'accès du dossier")
     
    dimension1 = oCom1Fd.Files.Count
     
     
    Dim ImTableau1() As String, ImTableau2() As String, ImTableau3() As Date
    Dim affichage As Variant, Fichier As File
     
     
    If dimension1 > 0 Then
        affichage = ""
            For Each Fichier In oCom1Fd.Files
                i = i + 1
                    ImTableau1(i) = Fichier.Name
                    ImTableau2(i) = Fichier.Path
                    ImTableau3(i) = Fichier.DateLastModified
                    affichage = affichage & vbCrLf & ImTableau1(i) & ImTableau2(i) & ImTableau3(i)
            Next Fichier
    End If
     
    MsgBox affichage
     
    End Sub
    le problème c'est que lorsque j'exécute ma macro, un message d'erreur s'affiche en me disant:

    l'indice n'appartient pas à la selection

    au niveau de la ligne de code suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ImTableau1(i) = Fichier.Name
    J'aimerai savoir s'il vous plait ce qui ne vas pas avec mon programme.
    Merci d'avance

  2. #2
    Invité
    Invité(e)
    Par défaut Bonjour, regarde ça
    il faut redimensionner ton tableau: ReDim Preserve ImTableau1(i)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ReDim Preserve ImTableau1(i)
    j'ai défini un type c'est plus lisible:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Type infoFichier
        Name As String
        Path As String
        DateLastModified As Date
     End Type  
    Dim ImTableau1() As infoFichier
    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
    33
    34
    35
    36
    37
    38
    39
    Type infoFichier
        Name As String
        Path As String
        DateLastModified As Date
     End Type
    Sub essaie123()
     
        Dim i As Integer, j As Integer, n As Long, d As Variant
        Dim s As String, nbre As Integer, dimension1 As Integer
        Dim c1 As Long, c2 As Long
     
     
        Dim oCom1 As Scripting.FileSystemObject
        Dim oCom1Fd As Folder
     
    Set oCom1 = New Scripting.FileSystemObject
    Set oCom1Fd = oCom1.GetFolder("Chemin d'accès du dossier")
     
    dimension1 = oCom1Fd.Files.Count
     
     
    Dim ImTableau1() As infoFichier
    Dim affichage As Variant, Fichier As File
     
     
    If dimension1 > 0 Then
        affichage = ""
            For Each Fichier In oCom1Fd.Files
                 ReDim Preserve ImTableau1(i)
                    ImTableau1(i).Name = Fichier.Name
                    ImTableau1(i).Path = Fichier.Path
                    ImTableau1(i).DateLastModified = Fichier.DateLastModified
                    affichage = affichage & vbCrLf & ImTableau1(i).Name & " " & ImTableau1(i).Path & " " & ImTableau1(i).DateLastModified 
            Next Fichier
    End If
     
    MsgBox affichage
     
    End Sub

  3. #3
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Juin 2013
    Messages
    101
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 101
    Par défaut
    Bonjour,

    Essaie comme cela:

    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
    33
    34
    35
    36
    37
    38
     
    Sub essaie123()
     
        Dim i As Integer, j As Integer, n As Long, d As Variant
        Dim s As String, nbre As Integer, dimension1 As Integer
        Dim c1 As Long, c2 As Long
     
     
        Dim oCom1 As Scripting.FileSystemObject
        Dim oCom1Fd As Folder
     
    Set oCom1 = New Scripting.FileSystemObject
    Set oCom1Fd = oCom1.GetFolder("Chemin d'accès du dossier")
     
    dimension1 = oCom1Fd.Files.Count
     
     
    Dim ImTableau1() As String, ImTableau2() As String, ImTableau3() As Date
    Dim affichage As Variant, Fichier As File
     
    If dimension1 > 0 Then
        affichage = ""
        i = 0
            For Each Fichier In oCom1Fd.Files
                    ReDim Preserve ImTableau1(i)
                    ReDim Preserve ImTableau2(i)
                    ReDim Preserve ImTableau3(i)
                    ImTableau1(i) = Fichier.Name
                    ImTableau2(i) = Fichier.Path
                    ImTableau3(i) = Fichier.DateLastModified
                    affichage = affichage & vbCrLf & ImTableau1(i) & ImTableau2(i) & ImTableau3(i)
                    i = i + 1
            Next Fichier
    End If
     
    MsgBox affichage
     
    End Sub

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Par défaut
    Merci ça marche.
    Pourrai-je donc considérer que mon tableau défini comme suit?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ImTableau(i,3)
    'avec i étant le nombre de fichiers dans mon dossier, et 3 qui est le nombre de
    'colonnes composées respectivement du nom, du chemin, et de la date de
    'dernière modification

  5. #5
    Invité
    Invité(e)
    Par défaut
    je sais pas si tu parle de ma proposition, mais en ce qui me concerne je proposai de créer ton propre type de variable:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Type infoFichier
        Name As String
        Path As String
        DateLastModified As Date
     End Type  
    Dim ImTableau1() As infoFichier
    ReDim Preserve ImTableau1(i)
    ImTableau1(i).Name = Fichier.Name
    ImTableau1(i).Path = Fichier.Path
    ImTableau1(i).DateLastModified = Fichier.DateLastModified

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Par défaut
    Ok merci

  7. #7
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2013
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Juin 2013
    Messages : 144
    Par défaut message d'erreur sur ce code
    Bonjour,
    j'ai voulu changer le code précédent en écrivant celui-ci

    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
    Sub essaie123()
     
        Dim i As Integer
     Dim oCom1 As Scripting.FileSystemObject
        Dim oCom1Fd As Folder
     
    Set oCom1 = New Scripting.FileSystemObject
    Set oCom1Fd = oCom1.GetFolder("Chemin d'accès fichiers")
     
    dimension1 = oCom1Fd.Files.Count
    Dim ImTableau() As Variant
     
    Dim affichage As Variant, Fichier As File
     
     
    If dimension1 > 0 Then
        affichage = ""
            For Each Fichier In oCom1Fd.Files
                 ReDim Preserve ImTableau(1 To i, 1 To 3)
     
                    ImTableau(i, 1) = Fichier.Name
                    ImTableau(i, 2) = Fichier.Path
                    ImTableau(i, 3) = Fichier.DateLastModified
     
            affichage = affichage & vbCrLf & ImTableau(i, 1) _
                     & "        " & ImTableau(i, 2) & "        " & ImTableau(i, 3) & vbCrLf
     
             Next Fichier
    End If
     
    MsgBox affichage
    Je voudrai donc savoir quel est le soucis ici s'il vous plait. Le message d'erreur me dit au niveau de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ReDim Preserve ImTableau(1 To i, 1 To 3)
    que "l'indice n'appartient pas à la sélection"

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

Discussions similaires

  1. Probleme de remplissage de tableau (ecrasement de donnees)
    Par roulia_rousset dans le forum Langage
    Réponses: 4
    Dernier message: 05/06/2008, 14h44
  2. Réponses: 3
    Dernier message: 13/03/2008, 09h46
  3. remplissage de tableau
    Par goeps dans le forum Algorithmes et structures de données
    Réponses: 3
    Dernier message: 05/05/2007, 10h56
  4. [Débutant] Problème de création et de remplissage de tableau
    Par pinggu dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 24/05/2006, 15h50
  5. [JComboBox] Remplissage avec tableau de String
    Par linkit dans le forum Composants
    Réponses: 2
    Dernier message: 26/05/2005, 21h39

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