Aide code VBA coller / trier classeur fermé

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

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

hypo78

XLDnaute Impliqué
Bonjour à tous,

j'ai un code qui me permet à la fermeture de mon classeur de coller des valeurs dans un autre classeur ouvert ou fermé à ce moment.
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Wbk1 As Workbook, Wbk2 As Workbook
Dim j As Long
Application.DisplayAlerts = False


Set Wbk1 = ThisWorkbook
Set Wbk2 = Workbooks.Open(ThisWorkbook.Path & "\Piquets.xlsm")

'copie des données

j = [A65536].End(xlUp)(2).Row
Wbk2.Worksheets("rotation").Cells(j, 1) = Wbk1.Worksheets(1).Cells(2, 1)
Wbk2.Worksheets("rotation").Cells(j, 2) = Wbk1.Worksheets(1).Cells(6, 2)
Wbk2.Worksheets("rotation").Cells(j, 3) = Wbk1.Worksheets(1).Cells(7, 2)


 
    Wbk2.Save 'Sauvegarde
    Wbk2.Close 'Fermeture

End Sub

Là çà fonctionne.
Dans ce deuxième classeur, j'ai un code qui trie les données à la sauvegarde ou à la sortie (j'ai essayé les 2), mais là çà ne fonctionne pas malgré l'instruction dans le premier code : Wbk2.Save

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Set Ws = ThisWorkbook.Sheets("rotation") 'On identifie l'objet pour la feuille de travail

L = Ws.Range("A65536").End(xlUp).Row 'On identifie la dernière ligne en partant du bas

'Pour éviter les flash d'écran pour le select ci dessous
Application.ScreenUpdating = False
    Ws.Select 'On sélectionne la feuille sinon bug si elle ne l'est pas
    Ws.Range("A2:C" & L).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes 'Le Sort
End Sub

D'avance merci de jeter un oeil à mon problème.
 

Pièces jointes

Dernière édition:
Re : Aide code VBA coller / trier classeur fermé

Re,

c'est bon j'ai trouvé tout seul.
le code est très certainement à améliorer mais çà marche.
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Wbk1 As Workbook, Wbk2 As Workbook
Dim j As Long
Dim DerLignePiquets As Long
Application.DisplayAlerts = False


Set Wbk1 = ThisWorkbook
Set Wbk2 = Workbooks.Open(ThisWorkbook.Path & "\Piquets.xlsm")
Set Ws = Wbk2.Worksheets("rotation")

j = [A65536].End(xlUp)(2).Row
Wbk2.Worksheets("rotation").Cells(j, 1) = Wbk1.Worksheets(1).Cells(2, 1)
Wbk2.Worksheets("rotation").Cells(j, 2) = Wbk1.Worksheets(1).Cells(5, 2)
Wbk2.Worksheets("rotation").Cells(j, 3) = Wbk1.Worksheets(1).Cells(6, 2)
Wbk2.Worksheets("rotation").Cells(j, 4) = Wbk1.Worksheets(1).Cells(7, 2)
Wbk2.Worksheets("rotation").Cells(j, 5) = Wbk1.Worksheets(1).Cells(8, 2)
Wbk2.Worksheets("rotation").Cells(j, 6) = Wbk1.Worksheets(1).Cells(9, 2)

With Wbk2.Worksheets("rotation")
L = Ws.Range("A65536").End(xlUp).Row

Application.ScreenUpdating = False
    Ws.Select
    Ws.Range("A2:F" & L).Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes

End With
 
    Wbk2.Save
    Wbk2.Close

End Sub

Dernière question : comment écraser une ligne qui a la même date lors de la copie sur le second classeur?

Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
458
Réponses
4
Affichages
588
Réponses
3
Affichages
880
Réponses
0
Affichages
658
Retour