(VBA) Copier plage de colonnes paires vers autres plages sur la même feuille

Iwana

XLDnaute Nouveau
Bonjour cher forum,

Pensant que c'était probablement un problème déjà posé, j'ai vraiment, vraiment fouillé sur le net mais je n'ai trouvé aucune réponse satisfaisante (comprenez "qui fonctionne").
Sur une feuille j'ai deux tableaux. Ma petite macro est censée sélectionner et copier une plage de cellules des colonnes PAIRES du tableau 1 à partir de la colonne F, puis coller les plages en questions consécutivement sur le tableau 2.
J'ai joint à ce post un fichier qui montre précisément ce que j'attends.
J'ai également créé un module test dans lequel figure le (mini)code de ma (mini)macro. J'y ai mis en commentaire les 3 essais que j'ai faits.

Merci d'avance pour votre aide, je tourne en rond !

Iwana
 

Pièces jointes

  • copcol_colonnes_paires.xlsm
    47.7 KB · Affichages: 110
  • copcol_colonnes_paires.xlsm
    47.7 KB · Affichages: 140
  • copcol_colonnes_paires.xlsm
    47.7 KB · Affichages: 125
G

Guest

Guest
Re : (VBA) Copier plage de colonnes paires vers autres plages sur la même feuille

Bonjour,

Code:
Sub deplacer_col()
Dim Col As Long
Dim plage As Range
    With Sheets("SumUp")
        ' 1 on commence par 'cerner' tout le  tableau
        Set plage = .Range("D5").CurrentRegion
        ' ne conserver que les colonnes de données
        Set plage = plage.Offset(, 1).Resize(, plage.Rows.Count - 1)
        
        For Col = 2 To plage.Columns.Count Step 2
            
            plage.Columns(Col).Copy Destination:=.Cells(33, .Columns.Count).End(xlToLeft).Offset(, 1)
       
        Next
    End With
End Sub

A+
 

Iwana

XLDnaute Nouveau
Re : (VBA) Copier plage de colonnes paires vers autres plages sur la même feuille

Merci beaucoup Hasco !
Les colonnes paires uniquement sont bien copiées et collées consécutivement dans le Tableau2, en revanche, ça me les déplace de 14 colonnes!
C 'est comme si ça les collait à la ligne 33 (comme je le souhaitais) mais après[/] mon tableau 1.
Ci-joint un screenshot.
 

Pièces jointes

  • screenshot copcol colonnes paires.jpg
    screenshot copcol colonnes paires.jpg
    76.9 KB · Affichages: 244
G

Guest

Guest
Re : (VBA) Copier plage de colonnes paires vers autres plages sur la même feuille

re,

Au cours de tes essais tes cellules D33 à Qxx n'ont pas étées nettoyées correctement.

Sélectionne la colonne à partir de D33 puis CTRL+flèche droite plusieurs fois jusqu'à aller à la dernière colonne de la feuille.
click-droit supprimer/décaler vers la gauche.

Comme la macro utilise .end(xlToLeft) à partir de la dernière colonne de la feuille pour trouver la prochaine colonne vide après D , si les cellules n'ont pas étées correctement effacer, cela fait se genre de chose.

A+

A+
 

Iwana

XLDnaute Nouveau
Re : (VBA) Copier plage de colonnes paires vers autres plages sur la même feuille

Code:
Sub deplacer_col()
Dim Col As Long
Dim plage As Range
    With Sheets("SumUp")
        ' 1 on commence par 'cerner' tout le  tableau
        Set plage = .Range("E5").CurrentRegion  [b]' ici j'ai mis E5 à la place de D5 et ça fonctionne ![/b]
        ' ne conserver que les colonnes de données
        Set plage = plage.Offset(, 1).Resize(, plage.Rows.Count - 1)
        
        For Col = 2 To plage.Columns.Count Step 2
            
            plage.Columns(Col).Copy Destination:=.Cells(33, Columns.Count).End(xlToLeft).Offset(, 1)
       
        Next
    End With
End Sub
 

Iwana

XLDnaute Nouveau
Re : (VBA) Copier plage de colonnes paires vers autres plages sur la même feuille

Petit bug, le message précédent n'était pas censé être envoyé avec du code mais juste avec un "Merci beaucoup".

Par contre, je bute sur un code similaire, pourrais-tu m'aider s'il te plaît ?

Dans le fichier XL que tu as utilisé pour m'aider, il y un tableau 1.
La macro ci-dessous permet de récupérer une plage sur plusieurs feuilles (TOUTES sauf les feuilles nommées accueil, AI, AP et SU)
et de coller les plages en questions consécutivement dans le tableau 1.
Les plages en question sont sur deux colonnes (càd que dans chaque feuille, la plage qui m'intéresse s'étend de F2 à G27).

Sauf que ça me colle seulement la moitié des plages (seulement leur première colonne) et en plus elles sont décalées : au lieu d'être collée sur à partir de la cellule E5,
elles sont collées à partir de la colonne K ou L.
Code:
Sub Copie_duration()
Dim F As Worksheet
Dim C As Integer
    With Sheets("SumUp")
        C = 4
        .Range("E5:IV27").ClearContents
        For Each F In Worksheets
            If Not F.Name = "Accueil" _
                Or Not F.Name = "AI" _
                Or Not F.Name = "AP" _
                Or Not F.Name = "SU" Then
            
                C = C + 1
                Sheets("SumUp").Columns(C).Rows("5:27").Value = F.Range("F2:G27").Value
            End If
        Next F
    End With
