Copier des valeurs dans la dernière cellule vide

Bonjour,

Je souhaite coller horizontalement des valeurs d'un fichier excel vers un autre. J'ai essayé de produire le code suivant :

Workbooks("mon fichier.xlsm").Activate
Sheets("Onglet 6").Select


lastcell = Cells(1, ActiveSheet.Columns.Count).End(xlToLeft).Column + 1

Cells(lastrow, 1).Select

ActiveSheet.Paste

Cells(k, lastcell).Select

Windows("R" & i & ".xlsx").Activate
Sheets("6. Avantages").Select
Range("G10").Select
Selection.Copy
Windows("mon fichier.xlsm").Activate
Cells(7, lastcell).Select
ActiveSheet.Paste


Windows("R" & i & ".xlsx").Activate
Sheets("6. Avantages").Select
Range("G18").Select
Selection.Copy
Windows("mon fichier.xlsm").Activate
Cells(7, lastcell).Select
ActiveSheet.Paste

Je veux qu'il copie à chaque fois qu'il trouve une cellule vide.

Le problème c'est quelque chose ne fonctionne pas correctement, il écrase ce qui a été copié initialement et il recopie dans la même cellule.

Est ce que quelqu'un peut m'aider svp. C'est Urgent !! je n'arrive pas à avancer, c'est bloquant.

Merciii

Bonjour ,

En plus du rappel que je vous ai fait ici

https://forum.excel-pratique.com/excel/comment-decouper-un-fichier-excel-en-plusieurs-fichiers-17126...

Merci d'éditer votre post et mettre le code entre balises SVP avec le bouton

image

A+

Bonjour le fil, bonjour le forum,

il y a dans ton code une variable i dont on ne connait rien ! Ni la déclaration (de quel type), ni la valeur ?!...

Sinon essaie comme ça (code à placer dans le fichier qui reçoit les données) :

Sub Macro1()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variabler OS (Onglet Source)
Dim CD As Workbook 'déclare la variabler CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variabler OS (Onglet Destination)
Dim DC As Integer 'déclare la variabler DC (Dernière Colonne)

Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets("Onglet 6") 'définit l'ongket destination CD
Set CS = Workbooks("R" & i & ".xlsx") 'définit le classeur source CS
Set OS = CS.Worksheets("6. Avantages") 'définit l'onglet source OS

DC = OD.Cells(1, Application.Columns.Count).End(xlToLeft).Column + 1 'définit la dernière colonne éditée de la ligne 1 de l'onglt destination
OS.Range("G10").Copy OD.Cells(7, DC) 'copie la cellule G10 de l'onglet source et le colle dans l'onglet destination
DC = OD.Cells(1, Application.Columns.Count).End(xlToLeft).Column + 1 'définit la dernière colonne éditée de la ligne 1 de l'onglt destination
OS.Range("G18").Copy OD.Cells(7, DC) 'copie la cellule G18 de l'onglet source et le colle dans l'onglet destination
End Sub

Si tu ne redéfinis pas la dernière colonne DC a chaque fois, c'est normal que ça écrase les anciennes valeurs et copie par dessus...

Bonjour,

Un grand merci pour ta réponse.

Malheureusement, le problème n'a pas été résolu, l'écriture se fait sur une seule cellule, comme si il tient pas compte de cette consigne : <DC = OD.Cells(1, Application.Columns.Count).End(xlToLeft).Column + 1>

Merci encore une fois pour ton aide

Re,

Heu oui je comprends, on prend la ligne 1 pour trouver la dernière colonne éditée mais on copie dans la ligne 7. C'est normal que ça ne fonctionne pas correctement.

Le code modifié :

Sub Macro1()
Dim CS As Workbook 'déclare la variable CS (Classeur Source)
Dim OS As Worksheet 'déclare la variabler OS (Onglet Source)
Dim CD As Workbook 'déclare la variabler CD (Classeur Destination)
Dim OD As Worksheet 'déclare la variabler OS (Onglet Destination)
Dim DC As Integer 'déclare la variabler DC (Dernière Colonne)

Set CD = ThisWorkbook 'définit le classeur destination CD
Set OD = CD.Worksheets("Onglet 6") 'définit l'ongket destination CD
Set CS = Workbooks("R" & i & ".xlsx") 'définit le classeur source CS
Set OS = CS.Worksheets("6. Avantages") 'définit l'onglet source OS

DC = OD.Cells(7, Application.Columns.Count).End(xlToLeft).Column + 1 'définit la dernière colonne éditée de la ligne 7 de l'onglet destination
OS.Range("G10").Copy OD.Cells(7, DC) 'copie la cellule G10 de l'onglet source et le colle dans l'onglet destination
DC = OD.Cells(7, Application.Columns.Count).End(xlToLeft).Column + 1 'définit la dernière colonne éditée de la ligne 7 de l'onglet destination
OS.Range("G18").Copy OD.Cells(7, DC) 'copie la cellule G18 de l'onglet source et le colle dans l'onglet destination
End Sub

Grand Merciii, tu as raison, ça a marché

Rechercher des sujets similaires à "copier valeurs derniere vide"