Copier des données dans un ordre précis sur des classeurs différents

8classeura.xlsm (25.70 Ko)

Bonjour,

Je voudrais savoir s'il était possible de copier une plage de données dans un ordre précis.

J'ai un classeur A qui quand on active une macro qui créé un classeur B en créant des colonnes dans ce classeur. Je voudrais que l'utilisateur sélectionne des lignes du classeur A et que la macro copie automatiquement les données du classeur A dans le classeur B. Hors je n'arrive pas à copier une plage de valeurs avec des valeurs copiées dans un ordre précis. La fonction Union range permet de copier des élément mais dans l'ordre des colonnes.

colonnes du classeur A

LieuDate Prix (euros)TailleVolumeInfoA faire ?

Le classeur B crée possède ces colonnes

LieuPrixA faire ?TailleDate

Hors lorsque je copie avec union range des valeurs du classeur A dans le classeur B cela me donne le résultat ci-dessous

LieuPrixA faire ?TailleDate
Paris08/01/2004 35,00 € 500oui
Marseille06/01/2005 64,00 € 300non
Brest08/06/2003 50,00 € oui

Comment pourrais je faire ?

Mon code est fonctionnel et est en pièce jointe. il me manque juste à modifier la partie du code permettant de copier les valeurs dans un ordre précis pour les mettre dans les colonnes du deuxième classeur.

J'ai cherché longtemps mais je n'ai rien trouvé, et j'apprécierais vraiment un peu d'aide

Merci d'avance

Bonjour

Un essai à tester. Te convient-il ?

25classeura-v1.xlsm (27.08 Ko)

Bye !

Tout d'abord merci pour ta réponse.

Le problème est que la taille du tableau du deuxième tableau créer dans le deuxième classeur n'est pas fixe, c'est l'utilisateur qui choisit combien

de ligne il veut avec la variable lg. Bout de code présent dans le excel ci-dessous.

For i = 1 To ChoixDuNombreDeProjetDansLeclasseurB
Windows("ClasseurA").Activate ' on se met sur le classeur A
Dim plg As Range
Dim lg As Integer 'créer un objet lg de type integer ( nombre)
'on demande a l'utilisateur de chosir une case
Set plg = Application.InputBox _
("Sélectionner un projet en cliquant sur la ligne du projet, vous pouvez cliquer n'importe où sur la ligne du projet choisi", , , , , , , 8)
' on selectionne la case choisie
plg.Select
'on donne a la varibale lg le numero de la ligne de la case choisie par ex si plg vaut A3 lg vaudra 3
lg = ActiveCell.Row
'on choisit une plage de donnée ou une plage de cellule que l'on veut sur la ligne de la case choisie
Application.CutCopyMode = False

Set Plage = Union(Range("A" & lg), Range("C" & lg), Range("G" & lg), Range("D" & lg), Range("B" & lg))

Plage.Copy
classeur.Activate

' on colle ensuite les donne copié
Range("A" & i + 1).PasteSpecial Paste:=xlPasteAllUsingSourceTheme, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False

Next i

Vois tu ce que je veux dire ? Est il possible d'adapter facilement ton code à cette contrainte ?

Sinon sans passer par les tableaux existe t'il un moyen de copier des plages de valeurs dans un ordre voulu pour le copier dans un autre classeur ?

Car le premier classeur sera souvent modifier souvent avec des colonnes qui s'ajouteront ou seront supprimées etc

Merci d'avance

Rechercher des sujets similaires à "copier donnees ordre precis classeurs differents"