Copier coller avec incrémentation

egman

XLDnaute Occasionnel
Bonjour à tout le forum,

Je reviens vers vous car j'ai un tableau avec col. A, B, C, D, E et mon souci est pour déplacer les cellules des colonnes C et D en colonne A avec incrémentation de lignes.
Je pourrai le faire à la main mais le tableau fait 600 lignes et est amené à s’agrandir, donc si par le biais d'une boucle on pouvait le faire ce serait super)

Je vous joint un petit fichier qui sera sans doute plus explicite.

D'avance MERCI pour vos réponses et votre aide.
 

Pièces jointes

  • Essai copier_coller.xlsx
    10.5 KB · Affichages: 18

vgendron

XLDnaute Barbatruc
Re : Copier coller avec incrémentation

Hello

Avec ce code dans un module VBA

Code:
Sub sépare()

nb = Range("TabData").Rows.Count
For i = 1 To nb
    Sheets("Feuil2").Range("A65536").End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 1)
    Sheets("Feuil2").Range("B65536").End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 2)
    Sheets("Feuil2").Range("E65536").End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 5)
    
    Sheets("Feuil2").Range("A65536").End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 3)
    Sheets("Feuil2").Range("B65536").End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 2)
    Sheets("Feuil2").Range("E65536").End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 5)
    
    Sheets("Feuil2").Range("A65536").End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 4)
    Sheets("Feuil2").Range("B65536").End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 2)
    Sheets("Feuil2").Range("E65536").End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 5)
    
    
Next i

End Sub


et nommer une zone TabData dans le gestionnaire de nom
=DECALER(Feuil1!$A$2;;;NBVAL(Feuil1!$A:$A)-1;5)
 

egman

XLDnaute Occasionnel
Re : Copier coller avec incrémentation

Re bonjour,

En fait cela fonctionne très bien sur le classeur que j'avais fourni en .xlsx par contre lorsque je fait la meme manip sur mon classeur où j'ai mes 600 lignes j'ai un message d'erreur 1004 (ce classeur est en .xlsm)

La méthode Range de l'objet Worksheet a échoué

Pourtant j'ai bien la meme TabData dans mon gestionnaire de noms.

Une solution peut être ?

D'avance merci
 

vgendron

XLDnaute Barbatruc
Re : Copier coller avec incrémentation

euh.. comme ca. je ne vois pas trop..
1) as tu bien nommé le TabData en respectant les majuscules et minuscules?
il faut que le nom soit strictement identique entre le gestionnaire de nom et la ligne suivante de la macro
nb=Range("TabData").rows.count

2) place cette ligne en début de macro
Range("TabData").select
puis place celle ci en commentaire (avec un ' en début de ligne)
'nb=Range("TabData").rows.count


est ce que ca plante toujours? si non: est ce que la macro sélectionne bien QUE les lignes avec des données dedans

3) lors de la définition de la zone dans le gestionnaire de nom
la formule
Code:
=DECALER(Feuil1!$A$2;;;NBVAL(Feuil1!$A:$A)-1;5)
utilise nbval() -1
ca compte le nombre de valeur dans la colonne A MOINS 1 pour enlever la première ligne de la feuille qui contient "tableau1"
donc. si tu as rajouté ou enlevé d'autres lignes de "titres", il faut en tenir compte dans le calcul

sinon..je ne vois rien d'autre pour le moment
 
Dernière édition:

vgendron

XLDnaute Barbatruc
Re : Copier coller avec incrémentation

et sinon, dans le doute essaie ce code

Code:
Sub sépare()

nb = Range("TabData").Rows.Count
maxi = Range("A:A").Rows.Count
For i = 1 To nb
    Sheets("Feuil2").Range("A" & maxi).End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 1)
    Sheets("Feuil2").Range("B" & maxi).End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 2)
    Sheets("Feuil2").Range("C" & maxi).End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 5)
    
    Sheets("Feuil2").Range("A" & maxi).End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 3)
    Sheets("Feuil2").Range("B" & maxi).End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 2)
    Sheets("Feuil2").Range("C" & maxi).End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 5)
    
    Sheets("Feuil2").Range("A" & maxi).End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 4)
    Sheets("Feuil2").Range("B" & maxi).End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 2)
    Sheets("Feuil2").Range("C" & maxi).End(xlUp).Offset(1, 0) = Range("TabData").Item(i, 5)
Next i

End Sub


Mais je n'y crois pas trop. vu que 600 *3 =1800, on est encore loin des 65536
 

egman

XLDnaute Occasionnel
Re : Copier coller avec incrémentation

Alors j'ai recopié ma feuille de 550 lignes dans 1 classeur vierge où j'ai remis la "TabData" dans le Gestionnaire de noms.
Également remis la Sub dans 1 module et là j'ai un nouveau message d'erreur.
Mais cette fois ci c'est sur le Range de l'objet Global....

Je ne vois plus trop où çà cloche....! ! !
 

Pièces jointes

  • Essai copier_coller-02.xlsm
    127.9 KB · Affichages: 47
Dernière édition:

Discussions similaires

Réponses
3
Affichages
208

Statistiques des forums

Discussions
312 305
Messages
2 087 084
Membres
103 461
dernier inscrit
dams94