End Sub
J'ai une erreur sur la ligne sheets("sumup").columns[....].
Saurais-tu me dire ce qui cloche ?
 
G

Guest

Guest
Re : (VBA) Copier plage de colonnes paires vers autres plages sur la même feuille

Re,

A vue de nez, puisqu'il n'y a pas de fichier.

Sheets("SumUp").Columns(C).Rows("5:27").Value = F.Range("F2:G27").Value

Déjà, pas besoin de rappeler Sheets("SumUp") puisque cette ligne est déjà dans une structure Whit Sheets("SumUp") donc

.Columns(C).Rows("5:27").Value = F.Range("F2:G27").Value

serait suffisant.

Ensuite

Columns(C).Rows("5:27") = 1 colonne et 23 lignes

F.Range("F2:G27").Value = 2 colonnes et 26 lignes

Cela ne peut fonctionner, il faut que la destination ait les même nombres des lignes/colonnes.

A+
 

Iwana

XLDnaute Nouveau
Re : (VBA) Copier plage de colonnes paires vers autres plages sur la même feuille

Re,

Code:
Columns(C).Rows("5:27") = 1 colonne et 23 lignes

F.Range("F2:G27").Value = 2 colonnes et 26 lignes

Cela ne peut fonctionner, il faut que la destination ait les même nombres des lignes/colonnes.

J'ai joint un fichier à mon post.
Tu verras que dans les feuilles 1,2,3,4,5(etc. car leur nombre est variable) il y a deux colonnes. Je souhaite que toutes ces colonnes soient collées dans le tableau1 à la suite (dans l'ordre des feuilles), c'est pour ça que j'ai mis Rows("5:27").
L'emplacement de la plage copiée est toujours le même pour toutes les feuilles (F2:G27) mais l'emplacement des plages collées varie puisqu'elles doivent se coller à la suite les unes des autres. J'ai donc pensé qu'en mettant juste Rows ça passerait...
 

Pièces jointes

  • copcol_colonnes_paires.xlsm
    53.3 KB · Affichages: 97
  • copcol_colonnes_paires.xlsm
    53.3 KB · Affichages: 107
  • copcol_colonnes_paires.xlsm
    53.3 KB · Affichages: 111
G

Guest

Guest
Re : (VBA) Copier plage de colonnes paires vers autres plages sur la même feuille

Bonjour,

Oui mais cela ne me dit pas à la suite de quoi tu veux coller ces données dans SumUP? A la suite du Tableau 2?

Tu ne veux que les valeurs ou une copie intégrale des cellules?

A+
 
G

Guest

Guest
Re : (VBA) Copier plage de colonnes paires vers autres plages sur la même feuille

Re,

bon pour un collage des valeurs à la suite du tableau 2.

Code:
Sub ttttt()
Dim sh As Worksheet
For Each sh In ThisWorkbook.Worksheets
    If IsNumeric(sh.Name) Then
        With Sheets("SumUp")
            .Cells(33, Columns.Count).End(xlToLeft).Offset(, 1).Resize(22, 2).Value = sh.Range("F2:G23").Value
        End With
    End If
Next sh
End Sub

A+
 

Iwana

XLDnaute Nouveau
Re : (VBA) Copier plage de colonnes paires vers autres plages sur la même feuille

Re,

La macro ci-dessous permet de récupérer une plage sur plusieurs feuilles (TOUTES sauf les feuilles nommées accueil, AI, AP et SU) et de coller les plages en questions consécutivement dans le tableau 1.
Il faut que ces données soient collées dans le tableau 1.
Dans le fichier précédemment posté, au tout départ le tableau 1 est vide, il y a juste les intitulés de ligne sur la gauche (ici j'ai juste mis "test", dans la colonne D). Ensuite, à partir de la cellule E5, les plages récupérées dans les feuilles 1,2,3... doivent être collées les unes à la suite des autres.
 

Pièces jointes

  • screenshot copcoll plage.jpg
    screenshot copcoll plage.jpg
    57.8 KB · Affichages: 195
G

Guest

Guest
Re : (VBA) Copier plage de colonnes paires vers autres plages sur la même feuille

Re,

Dans le code que je viens de te donner (on a du se croiser), tu n'as qu'à remplacer 33 par 5 pour que le code colle les valeurs à la suite du tableau 1.

A+
 

Iwana

XLDnaute Nouveau
Re : (VBA) Copier plage de colonnes paires vers autres plages sur la même feuille

Re,

Effectivement je tapais mon message quand tu as posté le tien.
Et j'ai justement fait ce que tu viens de dire, j'ai remplacé le 33 par 5.
Ca fonctionne à (presque) merveille : il a zappé la feuille "2". Saurais-tu me dire pourquoi ?
Pour les feuilles 1, 3 et 4 c'est impeccable pourtant. :confused:
 

Discussions similaires

Statistiques des forums

Discussions
311 740
Messages
2 082 041
Membres
101 879
dernier inscrit
Arthur M