Microsoft 365 Copier coller en VBA des colonnes non adjacentes

Bizarre

XLDnaute Nouveau
Bonsoir,

J’aimerais copier-coller un tableau de la feuille « Basededonnées » vers la feuille « Tableau de bord » Actuellement je copie le tableau entier et moi je ne voudrais pas la colonne « Date » Voila le code que j’utilise.

VB:
Sub CopierColler()

' Macro1 Macro
ActiveSheet.Unprotect

    Sheets("Basededonnée").Select
    Range("Tableau_base_de_données").Select
    Range("C2").Activate
    Selection.Copy
    Sheets("Tableau de bord").Select
    Range("A2").Activate
    ActiveSheet.Paste
    Range("D12").Select
    
ActiveSheet.Protect
End Sub
J’ai également testé en sélectionnant uniquement les colonnes voulues mais à ce moment-là les colonnes ne sont plus dynamiques.
Si besoin je joins le fichier en question
 

Pièces jointes

  • Exemple 1-V2.xlsm
    57.8 KB · Affichages: 10
Solution
Bonjour fanch55,
Le code fonctionne parfaitement mais j'aurais une dernière demande serait-il possible de n'effacer que les colonnes de A à G car les dernières colonnes contiennent des formules. Là je ne sais même pas si cela est possible
J'ai exécuté votre classeur .
Le tableau Tableau_de_Bord est une table structurée. les colonnes "supplémentaires" conservent leur formule lors du coller .
Si on ne les voit pas en tant que telles (formules) c'est parce que la feuille est protégée ...

fanch55

XLDnaute Barbatruc
Bonsoir,
Le code pour le copier/coller:
Edit du 25/01 :
correction du code car oubli de purger le tableau cible avant colller
VB:
Sub CopierColler()
ActiveSheet.Unprotect

    If Not [Tableau_de_bord].ListObject.DataBodyRange Is Nothing _
    Then [Tableau_de_bord].ListObject.DataBodyRange.Delete

    [Tableau_base_de_données[Code]].Copy [Tableau_de_bord[Code]]
    [Tableau_base_de_données[Fruit]].Copy [Tableau_de_bord[Fruit]]
    [Tableau_base_de_données[Modele]].Copy [Tableau_de_bord[Modele]]
    [Tableau_base_de_données[Legumes]].Copy [Tableau_de_bord[Legumes]]
    [Tableau_base_de_données[Arbre]].Copy [Tableau_de_bord[arbre]]
   
ActiveSheet.Protect
End Sub
 
Dernière édition:

fanch55

XLDnaute Barbatruc
Autres façons :
VB:
Sub CopierColler1()
ActiveSheet.Unprotect

    If Not [Tableau_de_bord].ListObject.DataBodyRange Is Nothing _
    Then [Tableau_de_bord].ListObject.DataBodyRange.Delete
   
    For Each Col In Array("Code", "Fruit", "Arbre", "Modele", "Legumes")
        Range("Tableau_base_de_données[" & Col & "]").Copy _
               Range("Tableau_de_bord[" & Col & "]")
    Next
   
ActiveSheet.Protect
End Sub

VB:
Sub CopierColler2()
ActiveSheet.Unprotect

    If Not [Tableau_de_bord].ListObject.DataBodyRange Is Nothing _
    Then [Tableau_de_bord].ListObject.DataBodyRange.Delete
 
   ' le nom alpha des colonnes est en fait l'index des colonnes dans un range
   ' mais cette méthode implique que l'ordre des colonnes soit figé pour les 2 tableaux
    Union([Tableau_base_de_données].Columns("C:F"), [Tableau_base_de_données].Columns("A")).Copy _
          [Tableau_de_bord]
   
ActiveSheet.Protect
End Sub
 

Bizarre

XLDnaute Nouveau
Bonsoir à tous !
En reprenant une partie du code de fanch55 voici ton fichier en retour
vois si cela te convient
Bonne soirée !
Bonjour,

Un grand merci à vous deux pour la rapidité de vos réponses, j’ais opter pour la solution de Backhandshot car elle a devancé l’autre question que je voulais poser et qui concerné la suppression d’une ligne sur les deux feuilles. Cependant j’aimerais savoir s’il est possible de mettre les données de « Tableau de bord » dans un tableau, j’ai bien essayé mais le copier-coller ne marche pas. Je demande cela car sur le « vrai » fichier les données se trouve dans un tableau avec des formules. Si vous avez l’occasion de regarder mon problème je vous en remercie par avance, je remet le fichier.
 

Pièces jointes

  • Exemple 1-V2.xlsm
    54.5 KB · Affichages: 0

Bizarre

XLDnaute Nouveau
Bonjour fanch55,
Le code fonctionne parfaitement mais j'aurais une dernière demande serait-il possible de n'effacer que les colonnes de A à G car les dernières colonnes contiennent des formules. Là je ne sais même pas si cela est possible
 

Pièces jointes

  • Exemple 1-V3.xlsm
    58.3 KB · Affichages: 7

fanch55

XLDnaute Barbatruc
Bonjour,

Un grand merci à vous deux pour la rapidité de vos réponses, j’ais opter pour la solution de Backhandshot car elle a devancé l’autre question que je voulais poser et qui concerné la suppression d’une ligne sur les deux feuilles. Cependant j’aimerais savoir s’il est possible de mettre les données de « Tableau de bord » dans un tableau, j’ai bien essayé mais le copier-coller ne marche pas. Je demande cela car sur le « vrai » fichier les données se trouve dans un tableau avec des formules. Si vous avez l’occasion de regarder mon problème je vous en remercie par avance, je remet le fichier.
La solution de @Backhandshot est destructive, le tableau Tableau_de_bord n'existe plus
 

fanch55

XLDnaute Barbatruc
Bonjour fanch55,
Le code fonctionne parfaitement mais j'aurais une dernière demande serait-il possible de n'effacer que les colonnes de A à G car les dernières colonnes contiennent des formules. Là je ne sais même pas si cela est possible
J'ai exécuté votre classeur .
Le tableau Tableau_de_Bord est une table structurée. les colonnes "supplémentaires" conservent leur formule lors du coller .
Si on ne les voit pas en tant que telles (formules) c'est parce que la feuille est protégée ...
 

Discussions similaires

Réponses
3
Affichages
565
Réponses
7
Affichages
419

Statistiques des forums

Discussions
312 047
Messages
2 084 857
Membres
102 688
dernier inscrit
Biquet78