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 :

Création de tableau de synthèse


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Septembre 2007
    Messages
    226
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 226
    Points : 78
    Points
    78
    Par défaut Création de tableau de synthèse
    Bonjour,
    Je désire créer une macro qui permet de créer un fichier synthèse de données qui récupère le contenu des cellules A5 et celle de D23 à partir de fichiers identiques sous un répertoire unique, avez vous une idée ?

  2. #2
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Salut, voir Lire et écrire dans les classeurs Excel fermés avec par exemple ExecuteExcel4Macro.

    Bref qqch dans le genre ( perfectible ), à adapter à ton contexte.

    Affecter un bouton à la procédure SelDossierRacine

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    Option Explicit
     
    Const TypeFichier As String = "xls"
    Const sNomFeuilleAImporter As String = "Feuil1"
    Const sCellData1 As String = "A1"
     
    Private Function ExtraireValeur(sDossier As String, sFichier As String, sFeuille As String, sCellule As String)
    Dim Argument As String
        sDossier = Replace(sDossier, "'", "''")
        sFichier = Replace(sFichier, "'", "''")
        Argument = "'" & sDossier & "[" & sFichier & "]" & sFeuille & "'!" & Range(sCellule).Address(, , xlR1C1)
        ExtraireValeur = ExecuteExcel4Macro(Argument)
    End Function
     
    Private Sub ImportDatas()
    Dim iNumeroLigne As Long, i As Long
    Dim sNomFichier As String, sDossier As String
    Dim NbFichiers As Long
     
        iNumeroLigne = 1
        NbFichiers = Feuil1.Range("A" & Rows.Count).End(xlUp).Row
        For i = 1 To NbFichiers
            sNomFichier = Feuil1.Range("A" & i)
            sDossier = Left$(sNomFichier, InStrRev(sNomFichier, "\"))
            sNomFichier = Right$(sNomFichier, Len(sNomFichier) - Len(sDossier))
            With Feuil1
                .Cells(iNumeroLigne, 2) = ExtraireValeur(sDossier, sNomFichier, sNomFeuilleAImporter, sCellData1)
            End With
            iNumeroLigne = iNumeroLigne + 1
        Next i
    End Sub
     
    Private Sub Liste(sChemin As String, iRow As Long, bSousDossier As Boolean)
    Dim FSO As Object, Dossier As Object, sFichier As String
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set Dossier = FSO.GetFolder(sChemin)
     
        sFichier = Dir$(sChemin & "\*.*")
        Do While Len(sFichier) > 0
            If UCase$(sFichier) <> UCase$(ThisWorkbook.Name) And _
                    UCase$(TypeFichier) = UCase$(FSO.GetExtensionName(sFichier)) Then
                Feuil1.Cells(iRow, 1) = sChemin & "\" & sFichier
                iRow = iRow + 1
            End If
            sFichier = Dir$()
        Loop
     
        If bSousDossier Then
            For Each Dossier In Dossier.SubFolders
                Liste Dossier.Path, iRow, True
            Next Dossier
        End If
     
        Set Dossier = Nothing
        Set FSO = Nothing
    End Sub
     
    Sub SelDossierRacine()
    Dim sChemin As String
        sChemin = ThisWorkbook.Path
        With Application.FileDialog(msoFileDialogFolderPicker)
            .InitialFileName = sChemin & "\"
            .Title = "Sélectionner un Dossier"
            .AllowMultiSelect = False
            .ButtonName = "Sélection Dossier"
            .Show
            If .SelectedItems.Count > 0 Then
                DoEvents
                Application.StatusBar = ""
                Application.ScreenUpdating = False
                Feuil1.Cells.Clear
                Liste .SelectedItems(1), 1, False
                ImportDatas
                With Application
                    .ScreenUpdating = True
                    .StatusBar = "Terminé"
                End With
            End If
        End With
    End Sub

  3. #3
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274
    Par défaut
    Re, je soliloque mais dans ton cas, dans les déclarations : modifier
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Const TypeFichier As String = "xlsm"' ou autre type de fichier
    Const sCellData1 As String = "A5"
    Const sCellData2 As String = "D23"
    Et dans ImportDatas ajouter à la suite
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(iNumeroLigne, 3) = ExtraireValeur(sDossier, sNomFichier, sNomFeuilleAImporter, sCellData2)

Discussions similaires

  1. création d'un tableau de synthèse
    Par lapatatarte dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/05/2012, 15h47
  2. Réponses: 1
    Dernier message: 02/08/2011, 19h21
  3. Création de tableau
    Par rod59 dans le forum C
    Réponses: 10
    Dernier message: 12/11/2005, 16h40
  4. [CR] Création de tableau et case à cocher
    Par aysse dans le forum SAP Crystal Reports
    Réponses: 3
    Dernier message: 26/11/2003, 17h07

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