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
690

Statistiques des forums

Discussions
311 725
Messages
2 081 949
Membres
101 851
dernier inscrit
vaiata