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 :

Ouvrir les fichier d'une liste et copier une partie d'un onglet - Macro VBA [XL-2010]


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
    Directeur commercial
    Inscrit en
    Avril 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 19
    Par défaut Ouvrir les fichier d'une liste et copier une partie d'un onglet - Macro VBA
    Bonjour à tous,

    J'ai un certain nombre de fichier excel (un par client) qui sont tous conçus de la même manière (même onglets).
    Ils ne se trouvent pas dans le même répertoire, mais chacun dans un répertoire au nom du client.
    Passation CLIENT1.xlsxx
    Passation CLIENT2.xlsxx
    Passation CLIENT3.xlsxx
    etc...
    Sur ces différents fichiers, je souhaite copier/coller les données de l'onglet appeler "Actions en cours", a partir de la cellule A2, jusqu'à la dernière ligne non vide. Sur ces onglets, la dernière colonne non vide est la colonne E.

    Ces données doivent être collées à la suite l'unes de l'autres dans un fichier appelé Suivi Actions.xlsm, sur l'oinglet "Actions en cours" a partir de la cellule A2.
    Sur ce fichier, les noms des clients sont en colonne A, et en B on trouve le chemin complet d'accès, sur l'onglet client
    La liste débute sur la ligne 4 de ce fichier.
    "C:\Users\prenom.nom\Documents\10 - Clients\CLIENT1.xlsx"
    "C:\Users\prenom.nom\Documents\10 - Clients\CLIENT2.xlsx"
    Etc

    Cette liste est évolutive. D’où le fait que je recherche à faire une boucle...
    Est-ce la description de mon besoin est assez précise ?

    Merci bcp à toutes et tous de votre aide !

    Thomas.

  2. #2
    Membre confirmé
    Homme Profil pro
    Bénévole super actif pour association sportive
    Inscrit en
    Février 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Bénévole super actif pour association sportive

    Informations forums :
    Inscription : Février 2015
    Messages : 83
    Par défaut
    Bonjour Thomas,

    il faudrait je pense commencer par avoir dans un classeur qui contiendrait les macros et la liste des clients afin de reconstruire facilement le chemin d'accès au fichier qui dépend du nom du client.
    Ensuite il suffit de lancer la macro en pointant sur le premier client, et à chaque boucle de descendre d'une cellule jusqu'à ce que celle-ci soit vide indiquant qu'il faut sortir de la boucle.

    A partir de l'enregisteur de Macro, la manipulation sur l'ouverture, le copier-coller, la fermeture et la sauvegarde du fichier de sortie fera la grosse partie du travail.

    Cordialement,
    Poussemousse.

  3. #3
    Membre averti
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Avril 2015
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 19
    Par défaut
    Bonjour Pamplemousse.

    J'ai déjà un classeur (le classeur qui devra recevoir les données copié des différents classeurs), qui liste les différents chemin.

    J'ai déjà un bout de code mais j'ai un bug

    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
    Sub Test()
     
        Dim Cl As Workbook
        Dim Fe As Worksheet
        Dim PlgChemin As Range
        Dim PlgValeur As Range
        Dim Cel As Range
        Dim Lig As Long
     
        'défini la plage sur la colonne B à partir de B4 contenant les chemins des dossiers avec noms des classeurs, adapter le nom de la feuille, ne le connaissant pas, j'ai mis "Feuil1" !
        With ThisWorkbook.Worksheets("Actions en cours"): Set PlgChemin = .Range(.Cells(4, 2), .Cells(.Rows.Count, 2).End(xlUp)): End With
     
        'feuille du classeur où se trouve la macro devant recevoir les valeurs
        Set Fe = ThisWorkbook.Worksheets("Actions en cours")
     
        'gèle
        Application.ScreenUpdating = False
     
        'parcours la plage des chemins
        For Each Cel In PlgChemin
     
            'contrôle si valide
            If Dir(Cel.Value) <> "" Then
     
                'ouvre le classeur
                Set Cl = Workbooks.Open(Cel.Value)
     
                'défini la plage de A1 à Ex
                With Cl.Worksheets("Actions en cours"): Set PlgValeur = .Range(.Cells(1, 1), .Cells(.Rows.Count, 5).End(xlUp)): End With
     
                'si pas vide...
                If Not PlgValeur Is Nothing Then
     
                    '...inscrit les valeurs les unes à la suite des autres...
                    With Fe
     
                        Lig = .Cells(.Rows.Count, 1).End(xlUp).Row + 1 'sur colonne A
                        .Range(.Cells(Lig, 1), .Cells(PlgValeur.Rows.Count + Lig - 1, 5)).Value = PlgValeur.Value
     
                    End With
     
                End If
     
                '...puis referme le classeur
                Cl.Close False
     
            End If
     
        Next Cel
     
        'rafraîchi
        Application.ScreenUpdating = True
     
    End Sub
    Mais quand je lance la macro Quand je lance la macro, j'ai le message suivant "Erreur d'éxécution ' 13': Incompatibilité de type".
    Ce message apparait à cet endroit de la macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    'contrôle si valide
            If Dir(Cel.Value) <> "" Then
    Merci pour votre aide.

    Thomas.

  4. #4
    Membre confirmé
    Homme Profil pro
    Bénévole super actif pour association sportive
    Inscrit en
    Février 2015
    Messages
    83
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Bénévole super actif pour association sportive

    Informations forums :
    Inscription : Février 2015
    Messages : 83
    Par défaut
    Thomas,

    je pense que l'erreur est due à un mauvais renseignement de tes chemins vers les fichiers à ouvrir.
    Il faut que le nom du fichier fasse partie de la valeur de la cellule.

    Sans voir ce que contient ton fichier Excel impossible de t'aider davantage, mais la Macro tourne bien chez moi, au moins au-delà de la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Dir(Cel.Value) <> "" Then
    Cordialement
    Poussemousse

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

Discussions similaires

  1. [Batch] Copier uniquement les fichiers d'une liste
    Par RomainSP dans le forum Scripts/Batch
    Réponses: 2
    Dernier message: 21/09/2018, 21h03
  2. [XL-2010] Ouvrir un fichier avec une partie du nom variable
    Par PIERRE-DEVIN dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 05/09/2018, 14h25
  3. [XL-2010] Fusion des cellules identiques d'une partie d'un TCD - macro VBA
    Par boostiik dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 09/06/2016, 21h46
  4. 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
  5. Réponses: 32
    Dernier message: 28/08/2007, 19h57

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