Macro recopie spéciale avec décallage

ARNAUD.M18

XLDnaute Nouveau
Bonjour à tous,

Voilà je bloque sur un code qui doit me permettre de recopier une liste verticale de données dans un autre classeur sur une plage que je définis en horizontale mais en décalant ma sélection toutes les 3 cellules quant je fais ma recopie. Dans mon classeur joint mettre les DES 1/2/3...etc dans les bonnes colonnes designations donc décallage de 3 colonnes après ma recopie en ligne.

J'en suis au stade de la recopie en décallé mais ma boucle ne fonctionne pas car pour les 2 dernières cellules de recopie cela me renvoi une erreur..

Quelqu'un pourrait-il m'aiguiller? Grand merci d'avance.

ci-joint ma macro en chantier :

Sub essai()

x = selection.Select
Do
For Each cel In Range(x)
cel.Offset(0, 1).Select
Range(ActiveCell, ActiveCell.End(xlToRight)).Select
selection.Cut
selection.Offset(0, 3).Select
ActiveSheet.Paste
If x + Range(0, 1) = "" Then Exit Do
Loop While x + Range(0, 1) <> ""
Next cel

End Sub
 

Pièces jointes

  • ESSAI MACRO PDC.xls
    42 KB · Affichages: 63

JNP

XLDnaute Barbatruc
Re : Macro recopie spéciale avec décallage

Bonjour Arnaud.M18 :),
Pas sûr d'avoir vraiment compris :rolleyes:...
A tester :
Code:
Sub essai()
Dim I As Integer, Plage As Range
Set Plage = Selection
For I = Plage.Columns.Count To 2 Step -1
Plage.Cells(1, I).Cut (Plage.Cells(1, I * 3 - 2))
Next I
End Sub
Bonne soirée :cool:
 

ARNAUD.M18

XLDnaute Nouveau
Re : Macro recopie spéciale avec décallage

Merci beaucoup JNP!

Pour moi c'est un très bon début! en revanche dans ta propo après le décallage, ma mise en forme est modifiée et je souhaiterais la conserver.

Reste ensuite à compléter mon code pour intégrer mon copier liste (en colonne) dans mon tableau "a" puis ma recopie transposée en ligne dans mon tableau "b" et appliquer le code que tu m'a simpathiquement proposé.
 

JNP

XLDnaute Barbatruc
Re : Macro recopie spéciale avec décallage

Re :),
en revanche dans ta propo après le décallage, ma mise en forme est modifiée et je souhaiterais la conserver.
C'est toi qui est parti sur un Cut :rolleyes:...
Soit tu peux faire une copie et vider la cellule ensuite
Code:
Plage.Cells(1, I).Copy (Plage.Cells(1, I * 3 - 2))
Plage.Cells(1, I).ClearContents
soit tu peux ne prendre que la valeur
Code:
Plage.Cells(1, I * 3 - 2) = Plage.Cells(1, I)
Bon courage :cool:
 

Discussions similaires

Réponses
7
Affichages
579

Statistiques des forums

Discussions
312 489
Messages
2 088 853
Membres
103 975
dernier inscrit
denry