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 :

Copie d'un tableau structuré dans un autre tableau structuré


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Par défaut Copie d'un tableau structuré dans un autre tableau structuré
    Bonjour auriez vous une macro simple pour recopier toutes les cellules d'un tableau structuré dans un autre tableau plus grand ?

    tab1 le premier tableau de 10 lignes 20 colonnes

    tab_bdd le tableau à remplir 20 colonnes mais beaucoup plus de lignes !

    le but étant de copier du tab1 colonne 3 à 20 dans tab_bdd à partir d'une ligne x (ligne vous avez deviné qui va bien sur changer au fur et à mesure que les tableaux vont incrémenter cette bdd)

    J'ai regardé certains tutos dont celui ci https://didier-gonard.developpez.com...s-tableau-vba/ mais je me demande s'il est possible de tout faire d'un coup et pas une case par une case...

    Merci et bonne journée à vous.

  2. #2
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 562
    Par défaut
    Bonjour

    La ligne x est la fin du tableau ou pas ?

    Sinon à préciser...

    Ton lien, ancien, ne semble pas traiter les listObjects...

  3. #3
    Membre confirmé
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Par défaut
    Bonjour Chris merci pour ta réponse.

    Non le x ne sera pas la dernière linge +1 mais une ligne déterminée selon les besoins

    Ce matin je n'ai mis que ce lien mais j'ai aussi activement regardé celui ci https://fauconnier.developpez.com/tu...ux-structures/ mais je n'ai pas trouvé dedans.

  4. #4
    Membre régulier
    Inscrit en
    Juin 2010
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juin 2010
    Messages : 8
    Par défaut Une autre question dans le même domaine
    Je désire copier une série de cellules contiguës dans une ligne d'un tableau structuré vers un autre tableau.
    Je cale sur le "Select".
    Je pourrais faire une boucle mais je crois qu'il doit exister un moyen plus direct.
    Merci d'avance de votre aide.

    Christian

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 562
    Par défaut
    RE

    Soit X étant la ligne Excel située dans le tableau au dessus de laquelle les éléments doivent se copier. En fonction de la position du Tableau, le code recalcule X du point de vue du taleau
    Le tableau source de la copie a été nommé Source et l'autre Cible (à adapter)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Plage As Range
        Application.ScreenUpdating = False
        X = 20 'numéro de ligne Excel au dessus de laquelle les lignes doivent se copier
        Set Plage = [Source].ListObject.DataBodyRange
        Set Plage = Plage.Offset(0, 3).Resize(, 17)
     
        With [Cible].ListObject
            X = X - .Range.Row
            For I = 1 To Plage.Rows.Count
                .ListRows.Add (X)
            Next I
            .DataBodyRange.Range(Cells(X, 4), Cells(X + I - 2, 20)) = Plage.Value
        End With

  6. #6
    Membre confirmé
    Homme Profil pro
    ingenieur du son
    Inscrit en
    Avril 2017
    Messages
    212
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : ingenieur du son
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2017
    Messages : 212
    Par défaut
    Citation Envoyé par 78chris Voir le message
    RE

    Soit X étant la ligne Excel située dans le tableau au dessus de laquelle les éléments doivent se copier. En fonction de la position du Tableau, le code recalcule X du point de vue du taleau
    Le tableau source de la copie a été nommé Source et l'autre Cible (à adapter)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Plage As Range
        Application.ScreenUpdating = False
        X = 20 'numéro de ligne Excel au dessus de laquelle les lignes doivent se copier
        Set Plage = [Source].ListObject.DataBodyRange
        Set Plage = Plage.Offset(0, 3).Resize(, 17)
     
        With [Cible].ListObject
            X = X - .Range.Row
            For I = 1 To Plage.Rows.Count
                .ListRows.Add (X)
            Next I
            .DataBodyRange.Range(Cells(X, 4), Cells(X + I - 2, 20)) = Plage.Value
        End With
    Super merci ...j'ai eu une journée éreintante du coup je reviendrai plus tard avec des questions histoire que je comprenne bien comment mettre mon hameçon au bout de ma ligne.

    Merci beaucoup Chris

  7. #7
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 562
    Par défaut
    BOnjour
    Citation Envoyé par huvelles Voir le message
    Je désire copier une série de cellules contiguës dans une ligne d'un tableau structuré vers un autre tableau.
    Je cale sur le "Select".
    Je pourrais faire une boucle mais je crois qu'il doit exister un moyen plus direct.
    Merci d'avance de votre aide.

    Christian
    Tu devrais créer ton propre fil et donner davantage de précisions

    De façon générale on n'utilise pas select dans les codes

  8. #8
    Membre averti
    Femme Profil pro
    Paramétreur de progiciels
    Inscrit en
    Septembre 2016
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Paramétreur de progiciels

    Informations forums :
    Inscription : Septembre 2016
    Messages : 37
    Par défaut
    Un petit exemple que j'utilise, ça copie colonne par colonne d'un tableau vers un autre (brut de pomme)
    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
    'COPIER DONNEES
    '
    'Définir n° dernière ligne et colonne de  la base à copier
    Dernligne = WB_tiges.Sheets("Liste tiges vrac").Range("A" & Rows.Count).End(xlUp).Row
    nb_col_export = WB_tiges.Sheets("Liste tiges vrac").Range("A1").End(xlToRight).Column
    '
    '
    'Copier les colonnes à en-tête identique
     
    For no_col_export = 1 To nb_col_export Step 1
     
        nom_col_export = WB_tiges.Sheets("Liste tiges vrac").Cells(1, no_col_export).Value 'Tableau commence ligne 1
     
        For no_col_bdd = 1 To ThisWorkbook.Sheets("Liste tiges").Range("A1").End(xlToRight).Column Step 1
     
            nom_col_bdd_ventes = ThisWorkbook.Sheets("Liste tiges").Cells(1, no_col_bdd).Value
     
            If nom_col_export = nom_col_bdd_ventes Then
                'ThisWorkbook.Sheets("Liste tous produits").ListObjects("Liste_ts_pdts").Range(k + 1, no_col_bdd).Value = WB_export.Sheets(1).ListObjects("Export_ventes").Range(i + 1, no_col_export).Value 'Mettre + 1 car avec cette syntaxe ligne 1 = en-tête
     
                'Copier colonne export de la 2ème à la dernière ligne (données uniquement, sans en-tête : ligne 1 en tete)
                WB_tiges.Activate '!!!! Penser à activer classeur et feuille sinon bug
                WB_tiges.Sheets("Liste tiges vrac").Activate
     
                WB_tiges.Sheets("Liste tiges vrac").Range(Cells(2, no_col_export), Cells(Dernligne, no_col_export)).Copy 'ThisWorkbook.Sheets("Liste tous produits").Cells(2, no_col_bdd) 'Non car coller les valeurs seulement
     
                'Coller dans la colonne de la bdd correspondante à partir de la ligne 2 (données uniquement, sans en-tête)
                ThisWorkbook.Activate '!!!! Penser à activer classeur et feuille sinon bug
                ThisWorkbook.Sheets("Liste tiges").Activate
     
                ThisWorkbook.Sheets("Liste tiges").Cells(2, no_col_bdd).Activate
                ActiveCell.PasteSpecial Paste:=xlPasteValues
     
                Application.CutCopyMode = False 'vider presse papiers
     
                Exit For 'si correspondance trouvée passer à la suivante
            End If
     
        Next no_col_bdd
     
    Next no_col_export
    Si ça peut te donner des pistes

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

Discussions similaires

  1. copie contenu d'un fichier dans un autre fichier avec sed
    Par zorooo dans le forum Shell et commandes GNU
    Réponses: 14
    Dernier message: 18/01/2010, 09h17
  2. Réponses: 6
    Dernier message: 11/02/2009, 13h49
  3. {VBA excel}OUverture,Extraction et Copie d'un fichier Excel dans un autre
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/06/2007, 09h43
  4. vba copie contenu d'un champs dans un autre
    Par juju124 dans le forum VBA Access
    Réponses: 1
    Dernier message: 02/05/2007, 17h15
  5. Réponses: 13
    Dernier message: 27/10/2006, 11h50

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