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 :

copier coller liste de fichier


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 23
    Par défaut copier coller liste de fichier
    Bonjour,
    j'ai 180 fichier appelé "diagramme __ du collecteur.xlsx" (le "__" c'est le chiffre du fichier)

    Dans chacun de ces fichier seul la la colonne I m'intéresse

    Objectif: créer une macro

    ce que je veux que la macro fasse:
    dans un nouveau fichier Excel il faut que :
    1) choisir où se trouve les 180 fichiers
    2) le titre de la colonne A (du nouveau fichier) soit le nom du 1er fichier (le titre de la colonne B soit le nom du 2ème fichier, etc...)
    3) copier la colonne I du 1er fichier dans la colonne A dans notre nouveau fichier (copier la colonne I du 2ème fichier dans la colonne B du nouveau fichier, etc...)

    Merci d'avance pour votre aide

  2. #2
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    Avec ta formulation :
    "Ce que je veux ..."
    "Il faut ..."

    Même si dans l'esprit, tout est correct je ne sais pas si tu vas avoir des réponses.

    J'ajoute que la philosophie de ce forum est que nous aidons à construire. On n'est pas une force de frappe qui fait tout.

    Dans l'idée, c'est d'aider les utilisateurs à progresser, là où ils ont un problème.

    Là ton problème c'est que tu demande à ce qu'on de donne la "béquée".
    Dans un sens, c'est bien, sur du très court terme. Car tu vas avoir, peut être ce que tu veux.
    Mais en terme d'autonomie et de maîtrise de l'outil que tu vas utiliser tous les jours (ou pas) tu vas dépendre du bon vouloir, de la disponibilité ... de ce forum.

    Non ???

  3. #3
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Entièrement d'accord avec jerome.vaussenat ( ) dont les paroles s'accordent avec la règle iV-N du forum.
    Je vais donc te fournir les "briques" pour construire toi-même ton application.

    dans un nouveau fichier Excel
    Méthode Add de Workbooks : https://docs.microsoft.com/fr-FR/off....workbooks.add

    1) choisir où se trouve les 180 fichiers
    Boucle While sur une fonction Dir()
    https://docs.microsoft.com/fr-fr/off...wend-statement
    https://docs.microsoft.com/fr-fr/off...p/dir-function

    2) le titre de la colonne A (du nouveau fichier) soit le nom du 1er fichier (le titre de la colonne B soit le nom du 2ème fichier, etc...)
    Utiliser une variable de type Long à incrémenter pour suivre le numéro de colonne.
    Mettre la valeur récupérée par le Dir() dans la cellule courante avec une simple assignation de valeur par un "=".
    Lire pages 13 à 26 et 143 à 145 de ceci : https://bidou.developpez.com/article/VBA/

    3) copier la colonne I du 1er fichier dans la colonne A dans notre nouveau fichier
    Méthode Copy de Range https://msdn.microsoft.com/fr-fr/lib...0(v=office.15)

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 23
    Par défaut tentative 1 échec inconnue
    Bonjour, j'ai donc tenté de faire un simple copier coller mais cela ne fonctionne toujours pas et je ne comprend pas pourquoi

    j'ai 180 fichiers nommée "[diagramme ] ..... [° collecteur.xlsx]" mais je ne vois toujours pas l'erreur, j'ai récupérer les morceaux de codes mais sa ne suffit pas visiblement, il y a 4100lignes à copier a chaque fichier

    Ci-joint le fichier avec toutes les lignes commentées (module "modMain"), ça devrait aider.

    Le module "modProgress" et le Userform "ufProgress" servent uniquement pour la barre de progression, ne pas s'en préoccuper !

    fichier : ConcatenerDonnees-v1.xlsm
    si sa marche pas essayer ça:
    https://forum.developpez.be/images/attach/xlsm.gif

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Citation Envoyé par max36000 Voir le message
    j'ai donc tenté de faire un simple copier coller mais cela ne fonctionne toujours pas et je ne comprend pas pourquoi
    Sans doute parce que, justement, tu as fait un copier-coller sans chercher à comprendre.

    Ci-joint le fichier
    Beaucoup de participants à ce forum n'ouvrent pas les pièces jointes, entre autre pour les raisons expliquées ici : https://www.developpez.net/forums/d8...s-discussions/

    ça devrait t'aider.
    Ne renverse pas les rôles : c'est toi qui a un travail à réaliser et c'est nous qui t'aidons.

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2020
    Messages : 23
    Par défaut
    Citation Envoyé par Menhir Voir le message
    Sans doute parce que, justement, tu as fait un copier-coller sans chercher à comprendre.


    Beaucoup de participants à ce forum n'ouvrent pas les pièces jointes, entre autre pour les raisons expliquées ici : https://www.developpez.net/forums/d8...s-discussions/
    Si tu avais ouvert le fichier tu verrais qu'il est commenté quasiment ligne par ligne, ce que je ne comprends pas c'est pourquoi il ne colle pas mes contenus

    mais bon pas grave voici le 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
    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
    106
    107
    108
    109
    110
     
    Option Explicit
     
    Public Sub Importer()
     
        Dim oFSO As FileSystemObject 'objet de gestion de fichiers
        Dim oShR As Worksheet 'onglet résultat
        Dim sRep As String 'chemin du répertoire principal
        Dim oRep As Folder 'objet répertoire
        Dim oFic As File 'objet fichier
        Dim oWBx As Workbook 'classeur excel à importer (plusieurs)
        Dim oShx As Worksheet 'onglet du classseur à importer
        Dim iDerLig As Long 'dernière ligne
        Dim iColEcr As Integer 'colonne d'écriture
        Dim iAvanc As Integer 'avancement
     
        'sélection du répertoire à importer
        sRep = ChoixDossier()
     
        'si l'utilisateur annule la recherche, on arrête
        If sRep = "" Then
            Exit Sub
        End If
     
        'instanciation des objets
        Set oFSO = New FileSystemObject 'objet de gestion de fichier
        Set oRep = oFSO.GetFolder(sRep) 'objet répertoire
        Set oShR = Workbooks("ConcatenerDonnees-v1.xlsm").Worksheets("Resultat") 'onglet résultat
     
        'efface le résultat
        oShR.Cells.ClearContents
     
        iColEcr = 1 'colonne d'écriture dans l'onglet résultat (incrémentée pour chaque nouveau fichier importé)
        iAvanc = 0 'pour affichage de l'avancement (barre de progression)
     
        Application.ScreenUpdating = False 'bloque la mise à jour de l'affichage (accélère le traitement)
     
        'parcours de tous les fichiers du répertoire
        For Each oFic In oRep.Files
     
            'barre de progression
            ''modProgress.ShowProgress iAvanc, oRep.Files.Count
     
            'prend en compte tous les fichiers avec un nom "[Diagramme ] ..... [° collecteur.xlsx]"
            If oFic.Name Like "diagramme * ° collecteur.xlsx" Then
     
                'ouverture du fichier
                Set oWBx = Workbooks.Open(oFic.Path, , True)
     
                'premier onglet du fichier
                Set oShx = oWBx.Worksheets(1)
     
                'dernière ligne du fichier
                iDerLig = oShx.Range("I" & Rows.Count).End(xlUp).Row
     
                'nom du fichier
                oShR.Cells(1, iColEcr).Value = oWBx.Name
     
                'copie
                oShx.Range("I4:I" & iDerLig).Copy
                'colle
                oShR.Cells(2, iColEcr).PasteSpecial xlPasteAll
     
                'vide presse-papier
                Application.CutCopyMode = False
     
                'désinstanciation de l'objet
                Set oShx = Nothing
     
                'fermeture du fichier
                oWBx.Close
     
                'désinstanciation de l'objet
                Set oWBx = Nothing
     
                'pour le prochain fichier, on écrira dans la colonne suivante
                iColEcr = iColEcr + 1
            End If
     
            'avancement
            iAvanc = iAvanc + 1
        Next oFic
     
        'mise à jour de l'affichage
        Application.ScreenUpdating = True
     
        'désinstanciation des objets
        Set oShR = Nothing
        Set oRep = Nothing
        Set oFSO = Nothing
     
    End Sub
     
    'sélection d'un dossier
    Private Function ChoixDossier() As String
     
        With Application.FileDialog(msoFileDialogFolderPicker)
            'fichier par défaut
            .InitialFileName = ActiveWorkbook.Path & "\"
            .Show
            If .SelectedItems.Count > 0 Then
                'si l'utilisateur sélectionne un fichier, renvoie ce fichier
               ChoixDossier = .SelectedItems(1)
            Else
                'si l'utilisateur annule le choix, renvoie ""
               ChoixDossier = ""
            End If
        End With
     
    End Function
    j'ai piquer un code pour la barre de progression, elle aucun pb elle s'affiche, le code est à retrouver dans le document joint précédement
    je cherche ou est la faille dans le code

    merci d'avance

  7. #7
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    As-tu essayé de faire tourner ton code en pas-à-pas en regardant, à chaque instruction, la valeur prise par les variables ?

Discussions similaires

  1. Copier / Coller d'un fichier txt
    Par brandtance dans le forum Général Python
    Réponses: 40
    Dernier message: 04/05/2009, 08h38
  2. Copier coller d'un fichier vers un autre
    Par loloz27 dans le forum Excel
    Réponses: 2
    Dernier message: 02/02/2009, 17h40
  3. Réponses: 1
    Dernier message: 09/12/2008, 12h23
  4. boucle avec copier coller dans un fichier excel
    Par Chalu_C_Momo dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 20/11/2008, 16h45
  5. copier-coller d'un fichier
    Par laurentdepibrac dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/07/2007, 16h41

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