SOS copier par macro la derniere ligne d'une feuille et la coller dans une autre!

  • Initiateur de la discussion Initiateur de la discussion vmgnico
  • Date de début Date de début

vmgnico

XLDnaute Nouveau
Bonjour à tous, je reviens vers XLD, car j'ai un petit souci et malgré mes recherches et mon faible niveau :o je n'arrive pas a faire une petite macro pour copier la dernière ligne d'une feuille vers une autre feuille du même classeur en l'insérant sur la deuxième ligne . Je dois intégrer ce code dans mon classeur je vous joints un petit fichier simplifier avec la macro et si dessous le code que j'ai bidouillé!
Sub copier_coller()

Dim DerLign As Integer
DerLign = Range("A65536").End(xlUp).Row
Sheets("BD").Range("A2" & DerLign).Copy
Sheets("consultation").Rows("2:2").Insert shift:=xlDown

Worksheets("consultation").Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("consultation").Range("A2").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False

End Sub

la macro s'exécute bien mais ne copie pas la ligne.... désolé d'être si mauvais mais je bloque depuis un trop long moment c'est pourquoi je vous lance un SOS merci...
 

Pièces jointes

fhoest

XLDnaute Accro
Re : SOS copier par macro la derniere ligne d'une feuille et la coller dans une autre

Bonjour,
remplace le code par celui ci:
Code:
Sub copier_coller()

Dim DerLign As Integer
DerLign = Range("A65536").End(xlUp).Row
Sheets("BD").Rows(DerLign).Copy
    Sheets("consultation").Rows("2:2").Insert shift:=xlDown
    
     Worksheets("consultation").Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
     Worksheets("consultation").Range("A2").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False

  
End Sub
A+
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : SOS copier par macro la derniere ligne d'une feuille et la coller dans une autre

Bonjour vmgenico,

remplace le code par ceci:
Code:
Sub copier_coller()
Dim DerLign As Integer
DerLign = Range("A65536").End(xlUp).Row
Rows(DerLign).Copy
Sheets("consultation").Select
    Rows("2:2").Select
    Selection.Insert Shift:=xlDown
End Sub

à+
Philippe

Edit: Bonjour Fhoest
 

vmgnico

XLDnaute Nouveau
Re : SOS copier par macro la derniere ligne d'une feuille et la coller dans une autre

Après avoir "essayé" d'intégrer vos codes dans mon fichier final, cela n'a pas le même effet, il ne copie pas la dernière ligne remplie dans la feuille "BD", on a bien une insertion sur la 2éme ligne de la feuille "consultation" mais vide! je vous joint cette fois le code complet de mon bouton, je pense qu'il y a des soucis avec l'ensemble du script, un conflit de valeur si vous pouviez jeter un œil et m'aiguiller encore un peu , merci!

Private Sub CmbValider_Click()
Dim ValeurMax As Long
If Me.ComboRef = "" Then
MsgBox " le nom n'est pas documenté"
Exit Sub
End If
If Me.ComboMatricule = "" Then
MsgBox " le matricule n'est pas documenté"
Exit Sub
End If
If Me.ComboNom = "" Then
MsgBox " le nom n'est pas documenté"
Exit Sub
End If
'If Me.OptEmprunt = False And Me.OptRestitution = False Then
'MsgBox " Emprunt ou restitution non documenté"
'Exit Sub
'End If
With Sheets("BD")
ValeurMax = Application.WorksheetFunction.Max(.Range("A2:A" & .Range("A65536").End(xlUp).Row)) + 1
.Range("A" & .Range("A65536").End(xlUp).Row + 1) = ValeurMax
.Range("B" & .Range("A65536").End(xlUp).Row) = Now
.Range("C" & .Range("A65536").End(xlUp).Row) = Me.ComboRef
.Range("D" & .Range("A65536").End(xlUp).Row) = Sheets("item").Range("B" & Me.ComboRef.ListIndex + 1)
.Range("E" & .Range("A65536").End(xlUp).Row) = CDbl(Me.ComboMatricule)
.Range("F" & .Range("A65536").End(xlUp).Row) = Me.ComboNom
If Me.Labelsortie.Visible = True Then
.Range("G" & .Range("A65536").End(xlUp).Row) = 0
Sheets("stock").Range("B" & Me.ComboRef.ListIndex + 1) = 0


