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 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 SubSi 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 SubGrand Merciii, tu as raison, ça a marché
