Seléctionner et copier des colonnes non adjacentes

Bonjour à tous,

Je souhaite recopier des colonnes de plusieurs feuilles vers une feuille RECAP mais seulement les colonnes A-B-D-J-K-L-M-N

J'ai trouvé ce code sur la toile que j'ai déjà un peu adapté, il fonctionne bien pour les colonnes A et B

Sub transfert()
'Macro pour recopier les colonnes dans la feuille récap
Dim dlgR As Integer, dlgi As Integer
Dim i As Byte
With Sheets("RECAP")
dlgR = .Range("A" & Rows.Count).End(xlUp).Row
.Range("A2:B" & dlgR).ClearContents
End With
For i = 1 To Worksheets.Count
If Sheets(i).Name <> "Publipostage_Dt_Image" And Sheets(i).Name <> "adresse_struct" And Sheets(i).Name <> "RECAP" Then
        dlgR = Sheets("RECAP").Range("A" & Rows.Count).End(xlUp).Row
        With Sheets(i)
            dlgi = .Range("A" & Rows.Count).End(xlUp).Row
            .Range("A2:B" & dlgi).Copy
            Sheets("RECAP").Range("A" & dlgR + 1).PasteSpecial xlPasteValues
        End With
    End If
Next
End Sub

Lorsque je veux rajouter D et J:N, une erreur 1004 apparait : j'ai essayé ("A:B,D,J:N") après .Range

Je ne sais pas comment "transposer" les colonnes non adjacentes dans le code.

Merci de votre aide :D

Bonjour Jannuelle et

Une petite présentation ICI serait la bienvenue

Si vous ne l'avez pas encore fait, je vous invite à lire :
- La charte du forum
- Quelques fonctionnalités du forum à connaître
qui vous aideront dans vos demandes et réponses sur ce forum.

Regardez aussi les petites icônes mises à votre disposition dans la barre de menu qui :
- vous permettent de poster un code (</>)
- ou de clôturer un fil lorsque vous avez terminé (V)

Merci pour votre participation

Concernant votre demande, il n'est pas possible de copier/coller en une seule fois des colonnes non adjacentes
Vous ne pouvez pas faire en VBA ce que vous ne pouvez pas faire sur Excel

Avec une petite recherche sur le forum vous devriez trouver votre bonheur

Nota : en programmation objet, il n'est pas nécessaire de sélectionner les colonnes pour les copier

Cordialement

Bonjour Januelle, BrunoM45 , le forum,

Je pensais que la ligne ci dessous ferait l'affaire.....à tester....sans conviction...

Union(.Range("A2:B" & dlgi), .Range("D2:D" & dlgi), .Range("J2:N" & dlgi)).Copy

Mais si tu joignais un fichier (sans données confidentielles), le code pourrait certainement être optimisé.

11classeur1.xlsm (25.46 Ko)

Cordialement,

Merci Bruno,

Nota : en programmation objet, il n'est pas nécessaire de sélectionner les colonnes pour les copier

Ok je note mais je n'ai pas compris

Vous ne pouvez pas faire en VBA ce que vous ne pouvez pas faire sur Excel

Je ne savais pas, je pensais que l'on pouvait aller + loin.

Avec une petite recherche sur le forum vous devriez trouver votre bonheur

ça fait plusieurs heures que je cherche mais tous mes tests ont échoué, du coup je pense faire 3 macros vu que l'on ne peut de toute façon pas copier des cellules non adjacente.

Bon week-end !

Re,

On ne va pas vous laisser comme ça voici un code qui devrait satisfaire à votre demande

Sub Transfert()
  'Macro pour recopier les colonnes dans la feuille récap
  Dim ShtS As Worksheet
  Dim dlgR As Integer, dlgi As Integer
  Dim Col As Integer, i As Integer
  Dim ColACopier As String, TabCol() As String
  ColACopier = "A-B-D-J-K-L-M-N"
  TabCol = Split(ColACopier, "-")

  For Each ShtS In ThisWorkbook.Sheets
    If ShtS.Name <> "Publipostage_Dt_Image" _
      And ShtS.Name <> "adresse_struct" And ShtS.Name <> "RECAP" Then
      ' Avec la feuille
      For Col = 0 To UBound(TabCol)
        dlgR = Sheets("RECAP").Range(TabCol(Col) & Rows.Count).End(xlUp).Row
        dlgi = ShtS.Range(TabCol(Col) & Rows.Count).End(xlUp).Row
        ShtS.Range(TabCol(Col) & "2:" & TabCol(Col) & dlgi).Copy
        Sheets("RECAP").Range(TabCol(Col) & dlgR + 1).PasteSpecial xlPasteValues
      Next Col
    End If
  Next ShtS
End Sub

A tester

A+

Bonjour à vous,

@ BrunoM45 ton code fonctionne. Seulement je souhaite recopier à la suite, recopier ABDJKLMN vers ABCDEFGH de la feuille RECAP.

Je ne l'ai pas précisé dans ma demande

@ xorsankukai, voici mon fichier vierge :

Re,

Voici le code à utiliser,
par contre avec le fichier joint, je ne vois pas l'intérêt de parcourir toutes les feuilles avec une boucle

Sub Transfert()
  'Macro pour recopier les colonnes dans la feuille récap
  Dim ShtS As Worksheet
  Dim dlgR As Integer, dlgi As Integer
  Dim Col As Integer, i As Integer
  Dim ColACopier As String, TabCol0() As String
  ColACopier = "A-B-D-J-K-L-M-N"
  TabCol0 = Split(ColACopier, "-")
  For Each ShtS In ThisWorkbook.Sheets
    If ShtS.Name <> "Publipostage_Dt_Image" _
      And ShtS.Name <> "adresse_struct" And ShtS.Name <> "RECAP" Then
      ' Avec la feuille
      For Col = 0 To UBound(TabCol0)
        dlgi = ShtS.Range(TabCol0(Col) & Rows.Count).End(xlUp).Row
        ShtS.Range(TabCol0(Col) & "2:" & TabCol0(Col) & dlgi).Copy
        ' Coller les valeurs à partir de la 1ère colonne
        dlgR = Sheets("RECAP").Cells(Rows.Count, 1 + Col).End(xlUp).Row
        Sheets("RECAP").Cells(dlgR + 1, 1 + Col).PasteSpecial xlPasteValues
      Next Col
    End If
  Next ShtS
End Sub

A+

Salut,

Re,

Voici le code à utiliser,

par contre avec le fichier joint, je ne vois pas l'intérêt de parcourir toutes les feuilles avec une boucle

Merci pour le code. Il fonctionne.

Je n'ai pas compris pour la boucle...car je suis vraiment inculte J'arrive à adapter parfois mais je ne comprends pas ce que je fais

Merci beaucoup pour ton aide

A bientôt

Edit : mauvaise idée

que 2 feuilles

je dois copier les données de 10 feuilles et exclure 3 feuilles (RECAP, Adresse_struct et Publipostage dt image )

Ton code d'avant fonctionne, je vais garder celui là

A +

Rechercher des sujets similaires à "selectionner copier colonnes adjacentes"