Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/11/2011, 16h01   #1
Invité de passage
 
Inscription : mars 2008
Messages : 11
Détails du profil
Informations forums :
Inscription : mars 2008
Messages : 11
Points : 2
Points : 2
Par défaut Envoyer fichier vers corbeille

Bonjour,
J'utilise le code présenté dans la FAQ d Access, code qui fonctionne parfaitement pour supprimer
un fichier ou un répertoire.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Private Sub cmdTest_Click()
' On va transférer le film de son répertoire actuel vers son répertoire définitif
Dim fDialog As Office.FileDialog
Dim fso As FileSystemObject
Set fso = New FileSystemObject
 
Dim varFile As Variant, f
Dim fileName As String, FileNamerepert As String
Dim oliste As DAO.Recordset
' Choix du film source
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
  .AllowMultiSelect = False  ' plusieurs fichiers à la fois
  .Title = "Choisir le fichier source."
  .InitialFileName = "E:\usenet\download\Filemaster"
  If .Show = True Then
    FileSourceTot = ""
    For Each varFile In .SelectedItems
      FileSourceTot = varFile
      strpos = InStrRev(varFile, "\")
      ' nom du répertoire source
      FileNamerepert = Mid$(varFile, 1, strpos - 1)
      strTemp = Mid$(varFile, InStrRev(varFile, "\") + 1)
      strpos = InStrRev(strTemp, ".")
      FileSourceNameNoExt = Left$(strTemp, InStrRev(strTemp, ".") - 1)
      FileSourceNameExt = Mid$(strTemp, strpos)
    Next
  Else
     MsgBox "Vous avez Cancelé le choix."
     Exit Sub
  End If
End With
msgResult = MsgBox("Le fichier doit être SEUL dans son répertoire !!!", vbOKCancel)
If msgResult = vbCancel Then Exit Sub
 
'*** constitution du répertoire final, basé sur genre et titreFR
' filtrer Lise de films sur base de son N°
 
    sourcefolder = FileSourceTot
 
    DoCmd.Hourglass True
    targetfolder = "e:\test01" & FileSourceNameExt
    fso.CopyFile sourcefolder, targetfolder, True
    DoCmd.Hourglass False
    ' supprimer répertoire source
 
    Set fso = Nothing
    Set fDialog = Nothing
    '
 
    Dim MeHwnd As Long
    MeHwnd = FindWindowA(vbNullString, Me.Caption)
    ' FileNamerepert = nom du répertoire source
    If DansCorbeille(FileNamerepert, MeHwnd) Then
      MsgBox "Le fichier a été déplacé dans la corbeille"
    Else
      MsgBox "Le fichier n'a pas pu être déplacé dans la corbeille"
    End If
 
 
End Sub
Il suffit de rechercher le handle de la fenêtre en utilisant

Code :
1
2
Private Declare Function FindWindowA Lib "user32" _
        (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
associé à :

Code :
1
2
Dim MeHwnd As Long
    MeHwnd = FindWindowA(vbNullString, Me.Caption)
à placer dans le code.

Toutefois, si avant de lancer la routine d'envoi dans la corbeille, je fais une copie du fichier,
lorsque j’accepte l’envoi, j’ai le message d’erreur de Microsoft Windows comme quoi le fichier est déjà utilisé par une autre personne ou un autre programme.
Le module (ci-après) est assez simple.
Schématiquement :
- Choix d’un fichier (source) via : Application.FileDialog(msoFileDialogFilePicker)
- Constitution d’un nouveau nom (target)
- Copie de source vers target : fso.CopyFile sourcefolder, targetfolder, True
- Suppression du répertoire qui contenait le fichier, donc suppression également du fichier

Le message s’affiche à l’exécution de
Code :
 DansCorbeille = (Result = 0) And (DelFileOp.fAnyOperationsAborted = 0)
Voici mon code :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
Private Sub cmdTest_Click()
' On va transférer le film de son répertoire actuel vers son répertoire définitif
Dim fDialog As Office.FileDialog
Dim fso As FileSystemObject
Set fso = New FileSystemObject
 
Dim varFile As Variant, f
Dim fileName As String, FileNamerepert As String
Dim oliste As DAO.Recordset
' Choix du film source
Set fDialog = Application.FileDialog(msoFileDialogFilePicker)
With fDialog
  .AllowMultiSelect = False  ' plusieurs fichiers à la fois
  .Title = "Choisir le fichier source."
  .InitialFileName = "E:\usenet\download\Filemaster"
  If .Show = True Then
    FileSourceTot = ""
    For Each varFile In .SelectedItems
      FileSourceTot = varFile
      strpos = InStrRev(varFile, "\")
      ' nom du répertoire source
      FileNamerepert = Mid$(varFile, 1, strpos - 1)
      strTemp = Mid$(varFile, InStrRev(varFile, "\") + 1)
      strpos = InStrRev(strTemp, ".")
      FileSourceNameNoExt = Left$(strTemp, InStrRev(strTemp, ".") - 1)
      FileSourceNameExt = Mid$(strTemp, strpos)
    Next
  Else
     MsgBox "Vous avez Cancelé le choix."
     Exit Sub
  End If
End With
msgResult = MsgBox("Le fichier doit être SEUL dans son répertoire !!!", vbOKCancel)
If msgResult = vbCancel Then Exit Sub
 
'*** constitution du répertoire final, basé sur genre et titreFR
' filtrer Lise de films sur base de son N°
 
    sourcefolder = FileSourceTot
 
    DoCmd.Hourglass True
    targetfolder = "e:\test01" & FileSourceNameExt
    fso.CopyFile sourcefolder, targetfolder, True
    DoCmd.Hourglass False
    ' supprimer répertoire source
 
    Set fso = Nothing
    Set fDialog = Nothing
    '
 
    Dim MeHwnd As Long
    MeHwnd = FindWindowA(vbNullString, Me.Caption)
    ' FileNamerepert = nom du répertoire source
    If DansCorbeille(FileNamerepert, MeHwnd) Then
      MsgBox "Le fichier a été déplacé dans la corbeille"
    Else
      MsgBox "Le fichier n'a pas pu être déplacé dans la corbeille"
    End If
 
 
End Sub

C’est sans doute l’opération de copie qui maintient un lien avec le fichier mais je ne vois pas comment.

Pourriez-vous m’aider ?

Merci d'avance pour votre aide.

Cordialement,

JP
jprog46 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 14h06.


 
 
 
 
Partenaires

Hébergement Web