Passer des lignes d'un classeur a un autre

Fermé
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017 - 14 avril 2016 à 09:02
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017 - 14 avril 2016 à 16:28
Bonjour,
Je souhaiterais transferer des ligne d'un fichiers excel ( a partir de la deuxieme lignes et ce jusqu'a la derniere ligne non vide) vers un autres classeur via une macro vba. Quelqu'un aurait une solution ?
Merci d'avance


A voir également:

2 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
14 avril 2016 à 09:56
Bonjour Van_van, bonjour le forum,

Tu donnes si peu d'explications que le code que je te propose doit être complètement adapté à ton cas. Pour qu'il fonctionne il faut le placer dans le classeur source (celui qui contient les lignes). Ensuite, il faut que le classeur destination soit ouvert. Et pour terminer il te faut adapter toutes les variables : OS, CD, OD et éventuellement PL si ton tableau ne commence pas dans la cellule A1...

le Code :

Sub Macro1()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim CD As Workbook 'déclare la variable CS (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OS (Onglet Destination)
Dim PL As Range 'déclare la variable PL (PLage)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set CS = ThisWorkbook 'définit le classeur source CS
Set OS = CD.Sheets("Feuil1") 'définit l'onglet source OS
Set CD = Workbooks("Classeur Destination.xlsx") 'définit le classeur destination CD
Set OD = CD.Sheets("Feuil1") 'définit l'onglet destination OD
Set PL = OS.Range("A1").CurrentRegion 'définit la plage PL
Set PL = PL.Offset(1, 0).Resize(PL.Rows.Count - 1, PL.Columns.Count) 'redéfinit la plage PL (sans la première ligne)
Set DEST = OD.Cells(Application.Rows.Count).End(xlUp).Offset(1, 0) 'définit la cellule de destination
PL.Copy DEST 'copie la palge PL dans DEST
End Sub

Un conseil, la prochaine fois quand tu demandes de l'aide essaie d'être le plus précis possible si tu veux mettre le maximum de chance d'obtenir une réponse rapidement...
0
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
14 avril 2016 à 11:48
Merci je vais essayé si tu veux plus de précisions je peux t'en donner. Si tu veux tous les jours nous devons transferer les lignes vers le deuxieme classeur, du coup il faut que les lignes dans le deuxieme classeur viennent a la suite des autres. VOila merci d'avance
0
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
14 avril 2016 à 11:56
Alors j'ai essayé ce ne fonctionne pas.

"Set OD = CD.Sheets("Feuil1") 'définit l'onglet destination OD" ici je n'ai pas mis Feuil1 mais versements déplacés car les lignes a transferer sont dans cet onglet la
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
14 avril 2016 à 14:00
Re,

Plus de précision ne voulais pas dire la marque du café à la machine à café ou l'âge de la secrétaire mais :
- Chemin d'accès du Classeur Destination
- Nom du Classeur Destination
- Nom de l'Onglet Destination
- Nom de l'Onglet Source
- Adresse de la plage
- Adresse de cellule de la première copie
- ect...
Avec en plus ton fichier ZIPPÉ en pièce jointe, tu mettrais toutes les chance d'obtenir rapidement une réponse, de ton coté...
0
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
14 avril 2016 à 14:04
d'accord je comprends bien mais il y'a des données confidentielles
Alors le Classeur qui contient les données a transferer s'apelle CLASSEUR_VERSEMENTS_DEPLACES , et l'onglet est VERSEMENTS_DEPLACES
et le classeur qui va recevoir les données s'appelle CLASSEUR_VERSEMENTS_DEPLACES_MOIS, sur onglet "Feuil1"
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
14 avril 2016 à 14:35
Re,

J'ai rectifié deux erreurs du premier code proposé.
Comme tu manques toujours de précision, pour que le nouveau code fonctionne il faut que :
- Les donnés commencent en A1
- le classeur CLASSEUR_VERSEMENTS_DEPLACES_MOIS ait une extension .xlsx (sinon il faut modifier le code)
- le classeur CLASSEUR_VERSEMENTS_DEPLACES_MOIS.xlsx soit ouvert

Le code :

Sub Macro1()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variable OS (Onglet Source)
Dim CD As Workbook 'déclare la variable CS (Classeur Destination)
Dim OD As Worksheet 'déclare la variable OS (Onglet Destination)
Dim PL As Range 'déclare la variable PL (PLage)
Dim DEST As Range 'déclare la variable DEST (cellule de DESTination)

Set CS = ThisWorkbook 'définit le classeur source CS
Set OS = CS.Sheets("VERSEMENTS_DEPLACES") 'définit l'onglet source OS
Set CD = Workbooks("CLASSEUR_VERSEMENTS_DEPLACES_MOIS.xlsx") 'définit le classeur destination CD
Set OD = CD.Sheets("Feuil1") 'définit l'onglet destination OD
Set PL = OS.Range("A1").CurrentRegion 'définit la plage PL
Set PL = PL.Offset(1, 0).Resize(PL.Rows.Count - 1, PL.Columns.Count) 'redéfinit la plage PL (sans la première ligne)
Set DEST = OD.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination
PL.Copy DEST 'copie la palge PL dans DEST
End Sub


0
van_van Messages postés 60 Date d'inscription mercredi 6 avril 2016 Statut Membre Dernière intervention 9 janvier 2017
14 avril 2016 à 16:28
J E M EXCUSE POUR MON MANQUE DE PRECISION, MAIS CELA N A PAS EMPECHER QUE VOTRE PROGRAMME FONCTIONNE A MERVEILLE. JE VOUS DIT MERCI !!!!!!!
0