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énation de tableau via macro


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 86
    Par défaut Concaténation de tableau via macro
    Bonjour,
    J'ai un tableau dans une feuille1
    et un deuxieme dans une feuille2

    Je souhaites mettre les tableaux les uns en dessous des autres dans une feuille3 via une macro.
    Pour cela je dois selectionner la taille exacte de chaque tableau (pour ne pas prendre en compte les lignes vides, comment faire ?
    J'ai mis un exemple en PJ de ce que je voudrais
    Désolé pour mon faible niveau en Macro

    Cordialement
    Fichiers attachés Fichiers attachés

  2. #2
    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, voir ici
    ce qui adapté à ton cas donnera ceci, à noter que j'ai laissé comme dernière colonne la colonne J que tu pourras remplacer par C dans ton cas.
    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
    Option Explicit
     
    Sub ConcatenationFeuilles()
    Dim i As Long, T() As Variant
     
        Application.ScreenUpdating = False
        Feuil3.Cells.Clear
        For i = 1 To Sheets.Count
            If Sheets(i).Name <> Feuil3.Name Then
                With Sheets(i)
                    T = .Range("A1:J" & .Range("A" & Rows.Count).End(xlUp).Row).Value
                    Feuil3.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(UBound(T, 1), UBound(T, 2)) = T
                End With
            End If
        Next i
        Erase T
        With Feuil3
            .Rows("1:1").Delete Shift:=xlUp
            .Range("D1").Select
        End With
        Application.ScreenUpdating = True
    End Sub
    Ensuite il faudra sauver ton fichier en xlsm,xlsb bref des formats admettant les macros ce qui n'est pas le cas du format xlsx

    Une autre façon d'y parvenir, quand il y a de grande quantité de données à fusionner la méthode ci-dessus est plus rapide.
    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
    Option Explicit
     
    Sub ConcatenationFeuilles()
    Dim i As Long
    Dim LastRow As Long
     
        Application.ScreenUpdating = False
        Feuil3.Cells.Clear
     
        For i = 1 To Worksheets.Count
            If Worksheets(i).Name <> Feuil3.Name Then
                LastRow = Feuil3.Range("A" & Rows.Count).End(xlUp).Row + 1
                Worksheets(i).UsedRange.Copy Feuil3.Range("A" & LastRow)
            End If
        Next i
     
        With Feuil3
            .Rows("1:1").Delete Shift:=xlUp
            .Range("D1").Select
        End With
     
        Application.ScreenUpdating = True
    End Sub

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 86
    Par défaut
    Merci beaucoup c'est exactement ça !
    Comment choisir que certaine feuille et pas la totalité ?

    Merci

  4. #4
    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
    re, il te faudra modifier If Worksheets(i).Name <> Feuil3.Name Then qui balaye toutes les feuilles sauf celle on l'on effectue la fusion.
    par qqch comme ceci, qui ne fusionnera que les feuilles zaza et zozo
    If Worksheets(i).Name = "zaza" Or Worksheets(i).Name = "zozo" Then

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2011
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2011
    Messages : 86
    Par défaut
    Merci beaucoup !

    J'ai fais comme tu m'as dit

    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
    Option Explicit
     
    Sub ConcatenationFeuilles()
    Dim i As Long, T() As Variant
     
        Application.ScreenUpdating = False
        Feuil3.Cells.Clear
        For i = 1 To Sheets.Count
            If Worksheets(i).Name = "Feuil1" Or Worksheets(i).Name = "Feuil2" Then
                With Sheets(i)
                    T = .Range("A1:P" & .Range("A" & Rows.Count).End(xlUp).Row).Value
                    Feuil3.Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(UBound(T, 1), UBound(T, 2)) = T
                End With
            End If
        Next i
        Erase T
        With Feuil3
            .Rows("1:1").Delete Shift:=xlUp
            .Range("D1").Select
        End With
        Application.ScreenUpdating = True
    End Sub
    mais j'ai l'erreur suivante pour .Range("D1").Select
    "La méthode Select de la classe Range a échoué"...

  6. #6
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Mai 2007
    Messages
    120
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2007
    Messages : 120
    Par défaut
    Salut le forum

    Tu ne peux sélectionner une cellule que si la feuille est sélectionnée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    '...
        With Feuil3
            .Activate
            .Rows("1:1").Delete Shift:=xlUp
            .Range("D1").Activate
        End With
    '...
    Mytå_Qc

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/09/2010, 12h39
  2. [XL-2003] mise en forme de tableau via une macro
    Par sebastienmarche dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/10/2009, 10h39
  3. Transposer un tableau via des macro variables
    Par juliep dans le forum Macro
    Réponses: 2
    Dernier message: 10/09/2009, 15h32
  4. recuperer un tableau sur page html securisee via macro
    Par TOTOTAR dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 16/06/2009, 04h53
  5. Concaténer via macro
    Par Antoniom dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 23/02/2009, 17h17

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