Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Microsoft 365 Copier coller collonne d'un tableau selon une liste

VazyFrancko

XLDnaute Nouveau
Bonjour,
Dans le code ci-dessous, on copie-colle les colonnes d'un tableau qui ont pour nom "Entete 2", "Entete 3" et "Entete 5".
Je cherche à l'adapter pour copier-coller les colonnes qui ont pour nom les cellules de B2 à J2 (voire plus). Il faudrait que ce soit dynamique.
Pourriez-vous m'aider svp?
Merci bcp

VB:
Sub CopieCol()

Dim i&, j&, a(), Ws As Worksheet

a = Array("Entete 2", "Entete 3", "Entete 5")

Set Ws = Sheets("Obligations")

j = 1

ReDim td(UBound(a))

For i = 0 To UBound(a)

  If Not IsError(Application.Match(a(i), Rows(1), 0)) Then

    Columns(Application.Match(a(i), Rows(1), 0)).Copy Ws.Columns(j)

    j = j + 1

  End If

Next

Sheets(Ws.Name).Move After:=Sheets(Sheets.Count)

End Sub
 

Pièces jointes

  • Copie colonnes.xlsm
    10.1 KB · Affichages: 6
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonjour le fil

Je cherche à l'adapter pour copier-coller les colonnes qui ont pour nom les cellules de B2 à J2 (voire plus). Il faudrait que ce soit dynamique.
NB: je n'ai pas pris le nom, mais le numéro de colonne que l'on souhaite recopier.
Un truc dans ce genre là
(à tester en étant sur la feuille 1 quand on lance les deux macros de test)
VB:
Sub test_A()
copiecoll Sheets("Obligations"), 1, 3, 5, 7
End Sub
Sub test_B()
copiecoll Sheets("Obligations"), 2, 4, 6
End Sub
Private Sub copiecoll(ws As Worksheet, ParamArray col())
Dim i&, j&
ws.Cells.ClearContents
j = 1
For i = 0 To UBound(col)
Columns(col(i)).Copy ws.Columns(j)
j = j + 1
Next
End Sub
 

Discussions similaires

Réponses
22
Affichages
787
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…