ElseIf Labelrestitution.Visible = True Then
.Range("G" & .Range("A65536").End(xlDown).Row) = 1
Sheets("stock").Range("B" & Me.ComboRef.ListIndex + 1) = 1
End If

'Dim DerLign As Integer
' DerLign = Range("A65536").End(xlUp).Row
' Sheets("BD").Rows(DerLign).Copy
' Sheets("consultation").Rows("2:2").Insert shift:=xlDown
'
' Worksheets("consultation").Range("A2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'Worksheets("consultation").Range("A2").PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
'Application.CutCopyMode = False
Dim DerLign As Integer
With Sheets("BD")
DerLign = Range("A65536").End(xlUp).Row
Rows(DerLign).Copy
Sheets("consultation").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Unload Me
End With
End With
End Sub

@+
 

fhoest

XLDnaute Accro
Re : SOS copier par macro la derniere ligne d'une feuille et la coller dans une autre

Re,
Code:
Private Sub CmbValider_Click()
Dim ValeurMax As Long
If Me.ComboRef = "" Then
MsgBox " le nom n'est pas documenté"
Exit Sub
End If
If Me.ComboMatricule = "" Then
MsgBox " le matricule n'est pas documenté"
Exit Sub
End If
If Me.ComboNom = "" Then
MsgBox " le nom n'est pas documenté"
Exit Sub
End If
'If Me.OptEmprunt = False And Me.OptRestitution = False Then
'MsgBox " Emprunt ou restitution non documenté"
'Exit Sub
'End If
With Sheets("BD")
ValeurMax = Application.WorksheetFunction.Max(.Range("A2:A" & .Range("A65536").End(xlUp).Row)) + 1
.Range("A" & .Range("A65536").End(xlUp).Row + 1) = ValeurMax
.Range("B" & .Range("A65536").End(xlUp).Row) = Now
.Range("C" & .Range("A65536").End(xlUp).Row) = Me.ComboRef
.Range("D" & .Range("A65536").End(xlUp).Row) = Sheets("item").Range("B" & Me.ComboRef.ListIndex + 1)
.Range("E" & .Range("A65536").End(xlUp).Row) = CDbl(Me.ComboMatricule)
.Range("F" & .Range("A65536").End(xlUp).Row) = Me.ComboNom
If Me.Labelsortie.Visible = True Then
.Range("G" & .Range("A65536").End(xlUp).Row) = 0
Sheets("stock").Range("B" & Me.ComboRef.ListIndex + 1) = 0


ElseIf Labelrestitution.Visible = True Then
.Range("G" & .Range("A65536").End(xlDown).Row) = 1
Sheets("stock").Range("B" & Me.ComboRef.ListIndex + 1) = 1
End If

Dim DerLign As long 'si tu va jusque la ligne 65000
 DerLign =sheets("BD"). Range("A65000").End(xlup).Row
Sheets("BD").Rows(DerLign).Copy
 Sheets("consultation").Rows("2:2").Insert shift:=xlDown

 Worksheets("consultation").Range("A2").PasteSpecia l Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Worksheets("consultation").Range("A2").PasteSpeci al Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
'Dim DerLign As Integer
'With Sheets("BD")
'DerLign = Range("A65536").End(xlUp).Row
'Rows(DerLign).Copy
Sheets("consultation").Select
Rows("2:2").Select
Selection.Insert Shift:=xlDown
Unload Me
End With
End With
End Sub
A tester.
 

Discussions similaires

Réponses
2
Affichages
567
  • Question Question
Microsoft 365 Erreur de format
Réponses
5
Affichages
432
Réponses
3
Affichages
837

Statistiques des forums

Discussions
315 289
Messages
2 118 063
Membres
113 421
dernier inscrit
MagicVander