Macro : copier une ligne d'une feuille vers la dernière ligne vide d'une autre

arshlan

XLDnaute Nouveau
Bonjour,

J'ai un petit soucis avec une macro.
Voila ce que j'ai et ce que je veux faire:
J'ai une feuille avec differentes informations et je voudrais faire ceci:

Feuille 1:
LigneX | blabla1 blabla2 blabla3

Copier la LigneX vers la derniere ligne vide de la feuille 2, précedée de la date du jour.

Ce qui donne feuille 2:
LigneRemplie
LigneRemple
LigneVide

->

LigneRemplie
LigneRemple
LigneXcopiée | DateDuJour blabla1 blabla2 blabla3

J'ai deja un soucis avec une macro pour copier la derniere ligne de la feuille 1 vers la derniere ligne vide de la feuille 2:
Code:
Sheets(1).Rows(Cells(Rows.Count, 1).End(xlUp).Row).Copy Sheets(2).Cells(Rows.Count, 1).End(xlUp)(2)
Cette macro copie bien,mais pas la derniere ligne de la feuille1....elle commence toujours a la ligne 6.

Si quelqu'un aurait une idée pour une macro fonctionnelle avec les "conditions" dont j'ai parle, ce serait genial!
Merci!
 

DoubleZero

XLDnaute Barbatruc
Re : Macro : copier une ligne d'une feuille vers la dernière ligne vide d'une autre

Bonjour à toutes et à tous,

Bienvenue sur XLD, arshlan.

Peut-être ainsi :

Code:
Option Explicit
Sub Dernière_ligne_vers_Feuil2_copier()
Range("a65536").End(3)(1).Select
Range(ActiveCell, ActiveCell.End(xlToRight)).Copy Sheets("Feuil2").Range("a65536").End(3)(2)
Sheets("Feuil2").Range("a65536").End(3)(1).Value = Date & " - " & Sheets("Feuil2").Range("a65536").End(3)(1).Value
End Sub

A bientôt :)
 

arshlan

XLDnaute Nouveau
Re : Macro : copier une ligne d'une feuille vers la dernière ligne vide d'une autre

Bonjour et merci :)

C'est pratiquement ca.
En fait, la macro prend la derniere ligne,mais de la page 2 et la recopie sur la page 2 apparement (enfin je crois).
Autre soucis, mais ca c'est parce que j'ai du mal expliquer: Le rajout de la date est bon, mais est ce que c'est possible de decaller la ligne copiée pour inserer la date dans la premiere colonne?

Merci pour l'aide
 

DoubleZero

XLDnaute Barbatruc
Re : Macro : copier une ligne d'une feuille vers la dernière ligne vide d'une autre

Re-bonjour,

...C'est pratiquement ca...En fait, la macro prend la derniere ligne,mais de la page 2 et la recopie sur la page 2 apparement (enfin je crois)...

Là, je crois ne pas comprendre :confused: !

Pourrait-on disposer d'un fichier exemple, dépourvu de donnée confidentielle, avec le résultat souhaité ?

A bientôt :)
 

arshlan

XLDnaute Nouveau
Re : Macro : copier une ligne d'une feuille vers la dernière ligne vide d'une autre

Re bonjour,

Bon, j'ai refait ma feuille car j'utilisais une feuille de test. La demande d'aide est du coup beaucoup plus précise.
J'ai tout mis dans le fichier xls: Seules les feuilles nommées "1" et "2" sont concernées par la macro.
La feuille "2" est la feuille resultats: elle va contenir le resultat de la macro et j'ai mis une ligne exemple de ce que, dans l'ideal, elle retournerait.

La macro elle meme, est lancée par un bouton (deja "créé") dans la feuille "1"

J'espere etre assez clair, pas evident d'expliquer :)
Merci beaucoup!
 

Pièces jointes

  • aide.xls
    52.5 KB · Affichages: 80
  • aide.xls
    52.5 KB · Affichages: 95
  • aide.xls
    52.5 KB · Affichages: 84

