Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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 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

  • copier.xls
    27.5 KB · Affichages: 110
  • copier.xls
    27.5 KB · Affichages: 117
  • copier.xls
    27.5 KB · Affichages: 122

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

Merci pour vos réponse ultra rapide!!
Je teste vos codes de suite en les intégrants dans mon classeur.
@+
 

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.
 

vmgnico

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

Super merci après 2 petites modif cela fonctionne correctement dans mon script, encore merci pour ta disponibilité.
@+
 

Discussions similaires

Réponses
2
Affichages
567
  • Question Question
Microsoft 365 Erreur de format
Réponses
5
Affichages
432
Réponses
3
Affichages
837
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…