Copier et renommer un fichier [Résolu]

Messages postés
863
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
- - Dernière réponse : Sinsitrus
Messages postés
863
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
- 28 juin 2010 à 12:07
Salut !

Voici ma source. J'ai besoin que vous m'aidez à corriger car il m'envoie une erreur :
Nom ou numéro de fichier incorrect

Private Declare Function CopyFileA Lib "kernel32" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

Private Sub Bouton1_Click()
MkDir App.Path & "\e-Sauvegarde"

Com.Filter = "Documents word (*.doc)|*.doc"
Com.ShowOpen
Chemin_File = Com.Filename 

T_Fichier = Chemin_File
T_Fichier = Left(T_Fichier, Len(T_Fichier) - 4)
T_FileCom = T_Fichier & Format(Now, "_ddmmyy_hhnn") & ".doc"
End Sub

Private Sub Bouton2_Click()
FileCopy Com.Filename, App.Path & "\e-Sauvegarde" & T_FileCom
End Sub


Ce qui donnera au lieu de :
Document.doc
Ceci :
Document_261010_1351.doc


Le but est de récupérer un fichier avec un CommonDialog et copier celui-ci avec un autre nom dans un endroit précis dans la racine de l'appli.

Pouvez-vous m'aider svp ?

Merci

----------
OS : Windows XP SP3 et Vista 32
Platforme : VB 6.0 + SP6
Ok VB6.0 c'est pas net !
Afficher la suite 

8 réponses

Meilleure réponse
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
3
Merci
Supprime la déclaration d'API et colle ce code. T'aurais quand même pu faire un MsgBox de la destination vu que l'erreur te disait que le nom de fichier était incorrect.
Private Sub Bouton1_Click()
    Dim Tmp As String

    Tmp = App.Path & "\e-Sauvegarde"
    MkDir Tmp

    With com
        .Filter = "Documents Word (*.doc)|*.doc"
        .InitDir = Tmp
        .CancelError = True
        On Error GoTo err
        .ShowOpen
        On Error GoTo 0
        Tmp = .FileName
    End With
    Me.T_Fichier.Text = Tmp
    Tmp = Left(Tmp, Len(Tmp) - 4) & Format(Now, "_ddmmyy_hhnn") & ".doc"
    Me.T_FileCom.Text = Tmp
    
err:
End Sub

Private Sub Bouton2_Click()
Dim S As String,
S = Mid(Me.T_FileCom.Text, InStrRev(Me.T_FileCom.Text, "") + 1)
FileCopy T_Fichier.Text, App.Path & "\Sauvegarde" & S
End Sub


VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 202 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_ghuysmans99
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
0
Merci
Est-ce que T_FileCom est un textbox ? Si ce n'est pas le cas, crées-en une vu que Bouton1_Click semble l'évènement d'un bouton Parcourir. Il te suffira alors d'utiliser le contenu de ce textbox dans Bouton3_Click.

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99
Messages postés
863
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
0
Merci
Effectivement, T_FileCom est un textbox et je l'ai utilisé dans le bouton2 comme ceci :
Private Sub Bouton2_Click()
FileCopy Com.Filename, App.Path & "\e-Sauvegarde" & T_FileCom
End Sub


Et c'est là que l'erreur apparait.
FileCopy NomEtChemin, NouveauChemin+NouveauNomFichier

Je me suis dis l'algo est pttr la source du problème mais je ne vois pas où est le problème. Il me fait quand même l'erreur
Commenter la réponse de Sinsitrus
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Statut
Membre
Dernière intervention
30 juin 2013
11
0
Merci
Private Sub Bouton2_Click()
CopyFile Com.Filename, App.Path & "\e-Sauvegarde" & T_FileCom.Text, 0
End Sub

VB.NET is good ... VB6 is better
Utilise Réponse acceptée quand un post répond à ta question
Commenter la réponse de cs_ghuysmans99
Messages postés
863
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
0
Merci
Salut !

J'ai un peux changé le code mais toujours une erreur s'exécute.

Private Declare Function CopyFileA Lib "kernel32" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long

Private Sub Bouton1_Click()
MkDir App.Path & "\e-Sauvegarde"

Com.Filter = "Documents Word (*.doc)|*.doc"
Com.ShowOpen

T_Fichier.Text = Com.Filename
T_FileCom.Text = Left(T_Fichier.Text, Len(T_Fichier.Text) - 4) & Format(Now, "_ddmmyy_hhnn") & ".doc"
End Sub

Private Sub Bouton2_Click()
CopyFile T_Fichier.Text, App.Path & "\e-Sauvegarde" & T_FileCom.Text
End Sub


Outlook s'ouvre et j'obtiens cette erreur:
Erreur définie par l'application ou par l'objet : Erreur 287
CopyFile T_Fichier, App.Path & "\Sauvegarde" & T_FileCom.Text


Est-ce que c'est ma déclaration CopyFileA qui fait cette erreur ou CopyFile de la ligne de commande de copie ou quoi ?
Commenter la réponse de Sinsitrus
Messages postés
863
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
0
Merci
et avec ça :
Private Sub Bouton2_Click()
Filecopy T_Fichier, App.Path & "\Sauvegarde" & T_FileCom.Text
End Sub

j'ai :
Nom ou numéro de fichier incorrect : Erreur 52
Commenter la réponse de Sinsitrus
Messages postés
863
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
0
Merci
Encore merci ghuysmans99, t'es super.
Par contre, le mkdir ne fonctionne pas. J'ai supprimé le dossier et à l'exécution il me dis que la source n'est pas valide. Or :
Dim Tmp As String
    Tmp = App.Path & "\e-Sauvegarde"
    MkDir Tmp
est pour créer le dossier si celui-ci n'y est pas...
Commenter la réponse de Sinsitrus
Messages postés
863
Date d'inscription
samedi 11 juin 2005
Statut
Membre
Dernière intervention
21 août 2015
0
Merci
Dossier créé avec succès ^^
Merci encore ghuysmans99
On considère le sujet comme réglé ;)
Commenter la réponse de Sinsitrus