Copier coller des lignes d'un taleau vers une autre feuille

Bonjour,

le code suivant répond presque parfaitement à ma demande :

Private Sub CommandButton1_Click()

Dim sh1 As Object, sh2 As Object, rw2 As Long

Set sh1 = Sheets("MARQUE")

Set sh2 = Sheets("Commande")

rw2 = sh2.Cells(Rows.Count, 2).End(xlUp).Row + 1

sh2.Cells(rw2, "B").Value = sh1.Cells(ActiveCell.Row, "H")

sh2.Cells(rw2, "C").Value = sh1.Cells(ActiveCell.Row, "I")

sh2.Cells(rw2, "D").Value = sh1.Cells(ActiveCell.Row, "J")

sh2.Cells(rw2, "E").Value = sh1.Cells(ActiveCell.Row, "K")

sh2.Cells(rw2, "F").Value = sh1.Cells(ActiveCell.Row, "L")

sh2.Cells(rw2, "G").Value = sh1.Cells(ActiveCell.Row, "M")

End Sub

MAIS : le problème est que chaque nouvelle ligne inscrite dans mon tableau sur la feuille " Commande " ne s'inscrit pas sur la première ligne vide du tableau mais sur la dernière ligne vide... ce qui fait que même si je supprime toutes les données de mon tableau, les nouvelles écritures se font sur la dernière ligne vide de mon tableau (en bas).

Je souhaite, dans la mesure du possible, conserver ce code concis et efficace.

Par ailleurs, j'aurai aimé ajouter en cellule A de mon tableau, la date et l'heure du clic... Il me semble que c'est possible !

Qu'en pensez-vous ?

Merci à celui ou celle qui aura le courage et la patience de m'aider !

Bonne journée à tous !

Pour le problème de la date et l'heure, j'ai trouvé (en même temps un enfant de 4 ans aurait trouvé aussi...)

Bonjour,

Tu recherches la dernière cellule non vide sur la colonne B, n'y aurait il pas une formule par hasard ?

Poste un fichier ça sera plus simple pour trouver le problème !

Désolé d'être aussi mauvais, ce n'est pas du tout mon domaine, alors je tâtonne grave !

11gestion-stock5.xlsm (149.56 Ko)

J'ai rencontré une erreur à l'ouverture du classeur mais malgré tout, les valeurs sont bien inscrites les unes en dessous des autres dans le tableau de la feuille "Commande" donc, le fonctionnement est normal

Oui, le problème étant que les inscriptions ne se font pas à partir de la première ligne du tableau, mais à partir de la deuxième uniquement..

Effectivement, je n'ai pas regardé plus loin

Tu utilises un tableau Excel (ListObject) donc, la façon de procéder est différente.

Voici le code d'ajout des valeurs :

Sub Macro2()

    Dim sh1 As Worksheet
    Dim Tbl As ListObject
    Dim Lig As ListRow

    Set sh1 = Sheets("MARQUE")
    Set Tbl = Sheets("Commande").ListObjects("Tableau4")

    Set Lig = Tbl.ListRows.Add

    Lig.Range(, 1) = Now
    Lig.Range(, 2).Value = sh1.Cells(ActiveCell.Row, "H").Value
    Lig.Range(, 2).Value = sh1.Cells(ActiveCell.Row, "I").Value
    Lig.Range(, 3).Value = sh1.Cells(ActiveCell.Row, "J").Value
    Lig.Range(, 4).Value = sh1.Cells(ActiveCell.Row, "K").Value
    Lig.Range(, 5).Value = sh1.Cells(ActiveCell.Row, "L").Value
    Lig.Range(, 6).Value = sh1.Cells(ActiveCell.Row, "M").Value
    Lig.Range(, 7).Value = sh1.Cells(ActiveCell.Row, "O").Value

End Sub

Quand tu veux créer une nouvelle commande, il te faut vider ton tableau de toutes ses valeurs, voici le code pour :

Sub EffacerTbl()

    Dim Tbl As ListObject

    Set Tbl = Sheets("Commande").ListObjects("Tableau4")

    Tbl.DataBodyRange.Delete

End Sub

Merci beaucoup pour ces explications !!

Bonne journée à toi !!

Rechercher des sujets similaires à "copier coller lignes taleau feuille"