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

XL 2010 suppression fichiers excel vba

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:

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
 

olivier388

XLDnaute Nouveau
Bonjour,
Tout a fait normal que tous les fichiers soient supprimes.
Je suppose que vous connaissez le nom du fichier a supprime, remplacez *Stage*.* par ce nom
oui c'est tout a fait normal en effet puisque c'est un enregistrement automatique du nom par rapport a des données recuperées dans le fichier. d'ou cette ligne : nomfichier = "Stage_" & ActiveWorkbook.Sheets("PLAN DE CHAMBRE").Range("A1") & "_" & ActiveWorkbook.Sheets("PLAN DE CHAMBRE").Range("H1") & extension
j'aimerais tout simplement que ca soit automatique soit par une invite eventuellement qui demande quel fichier supprimés ou qu'il le detecte par le fichier qui est ouvert ...sinon ca veut dire qu'il faut que je modifie ma macro a chaque fois avec le nom de fichier....
 

olivier388

XLDnaute Nouveau
oui car il est crée automatiquement par la fonction contenue dans le code vba par rapport au nom du stage qui vient et le lieu. c'est cette fonction qui donne le nom au fichier pendant la sauvegarde nomfichier = "Stage_" & ActiveWorkbook.Sheets("PLAN DE CHAMBRE").Range("A1") & "_" & ActiveWorkbook.Sheets("PLAN DE CHAMBRE").Range("H1") & extension
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…