Collage dernière ligne non vide +1
Bonjour à toutes et à tous,
Ma macro sert à trouver plusieurs données au milieu d'autres. Ce que je veux faire, c'est trouver la dernière ligne de chaque critère et copier cette ligne tout à la fin de mon tableau de données. Mon problème est que j'arrive à faire tout cela sauf la dernière partie, coller cette ligne dans la dernière ligne non vide + 1 (donc dernière ligne vide). Je pensais à mettre un +1 sur ma ligne (Sheets("BDD").Range("A" & Rows.Count).End(xlUp).PasteSpecial) mais ça ne fonctionne pas.
Merci d'avance,
Sub prcopieimportation()
'***Macro servant à dupliquer la dernière ligne de chaque presse en fin d'équipe***
'*** Bouton utilisé : Fin d'équipe de l'onglet formulaire_cuisson***
'fonction pour optimiser la macro
Application.ScreenUpdating = False 'Désactiver l'affichage à l'écran
Dim numpresse As String, c As Range, celpresse As Range, cel As Range
For Each celpresse In Sheets("Source").Range("Y2:Y58") 'début de la boucle qui fait la duplication de toutes les dernières lignes de chaque presse
numpresse = celpresse.Value
Set c = Sheets("BDD").Range("B:B").Find(numpresse, LookIn:=xlValues, lookat:=xlWhole, SearchDirection:=xlPrevious) 'on vient chercher la dernière valeur du numéro de la presse dans la colonne B de l'onglet BDD
If Not c Is Nothing Then
Sheets("BDD").Range("A" & c.Row & ":P" & c.Row).Copy 'copie de la ligne supérieur de la colonne B à P
Sheets("BDD").Range("A" & Rows.Count).End(xlUp).PasteSpecial 'collage de la ligne supérieur dans la ligne vierge
Application.CutCopyMode = False 'désactive le mode copier/coller
End If
Next celpresse 'fin boucle
MsgBox ("Transfert terminé"), vbOKOnly, "Fenêtre de transfert fin d'équipe"
Application.ScreenUpdating = True 'réactivation de toutes les fonctions
'ActiveWorkbook.Save 'enregistre automatiquement le fichier
End Sub
Bonjour,
peut-être en décomposant:
.../...
Lig = Sheets("BDD").Range("A" & Rows.Count).End(xlUp).Row '<= N° dernière ligne occupée
For Each celpresse In Sheets("Source").Range("Y2:Y58") 'début de la boucle qui fait la duplication d...
numpresse = celpresse.Value
Set c = Sheets("BDD").Range("B:B").Find(numpresse, LookIn:=xlValues, lookat:=xlWhole, SearchDirection:=xlPrevious) 'on vient chercher la dernière valeur du numéro de la presse dans la colonne B de l'onglet BDD
If Not c Is Nothing Then
Sheets("BDD").Range("A" & c.Row & ":P" & c.Row).Copy 'copie de la ligne supérieur de la colonne B à P
Lig = Lig + 1 '<= N° première ligne vide
Sheets("BDD").Range("A" & Lig).PasteSpecial 'collage de la ligne supérieur dans la ligne vierge
Application.CutCopyMode = False 'désactive le mode copier/coller
End If
Next celpresse 'fin boucle
.../...A+
Bonjour,
peut-être en décomposant:
.../... Lig = Sheets("BDD").Range("A" & Rows.Count).End(xlUp).Row '<= N° dernière ligne occupée For Each celpresse In Sheets("Source").Range("Y2:Y58") 'début de la boucle qui fait la duplication d... numpresse = celpresse.Value Set c = Sheets("BDD").Range("B:B").Find(numpresse, LookIn:=xlValues, lookat:=xlWhole, SearchDirection:=xlPrevious) 'on vient chercher la dernière valeur du numéro de la presse dans la colonne B de l'onglet BDD If Not c Is Nothing Then Sheets("BDD").Range("A" & c.Row & ":P" & c.Row).Copy 'copie de la ligne supérieur de la colonne B à P Lig = Lig + 1 '<= N° première ligne vide Sheets("BDD").Range("A" & Lig).PasteSpecial 'collage de la ligne supérieur dans la ligne vierge Application.CutCopyMode = False 'désactive le mode copier/coller End If Next celpresse 'fin boucle .../...A+
Merci mais j'avais trouvé. Il suffisait de mettre .Offset(1,0) après le End(xlup) et avant le PasteSpecial