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 !
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
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.
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.
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
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 ?
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...
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
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.
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.
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.