hbenalia

XLDnaute Occasionnel
Re : Macro : copier une ligne d'une feuille vers la dernière ligne vide d'une autre

Bonjour à tous,

Changer la ligne :
Code:
Sheets(1).Rows(Cells(Rows.Count, 1).End(xlUp).Row).Copy Sheets(2).Cells(Rows.Count, 1).End(xlUp)(2)
par :
Code:
With Sheets(1)
    Rows(.Cells(Rows.Count, 1).End(xlUp).Row).Copy Sheets(2).Range("A65536").End(xlUp)(2)
End With

Pour décaler la ligne copiée d'une cellule (colonne A) pour y insérer la date du jour on utilisera la partie de code suivante:
Code:
With Sheets(1)
    Rows(.Cells(Rows.Count, 1).End(xlUp).Row).Copy Sheets(2).Range("A65536").End(xlUp)(2)
    Sheets(2).Range("A65536").End(xlUp).Insert Shift:=xlToRight
    Sheets(2).Cells(Sheets(2).Range("A65536").End(xlUp)(2).Row, 1) = Date
End With
Cordialement
 
Dernière édition:

arshlan

XLDnaute Nouveau
Re : Macro : copier une ligne d'une feuille vers la dernière ligne vide d'une autre

Bonjour,

Je reviens vers vous car je n'arrive toujours pas a faire ce que je veux.
J'ai essayé tous codes que vous m'avez donné sur cette page, mais aucun ne fonctionne.
Soit ce n'est pas la derniere ligne qui est copiée soit il ne se passe rien du tout.

Pourriez vous m'aider etape par etape (j'aimerai comprendre le fonctionnement plutot que recopier directement)?
Je veux simplement copier la derniere ligne non vide de la feuille X vers la 1ere ligne vide de la feuille Y

Merci beaucoup,
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Macro : copier une ligne d'une feuille vers la dernière ligne vide d'une autre

Bonjour le fil, bonjour le forum,

En pièce jointe ton fichier modifié avec le code ci-dessous :
Code:
Private Sub CommandButton1_Click() 'bouton "Copier"
Dim o1 As Object 'déclare la variable o1 (Onglet 1)
Dim o2 As Object 'déclare la variable o2 (Onglet 2)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim t As String 'déclare la variable t (Texte)
Dim p As Long 'déclare la variable p (Prix)

ActiveCell.Select 'enlève le focus au bouton
Set o1 = Sheets("1") 'définit l'onglet 1
Set o2 = Sheets("2") 'définit l'onglet 2
Set dest = o2.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0) 'définit la cellule de destination dest
dl = o1.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne édité de la colonne 1 (=A) de l'onglet 1
Set pl = o1.Range("A2:A" & dl) 'définit la plage pl
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    'définit le texte t
    t = IIf(t = "", cel.Value & " (" & cel.Offset(0, 1).Value & ") - ", t & cel.Value & " (" & cel.Offset(0, 1).Value & ") - ")
    'définit le prix p
    If cel.Offset(0, 6).Value <> "" Then p = cel.Offset(0, 6).Value
Next cel 'prochaine cellule de la boucle
dest.Value = Format(Date, "dd/mm/yyyy") 'place la date en dest
dest.Offset(0, 1).Value = t 'place le texte t en dest décalé d'une colonne à droite
dest.Offset(0, 2).Value = p 'place le prix p en dest décalé de deux colonnes à droite
End Sub
 

Pièces jointes

  • Arshlan_v01.xls
    53.5 KB · Affichages: 85

arshlan

XLDnaute Nouveau
Re : Macro : copier une ligne d'une feuille vers la dernière ligne vide d'une autre

Alors ca!
SUPERBE!
Merci beaucoup vraiment.
En plus il y a tous les details dont j'ai besoin pour comprendre l'execution!
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 520
Messages
2 089 297
Membres
104 092
dernier inscrit
karbone57