olivier388
XLDnaute Nouveau
Bonjour a tous,
Une petite question qui trouvera peut être une réponse je l’espère... J'ai un code en VBA qui fonctionne très bien actuellement a la seule différence que j'avais mis une fonction Kill "C:\User\****\****\*Stage*.*" dans ce code pour effacer le fichier original âpres l'enregistrement de celui-ci sous un autre dossier.
Le probleme que j'ai, ce que lorsque j'enregistre plusieurs fichiers en attente de validation, des lors que j'en valide un avec la macro il me les supprime tous....Il y a t'il un palliatif pour qu'il supprime juste le fichier que je viens de valider?
voici le code:
Une petite question qui trouvera peut être une réponse je l’espère... J'ai un code en VBA qui fonctionne très bien actuellement a la seule différence que j'avais mis une fonction Kill "C:\User\****\****\*Stage*.*" dans ce code pour effacer le fichier original âpres l'enregistrement de celui-ci sous un autre dossier.
Le probleme que j'ai, ce que lorsque j'enregistre plusieurs fichiers en attente de validation, des lors que j'en valide un avec la macro il me les supprime tous....Il y a t'il un palliatif pour qu'il supprime juste le fichier que je viens de valider?
voici le code:
VB:
Sub copiercoller()
Dim ClasseurSource As Workbook
Dim ClasseurCible As Workbook
Dim FeuilleSource As Worksheet
Dim FeuilleCible As Worksheet
Dim PlageSource As Range
Dim DerniereLigne As Long
'imprimer la ou les factures
ActiveWorkbook.Worksheets("PJ CONVENTIONNE").Select
With Worksheets("PJ CONVENTIONNE")
ActiveWorkbook.Worksheets("PJ CONVENTIONNE").PrintOut
End With
If MsgBox("Etes-vous certain de vouloir imprimer la feuille2 ?", vbYesNo, "Demande de confirmation") = vbYes Then
ActiveWorkbook.Worksheets("PJ CONVENTIONNE 2").PrintOut
MsgBox "La feuille a ete imprimée!"
End If
If MsgBox("Etes-vous certain de vouloir imprimer la feuille3 ?", vbYesNo, "Demande de confirmation") = vbYes Then
ActiveWorkbook.Worksheets("PJ CONVENTIONNE 3").PrintOut
MsgBox "La feuille a ete imprimée!"
End If
Sheets("PJ CONVENTIONNE 4").Select
With Worksheets("PJ CONVENTIONNE 4")
ActiveWorkbook.Worksheets("PJ CONVENTIONNE 4").PrintOut
End With
'preparer les elements a copier
Set PJ = Sheets("PJ CONVENTIONNE 4")
With Sheets("Feuil4")
.[F3] = PJ.[G6]
.[G3] = PJ.[Q6]
.[H3] = PJ.[M3]
.[J3] = PJ.[G22]
.[K3] = PJ.[C22]
.[L3] = PJ.[I22]
.[M3] = PJ.[K22]
.[I3] = Sheets("PLAN DE CHAMBRE").[I42]
End With
'Définir la plage à copier
Set PlageSource = ThisWorkbook.Sheets("Feuil4").Range("F3:M3")
'Ouvrir le classeur de destination
Dim chemin As String
Dim ClasseurDest As Workbook
Dim NouvDest As String
chemin = "C:\Users\Public\Documents\****\*****\2023\recapitulatif 2023.xlsx"
NouvDest = "C:\Users\Public\Documents\*****\*******\2023\"
'Vérifier si le classeur est déjà ouvert
On Error Resume Next
Set ClasseurDest = Workbooks(chemin)
On Error GoTo 0
'Si le classeur est déjà ouvert, activer la feuille de destination
If Not ClasseurDest Is Nothing Then
ClasseurDest.Activate
DerniereLigne = ClasseurDest.Sheets("recap").Cells(Rows.Count, 1).End(xlUp).Row + 1
Else 'Sinon, ouvrir le classeur et récupérer la dernière ligne non vide
Set ClasseurDest = Workbooks.Open(chemin)
DerniereLigne = ClasseurDest.Sheets("recap").Cells(Rows.Count, 1).End(xlUp).Row + 1
End If
'Coller la plage à la suite des lignes existantes dans le classeur de destination
PlageSource.Copy
MsgBox "La plage de destination est : " & ClasseurDest.Sheets("recap").Range("A" & DerniereLigne).Address
ClasseurDest.Sheets("recap").Range("A" & DerniereLigne).PasteSpecial (xlPasteValues)
Application.CutCopyMode = False
'Fermer le classeur de destination et source en sauvegardant les modifications
ClasseurDest.Close SaveChanges:=True
nomfichier = "Stage_" & ActiveWorkbook.Sheets("PLAN DE CHAMBRE").Range("A1") & "_" & ActiveWorkbook.Sheets("PLAN DE CHAMBRE").Range("H1") & extension
With ActiveWorkbook
ActiveWorkbook.SaveAs Filename:=NouvDest & nomfichier
Kill "C:\Users\Public\Documents\****\******\*Stage*.*"
End With
Application.Quit
End Sub