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 :

FICHIER.XLSX qui reprend le nom de tous les fichiers contenus dans le meme repertoire ?


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Entrepreneur

    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Points : 1
    Points
    1
    Par défaut FICHIER.XLSX qui reprend le nom de tous les fichiers contenus dans le meme repertoire ?
    Bonjour à toutes et tous !

    Je suis nouveau ici. Je m'appelle Samir et j'ai une problématique que je cherche à résoudre !

    J'ai cherché des solutions, mais les réponses étaient très souvent orientées VBA (que je ne comprends pas) et je me demande si une formule dans excel pourrait répondre à cette problématique.

    J'édite des factures.xlsx classées par répertoire/dossier mensuel, et j'essaie de faire une formule dans un fichier.xlsx qui reprend le nom de toutes les factures contenu dans ce même répertoire.

    La seule chose que j'ai trouvé est une formule qui permet dans une cellule de reprendre le nom du fichier lui même.
    Pour ceux qui ne la connaissent pas, je vous la mets ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =STXT(CELLULE("nomfichier");TROUVE("[";CELLULE("nomfichier"))+1;TROUVE("]";CELLULE("nomfichier"))-TROUVE("[";CELLULE("nomfichier"))-1)
    Et pour ceux et celles qui connaissent une solution, je vous adore déjà

    Merci encore pour vos contributions et votre partage de la connaissance.

    Sam

  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
    La réponse est non, alors autant passer au VBA
    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
    Option Explicit
     
    Dim NbFichiers As Long
    Const TypeFichier As String = "xlsx"
     
    Private Sub Liste(ByVal sChemin As String, ByVal bSousDossier As Boolean)
    Dim FSO As Object, Dossier As Object, Fichier As String
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set Dossier = FSO.GetFolder(sChemin)
     
        Fichier = Dir$(sChemin & "\*.*")
        Do While Len(Fichier) > 0
            If UCase$(Fichier) <> UCase$(ThisWorkbook.Name) And UCase$(TypeFichier) = UCase$(FSO.GetExtensionName(Fichier)) Then
                NbFichiers = NbFichiers + 1
                With Feuil1
                    .Cells(NbFichiers, 1) = sChemin
                    .Cells(NbFichiers, 2) = Fichier
                End With
            End If
            Fichier = Dir$()
        Loop
     
        If bSousDossier Then
            For Each Dossier In Dossier.SubFolders
                Liste Dossier.Path, 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
                Application.StatusBar = ""
                Feuil1.Cells.Clear
                Application.ScreenUpdating = False
                DoEvents
                NbFichiers = 0
                Liste .SelectedItems(1), True
                With Application
                    .ScreenUpdating = True
                    .StatusBar = "Terminé"
                End With
            End If
        End With
    End Sub

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Entrepreneur

    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Points : 1
    Points
    1
    Par défaut C'est la liste de tous les fichiers du meme repertoire que je cherche !
    Bonjour kiki
    Merci d'avoir pris le temps de répondre.
    Cependant, en utilisant ton fichier, le bouton me donne le chemin qui mène au répertoire en cellule A1
    et le nom de ton fichier en colonne B1

    Alors que ce que je cherche a faire et c'est à avoir le nom de tous les fichiers contenus dans le même répertoire (la liste de tous les fichiers sur une colonne)


    Merci
    Sam

  4. #4
    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, dans la procédure Liste(ByVal sChemin As String, ByVal bSousDossier As Boolean)
    remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
                With Feuil1
                    .Cells(NbFichiers, 1) = sChemin
                    .Cells(NbFichiers, 2) = Fichier
                End With
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
                Feuil1.Cells(NbFichiers, 1) = Fichier

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Entrepreneur

    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Points : 1
    Points
    1
    Par défaut Pas encore ca ! lol Désolé
    Bonjour

    désolé Kiki de t'ennuyer encore, comme tu vois je suis avec sérieux tes conseils.

    Mais voila ce que donne la cellule A1 : listefactures.xls
    C'est uniquement le nom du fichier que tu m'as envoyé qui s'inscrit lorsque je clique !

    Haaaaaaaa ! je suis malheureux !

    Sam

  6. #6
    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, il faudrait savoir
    Alors que ce que je cherche a faire et c'est à avoir le nom de tous les fichiers contenus dans le même répertoire (la liste de tous les fichiers sur une colonne)
    Dans ce cas, il aurait fallu parler de Chemin + nom du fichier, le remplacement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuil1.Cells(NbFichiers, 1) = FSO.GetAbsolutePathName(Fichier)

  7. #7
    Nouveau Candidat au Club
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Entrepreneur

    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Points : 1
    Points
    1
    Par défaut Merci mais haaaaaaaaa ! Tu vas Grrrrrrr :)
    Merci Kiki...

    ...mais j'ai bien indiqué :(1er message et en gras en bleu)
    J'édite des factures.xlsx classées par répertoire/dossier mensuel, et j'essaie de faire une formule dans un fichier.xlsx qui reprend le nom de toutes les factures contenu dans ce même répertoire.



    Mais cette derniere ligne de code ne donne que ces 2 lignes :
    C:\Documents and...\Sam\Mes documents\test xls\test1.xlsx
    C:\Documents and...\Sam\Mes documents\test xls\listefactures.xlsx

    Est ce que j'ai clairement expliqué ce que je veux ou pas ?
    J'essaie de faire plus simple car je dois pas savoir expliqué en langage informatique

    Dans un répertoire nommé : "02 FACTURES FEV 2012"
    J'ai "n" factures nommées :
    20452_ces_facture_290212.xls
    20453_smeg_facture_290212.xls
    20454_fnac_facture_290212.xls
    etc,....
    et je souhaite avoir un fichier.xls dans ce répertoire (on le nomme comme on veut c pas important celui la)
    dans ce dernier fichier, je voudrais pouvoir avoir sur la colonne A
    le nom de tous ces fichiers à la ligne !


    Désolé si je ne n'ai pas réussi à me faire comprendre.

    Cdt
    Sam

  8. #8
    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, tu parlais plus haut de fichiers xlsx, et maintenant de fichiers xls
    Pour une liste des fichiers xls
    remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const TypeFichier As String = "xlsx"
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Const TypeFichier As String = "xls"

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Entrepreneur

    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Points : 1
    Points
    1
    Par défaut Merci beaucoup !
    Expert confirmé avec 4,5 étoiles ? JE CONFIRME !!!

    Merci bcp Kiki

    Désolé pour les extensions. en effet j'ai des factures sur 2PC avec versions différentes.

    J'ai d'autres questions, mais je vais créer un autre post.
    merci mille fois encore !

    Sam

  10. #10
    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, j'allais te poser la question qui tue : est-ce que tu veux la liste des fichiers XLS et XLSX ? Mais apparemment non.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Entrepreneur

    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Points : 1
    Points
    1
    Par défaut Pour le moment
    Pour le moment je n'en ai pas besoin (factures differentes sur 2 PC distincts) c'est pour ça que je ne t'ai pas pollué plus encore

    Maintenant c'est plutôt la questions qui tue, du genre : je cherche à inscrire dans la colonne B du fichier "liste" les prix ttc de ces factures de maniere a ce qu'elle correspondent aux lignes !

    Rien que de réfléchir à la question, moi je suis déjà mort !

    Merci

  12. #12
    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, je suppose que cette valeur se trouve toujours dans la même cellule de chaque fichier xls et sur une feuille portant toujours le même nom d'onglet , qu'elle est la coordonnée de cette cellule ainsi que le nom de cette feuille ?

  13. #13
    Nouveau Candidat au Club
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Entrepreneur

    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Points : 1
    Points
    1
    Par défaut Re: FICHIER.XLSX qui reprend le nom de tous les fichiers contenus dans le meme repertoire ?
    Bonjour Kiki

    Oui effectivement toujours dans
    le meme onglet : 1
    la meme cellule : G51

    As tu lu mon message en pv sur la solution proposé par une autre personne.
    En fait j'ai abandon né car je n'arrive pas a l'utiliser correctement !

    En revanche si tu arrives a solutionner avec ce complément d'info la ! ca va être top !

    Merci encore
    Sam

  14. #14
    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, cette solution est totalement obsolète.
    Je te parle de nom d'onglet pas de N° de feuille

    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Const sNomFeuilleAImporter As String = "Feuil1"
    Const sCellData As String = "D13"
    sera à adapter à ton contexte

    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
    Option Explicit
     
    Const TypeFichier As String = "xls"
    Const sNomFeuilleAImporter As String = "Feuil1"
    Const sCellData As String = "D13"
     
    Private Function ExtraireValeur(Dossier As String, Fichier As String, Feuille As String, Cellule As String)
    Dim Argument As String
        Argument = "'" & Dossier & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Address(, , xlR1C1)
        ExtraireValeur = ExecuteExcel4Macro(Argument)
    End Function
     
    Private Sub ImportDatas()
    Dim i As Long
    Dim sNomFichier As String, sDossier As String
    Dim NbFichiers As Long
     
        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(i, 2) = ExtraireValeur(sDossier, sNomFichier, sNomFeuilleAImporter, sCellData)
                .Cells(i, 2).NumberFormat = "#,##0.00 $"
            End With
        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

  15. #15
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    bonjour,

    Citation Envoyé par century94 Voir le message
    Oui effectivement toujours dans
    le meme onglet : 1
    la meme cellule : G51
    lu vite fait, mais perso je ne ferais jamais ça car la moindre évolution à ce niveau = boum.

    Pour une facture, de base j'utiliserai un modèle (.xlst) et la cellule visée serait nommée, ce qui fait que si je fais évoluer le modèle l'adresse en dur n'est pas importante...

    D'ailleurs plutôt que le stockage des factures en une multitude de fichiers, je penserai à une feuille base de donnée facture qui les enregistrai ligne à ligne (avec toute la puissance de traitement qui en découle) et un masque de facture qui servirai à leur édition...

    Je ne sais pas si comptablement, c'est légal par contre ?


    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  16. #16
    Nouveau Candidat au Club
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Entrepreneur

    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par kiki29 Voir le message
    Salut, cette solution est totalement obsolète.
    Je te parle de nom d'onglet pas de N° de feuille

    Donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Const sNomFeuilleAImporter As String = "Feuil1"
    Const sCellData As String = "D13"
    sera à adapter à ton contexte
    -------------------------------
    Bonjour Kiki

    je reviens vers toi. J'ai tenté de faire evoluer ma gestion de factures avec ce que tu m'as mis la dessus.

    Le souci c'est que maintenant la première colonne donne le chemin entier qui mène à la facture (pour exemple la premiere cellule) :
    \\Lecoeur-pc\d_serveur_century\Factures 2012\04 Factures AVRIL 2012\20577_unifex_facture_AVRIL2012.xls
    au lieu de : 20577_unifex_facture_AVRIL2012.xls

    Et pour la seconde colonne "le total de la facture" s'affiche c'est au poil. Cependant comme l'indiquait ORMONTH, peut etre est il possible que je nomme la cellule et de faire que la formule aille chercher le nom de cellule ?

    merci encore pour tout

    Sam

  17. #17
    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,

    Dans la Procédure ImportDatas
    Remplacer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    With Feuil1
        .Cells(i, 2) = ExtraireValeur(sDossier, sNomFichier, sNomFeuilleAImporter, sCellData)
        .Cells(i, 2).NumberFormat = "#,##0.00 $"
    End With
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    With Feuil1
        .Cells(i, 1) = sNomFichier
        .Cells(i, 2) = ExtraireValeur(sDossier, sNomFichier, sNomFeuilleAImporter, sCellData)
        .Cells(i, 2).NumberFormat = "#,##0.00 $"
    End With

  18. #18
    Nouveau Candidat au Club
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Entrepreneur

    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    Super c'est résolu ! plus de chemin qui s'affiche.

    En revanche est il possible pour le prix TTC de la facture que la recherche se fasse sur le nom de cellule que j'ai appelé "TTC" plutot que sur la cellule G42 ?



    Haaaa j'abuse peut être la ?

    Merci
    Sam

  19. #19
    Nouveau Candidat au Club
    Homme Profil pro
    Entrepreneur
    Inscrit en
    Avril 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Entrepreneur

    Informations forums :
    Inscription : Avril 2012
    Messages : 10
    Points : 1
    Points
    1
    Par défaut
    [QUOTE=kiki29;6678703]Salut,
    -------------------------------------------------------

    Bonjour

    Comme je disais Kiki, le probleme est résolu.

    Cependant est il possible que la recherche se fasse sur le nom de cellule que j'ai appelé "TTC" plutot que sur la cellule G42 ?

    Merci
    Sam

  20. #20
    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, cela s'appelle du harcèlement ... textuel.

    Affecter un bouton à SelDossierRacine.
    Les Constantes du code VBA seront à adapter à ton contexte.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Const iRowDep As Long = 0
    Const iColDep As Long = 0
    Const TypeFichier As String = "xls"
    Const sNomFeuilleAImporter As String = "Feuil1"
    Const sNomFeuilleDest As String = "Feuil1"
    Const sTotal As String = "Total"
    La recherche de fichiers peut être récursive.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    ' Recherche récursive des fichiers dans les sous dossiers
    '   via True/False
    '   Ici par défaut non récursive : False
    	Liste .SelectedItems(1), NbFichiers, False
    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    Option Explicit
     
    Dim TabFichiers() As String
    Dim NbFichiers As Long
    Const iRowDep As Long = 0
    Const iColDep As Long = 0
    Const TypeFichier As String = "xls"
    Const sNomFeuilleAImporter As String = "Feuil1"
    Const sNomFeuilleDest As String = "Feuil1"
    Const sTotal As String = "Total"
     
    Private Sub ImportDatas()
    Dim i As Long
    Dim sNomFichier As String, sNomDossier As String
    Dim Wkb As Workbook
    Dim WkbDest As Workbook
     
        On Error GoTo Erreurs
        Set WkbDest = ThisWorkbook
     
        For i = 1 To UBound(TabFichiers)
            sNomFichier = TabFichiers(i)
            sNomDossier = Left$(TabFichiers(i), InStrRev(TabFichiers(i), "\"))
            sNomFichier = Right$(TabFichiers(i), Len(TabFichiers(i)) - Len(sNomDossier))
     
            Set Wkb = Workbooks.Open(Filename:=TabFichiers(i))
            Wkb.Worksheets(sNomFeuilleAImporter).Range(sTotal).Copy
     
            With WkbDest.Worksheets(sNomFeuilleDest)
                .Cells(i + iRowDep, 1 + iColDep) = sNomFichier
                .Cells(i + iRowDep, 2 + iColDep).PasteSpecial Paste:=xlPasteValues
                .Cells(i + iRowDep, 2 + iColDep).NumberFormat = "#,##0.00 $"
            End With        
            Wkb.Close False
        Next i
     
        With WkbDest.Worksheets(sNomFeuilleDest)
            .Columns("A:B").Columns.AutoFit
            .Range("C1").Select
        End With
     
    Sortie:
        Set Wkb = Nothing
        Set WkbDest = Nothing
        Exit Sub
    Erreurs:
        If Err.Number = 9 Then Resume Sortie
    End Sub
     
    Private Sub Liste(sDossier As String, NbFichiers As Long, bSousDossier As Boolean)
    Dim FSO As Object, Dossier As Object, sFichier As String
     
        Set FSO = CreateObject("Scripting.FileSystemObject")
        Set Dossier = FSO.GetFolder(sDossier)
     
        sFichier = Dir$(sDossier & "\*.*")
        Do While Len(sFichier) > 0
            If UCase$(sFichier) <> UCase$(ThisWorkbook.Name) And _
               UCase$(TypeFichier) = UCase$(FSO.GetExtensionName(sFichier)) Then
                ReDim Preserve TabFichiers(NbFichiers)
                TabFichiers(NbFichiers) = sDossier & "\" & sFichier
                NbFichiers = NbFichiers + 1
            End If
            sFichier = Dir$()
        Loop
     
        If bSousDossier Then
            For Each Dossier In Dossier.SubFolders
                Liste Dossier.Path, NbFichiers, 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 le Dossier à Traiter"
            .AllowMultiSelect = False
            .ButtonName = "Sélection Dossier"
            .Show
            If .SelectedItems.Count > 0 Then
                DoEvents
                With Application
                    .StatusBar = ""
                    .ScreenUpdating = False
                End With
                ThisWorkbook.Worksheets(sNomFeuilleDest).Cells.Clear
                NbFichiers = 1
                Erase TabFichiers
     
                Liste .SelectedItems(1), NbFichiers, False
                ImportDatas
     
                With Application
                    .ScreenUpdating = True
                    .StatusBar = "Terminé"
                End With
            End If
        End With
    End Sub

Discussions similaires

  1. Copier un fichier dont une partie du nom change tous les jours
    Par Hazard17 dans le forum Général VBA
    Réponses: 13
    Dernier message: 22/01/2015, 08h58
  2. [WD16] Récupérer les noms de tous les fichiers xls ouverts à l'écran
    Par CHARLI BONGO dans le forum WinDev
    Réponses: 1
    Dernier message: 12/11/2013, 09h44
  3. Importation de tous les fichiers xlsx d'un dossier dans un fichier xlsm
    Par Chewbie Warrior dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/07/2012, 11h20
  4. afficher les noms du tous les fichiers
    Par thechef dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 19/05/2009, 13h40
  5. Réponses: 2
    Dernier message: 16/06/2008, 14h08

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