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 :

Concaténer plusieurs fichiers


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
    Technicien Help Desk
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Par défaut Concaténer plusieurs fichiers
    Bonsoir le forum
    j'utilise une série de fichiers que je concatène en un seul
    je recherche la première ligne vide du premier
    sur le 2eme je recherche la plage de cellules non vides
    je la copie et la colle sur le premier
    je passe au suivant je sélectionne et copie la plage trouvée
    je reviens au premier, première ligne vide , je colle
    puis je passe au 3eme etc
    tout fonctionne bien sauf si un des fichier est vide (exemple fichier classC vide)
    la sélection prend tout, 65000 lignes, et bien sur la macro plante
    comment ignorer une opération si un fichier est vide ?

    merci d'avance
    voici le code que j'utilise:

    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
     ' Classeur classA selectionne premiere cellule vide :
     
    Windows("classA.xls").Activate
    Dim MaLigne1 As Variant
    MaLigne1 = Range("A2").End(xlDown).Address
    MaLigne1 = Range(MaLigne1).Row
    MaLigne1 = MaLigne1 + 1
    Range("A" + CStr(MaLigne1)).Select
     
     
     
    ' Classeur classB selectionne zone à copier et colle :
     
        Windows("classB.xls").Activate
        Dim MaLigne2 As Variant
        MaLigne2 = Range("A2").End(xlDown).Address
        MaLigne2 = Range(MaLigne2).Row
        Range("A2:X" + CStr(MaLigne2)).Select
     
        Application.CutCopyMode = False
        Selection.Copy
     
        Windows("classA.xls").Activate
        ActiveSheet.Paste
     
     
     
    ' Classeur classC selectionne zone à copier et colle :
     
        Windows("classC.xls").Activate
        Dim MaLigne3 As Variant
        MaLigne3 = Range("A2").End(xlDown).Address
        MaLigne3 = Range(MaLigne3).Row
        Range("A2:X" + CStr(MaLigne3)).Select
              Application.CutCopyMode = False
        Selection.Copy
     
            ' recherche 1ere cellule vide et colle :
            Windows("classA.xls").Activate
     
            Dim MaLigne4 As Variant
            MaLigne4 = Range("A2").End(xlDown).Address
            MaLigne4 = Range(MaLigne4).Row
            MaLigne4 = MaLigne4 + 1
            Range("A" + CStr(MaLigne4)).Select
     
        ActiveSheet.Paste
    et ainsi de suite

  2. #2
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonsoir,

    Citation Envoyé par roadrunner34 Voir le message
    tout fonctionne bien sauf si un des fichier est vide (exemple fichier classC vide)
    la sélection prend tout, 65000 lignes, et bien sur la macro plante
    Tu pourrais user d'une autre méthode pour chercher la plage à copier :
    • avec .End(xlUp), partir du bas de la feuille
    • avec .UsedRange tu auras directement la plage utilisée. Cette méthode renvoie la cellule A1 si la feuille est vide.

    Cordialement,

    PGZ

  3. #3
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Par défaut
    Bonsoir pgz
    ça ne m'aide pas vraiment
    si je commence par le bas il va prendre en compte la ligne 1 : les entêtes de colonnes
    par contre je ne sais pas comment utiliser usedrange
    s'il me renvoie a1 comme tu le dis, il vas donc prendre les entêtes une fois en encore
    Une autre idée ?

    peut être avec un if ?
    mais quelle condition mettre ?
    if a2<> "" then .... (ça déroule la macro)

    end if (juste avant de passer au test suivant ???)

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut



    Bonjour, bonjour !

    Combiner la propriété Count avec UsedRange permet de vérifier le nombre de cellules …

    C'est comme les LEGO, suffit d'emboîter !

  5. #5
    Membre averti
    Homme Profil pro
    Technicien Help Desk
    Inscrit en
    Juin 2014
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Juin 2014
    Messages : 18
    Par défaut solution
    Bonsoir
    au final j'ai fait au plus simple :
    un end if et le tour est joué
    merci quand même

  6. #6
    Expert confirmé
    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
    Par défaut
    Salut, à titre documentaire, puisque trop tard, voir ceci

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

Discussions similaires

  1. [PDF] Concaténer plusieurs fichiers
    Par Wookai dans le forum C#
    Réponses: 7
    Dernier message: 16/06/2023, 15h06
  2. [WD14] Concaténer plusieurs fichiers texte
    Par mail.spam dans le forum WinDev
    Réponses: 3
    Dernier message: 30/03/2011, 14h08
  3. concaténer plusieurs fichiers xml avec awk
    Par flora806 dans le forum Linux
    Réponses: 0
    Dernier message: 19/06/2009, 17h18
  4. Comment concaténer plusieurs fichiers en un ?
    Par souch dans le forum Langage
    Réponses: 16
    Dernier message: 14/12/2004, 18h58

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