Suppression ficher après traitement
Résolu
PYGOS69
Messages postés
452
Date d'inscription
Statut
Membre
Dernière intervention
-
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
yg_be Messages postés 23541 Date d'inscription Statut Contributeur Dernière intervention -
Bonjour,
J'ai une macro qui ouvre un fichier pdf sous excel et qui après avoir mis en forme le fichier ouvert sous excel sauvegarde le fichier en pdf sur un autre répertoire.
Je souhaiterais, une fois le fichier traité, celui-ci soit supprimé du répertoire source et passe au suivant…..
Pouvez-vous m'aider svp ?
Option Explicit
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) _
As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess _
As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As _
Long, ByVal uExitCode As Long) As Long
Public Const SYNCHRONIZE = &H100000
Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
Sub copy_data_pdf()
Dim task As Long 'D?claration des variables
Dim handle As Long 'D?claration des variables
Dim result As Long 'D?claration des variables
Dim Pos As Integer 'D?claration des variables
Dim Cel As range 'D?claration des variables
Dim Nom As String 'D?claration des variables
' Ouverture du fichier et Changement du chemin d' adobe program as per your desktop
task = Shell("C:\Program Files\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe " & "E:\00-Dossiers Partag?s\00-Dossiers des Projets\54-Pygos\Fichiers traitement\11-Sc?narios ADD\DSG\*.pdf", vbNormalFocus)
handle = OpenProcess(SYNCHRONIZE Or STANDARD_RIGHTS_REQUIRED Or &HFFF, False, task)
Application.Wait Now + TimeValue("00:00:2") ' Attente x seconde(s)
SendKeys "^a", True ' select all using ctrl a
Application.Wait Now + TimeValue("00:00:2") ' Attente x seconde(s)
SendKeys "^c" ' copy all using ctrl c
Application.Wait Now + TimeValue("00:00:2") ' Attente x seconde(s)
Windows("Classeur4.xlsm").Activate ' activation du classeur cible
range("a2").Select
ActiveSheet.Paste
For Each Cel In range("A1:A" & range("A65536").End(xlUp).Row)
Pos = InStr(1, Cel.Text, "/")
If Pos > 2 Then
Nom = Mid(Cel.Text, Pos - 2, 10)
If IsDate(Nom) Then
Cells(Cel.Row, "D") = CDate(Nom)
End If
End If
Next Cel
result = TerminateProcess(handle, 0) ' fermeture du pdf
result = CloseHandle(handle)
'Recherche des dates a incr?menter pour chaque champ de la DSG
For Each Cel In range("A1:A" & range("A65536").End(xlUp).Row)
Pos = InStr(1, Cel.Text, "/")
If Pos > 2 Then
Nom = Mid(Cel.Text, Pos - 2, 10)
If IsDate(Nom) Then
Cells(Cel.Row, "D") = CDate(Nom)
End If
End If
Next Cel
Export_PDF
End Sub
Sub Export_PDF()
Dim chemin As String, fichier As String
chemin = "e:\00-Dossiers Partag?s\00-Dossiers des Projets\54-Pygos\Fichiers traitement\11-Sc?narios ADD\DSG\Result"
fichier = chemin & "\" & range("f2") & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
fichier, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
End Sub
Merci d'avance !
J'ai une macro qui ouvre un fichier pdf sous excel et qui après avoir mis en forme le fichier ouvert sous excel sauvegarde le fichier en pdf sur un autre répertoire.
Je souhaiterais, une fois le fichier traité, celui-ci soit supprimé du répertoire source et passe au suivant…..
Pouvez-vous m'aider svp ?
Option Explicit
Public Declare Function CloseHandle Lib "kernel32" (ByVal hObject As Long) _
As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess _
As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Public Declare Function TerminateProcess Lib "kernel32" (ByVal hProcess As _
Long, ByVal uExitCode As Long) As Long
Public Const SYNCHRONIZE = &H100000
Public Const STANDARD_RIGHTS_REQUIRED = &HF0000
Sub copy_data_pdf()
Dim task As Long 'D?claration des variables
Dim handle As Long 'D?claration des variables
Dim result As Long 'D?claration des variables
Dim Pos As Integer 'D?claration des variables
Dim Cel As range 'D?claration des variables
Dim Nom As String 'D?claration des variables
' Ouverture du fichier et Changement du chemin d' adobe program as per your desktop
task = Shell("C:\Program Files\Adobe\Acrobat Reader DC\Reader\AcroRd32.exe " & "E:\00-Dossiers Partag?s\00-Dossiers des Projets\54-Pygos\Fichiers traitement\11-Sc?narios ADD\DSG\*.pdf", vbNormalFocus)
handle = OpenProcess(SYNCHRONIZE Or STANDARD_RIGHTS_REQUIRED Or &HFFF, False, task)
Application.Wait Now + TimeValue("00:00:2") ' Attente x seconde(s)
SendKeys "^a", True ' select all using ctrl a
Application.Wait Now + TimeValue("00:00:2") ' Attente x seconde(s)
SendKeys "^c" ' copy all using ctrl c
Application.Wait Now + TimeValue("00:00:2") ' Attente x seconde(s)
Windows("Classeur4.xlsm").Activate ' activation du classeur cible
range("a2").Select
ActiveSheet.Paste
For Each Cel In range("A1:A" & range("A65536").End(xlUp).Row)
Pos = InStr(1, Cel.Text, "/")
If Pos > 2 Then
Nom = Mid(Cel.Text, Pos - 2, 10)
If IsDate(Nom) Then
Cells(Cel.Row, "D") = CDate(Nom)
End If
End If
Next Cel
result = TerminateProcess(handle, 0) ' fermeture du pdf
result = CloseHandle(handle)
'Recherche des dates a incr?menter pour chaque champ de la DSG
For Each Cel In range("A1:A" & range("A65536").End(xlUp).Row)
Pos = InStr(1, Cel.Text, "/")
If Pos > 2 Then
Nom = Mid(Cel.Text, Pos - 2, 10)
If IsDate(Nom) Then
Cells(Cel.Row, "D") = CDate(Nom)
End If
End If
Next Cel
Export_PDF
End Sub
Sub Export_PDF()
Dim chemin As String, fichier As String
chemin = "e:\00-Dossiers Partag?s\00-Dossiers des Projets\54-Pygos\Fichiers traitement\11-Sc?narios ADD\DSG\Result"
fichier = chemin & "\" & range("f2") & ".pdf"
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
fichier, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas _
:=False, OpenAfterPublish:=False
End Sub
Merci d'avance !
Configuration: Windows / Edge 17.17134
A voir également:
- Suppression ficher après traitement
- Forcer suppression fichier - Guide
- Reconsidérer le traitement de vos informations à des fins publicitaires - Accueil - Réseaux sociaux
- Traitement de texte gratuit - Guide
- Ce logiciel gratuit et léger est parfait pour remplacer Word, même sur un vieux PC - Guide
- Suppression compte gmail - Guide
1 réponse
yg_be
Messages postés
23541
Date d'inscription
Statut
Contributeur
Dernière intervention
Ambassadeur
1 584
bonjour,
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
tu écris "un fichier", "le fichier", "le fichier", "le fichier": s'agit-il du même fichier? peux-tu expliquer plus clairement, peut-être en nommant les fichiers?
"passer au suivant": peux-tu être plus précis?
ta macro est présente dans quel fichier?
je suppose que, pour le moment, ta macro traite un fichier bien précis, et fait cela correctement.
souhaites-tu améliorer ta macro pour supprimer le fichier traité, et faire tout cela pour plusieurs fichiers?
en analysant un peu plus le code, je me dis qu'un des soucis est que le VBA ne connait pas le nom du fichier en cours de traitement. à moins que le nom du fichier soit présent dans son contenu, comme le nom du fichier destination est présent dans son contenu?
l'autre technique serait, au lieu d'utiliser * pour ouvrir un fichier, de découvrir le nom du fichier à ouvrir, de le spécifier, puis de le supprimer.
merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
tu écris "un fichier", "le fichier", "le fichier", "le fichier": s'agit-il du même fichier? peux-tu expliquer plus clairement, peut-être en nommant les fichiers?
"passer au suivant": peux-tu être plus précis?
ta macro est présente dans quel fichier?
je suppose que, pour le moment, ta macro traite un fichier bien précis, et fait cela correctement.
souhaites-tu améliorer ta macro pour supprimer le fichier traité, et faire tout cela pour plusieurs fichiers?
en analysant un peu plus le code, je me dis qu'un des soucis est que le VBA ne connait pas le nom du fichier en cours de traitement. à moins que le nom du fichier soit présent dans son contenu, comme le nom du fichier destination est présent dans son contenu?
l'autre technique serait, au lieu d'utiliser * pour ouvrir un fichier, de découvrir le nom du fichier à ouvrir, de le spécifier, puis de le supprimer.
Je souhaite en effet améliorer ma macro pour supprimer le fichier traité, et faire tout cela pour plusieurs fichiers?
Actuellement, je prends le fichier traité et je le supprime.
Exemple :
Test1.pdf
Test2.pdf
Test3.pdf
Test10.pdf
La macro traite les fichiers ci-dessus par ordre croissant....
Test1.pdf
Test10.pdf
Test2.pdf
Test3.pdf
Cordialement,
La macro prend le 1er fichier pdf trouvé dans le répertoire DSG , ceci par ordre alphabétique.
Les données du fichier ouvert, Test1.pdf sous adobe sont collés dans la colonne A du modèle Classeur4.xlsm
Ensuite une copie du modèle est enregistrée, avec comme nom de fichier (info dans cellule F2), sous le répertoire Recup, pour un autre traitement ultérieur.
Le traitement fini du 1er fichier, je souhaite :
1. supprimer le fichier traité sous le répertoire DSG (Test1.pdf) et,
2. relancer la macro autant de fois, que le répertoire DSG contient des fichiers pdf.
Merci D'avance !
remplacer
par
et ajouter ceci avant :
Bon Weekend !