Copier et renommer un fichier [Résolu]

Sinsitrus 863 Messages postés samedi 11 juin 2005Date d'inscription 21 août 2015 Dernière intervention - 26 juin 2010 à 15:54 - Dernière réponse : Sinsitrus 863 Messages postés samedi 11 juin 2005Date d'inscription 21 août 2015 Dernière intervention
- 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 

Votre réponse

8 réponses

Meilleure réponse
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 28 juin 2010 à 11:33
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

Merci cs_ghuysmans99 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 75 internautes ce mois-ci

Commenter la réponse de cs_ghuysmans99
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 26 juin 2010 à 22:35
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
Sinsitrus 863 Messages postés samedi 11 juin 2005Date d'inscription 21 août 2015 Dernière intervention - 27 juin 2010 à 02:08
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
cs_ghuysmans99 3983 Messages postés jeudi 14 juillet 2005Date d'inscription 30 juin 2013 Dernière intervention - 27 juin 2010 à 09:18
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
Sinsitrus 863 Messages postés samedi 11 juin 2005Date d'inscription 21 août 2015 Dernière intervention - 28 juin 2010 à 10:39
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
Sinsitrus 863 Messages postés samedi 11 juin 2005Date d'inscription 21 août 2015 Dernière intervention - 28 juin 2010 à 10:52
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
Sinsitrus 863 Messages postés samedi 11 juin 2005Date d'inscription 21 août 2015 Dernière intervention - 28 juin 2010 à 11:52
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
Sinsitrus 863 Messages postés samedi 11 juin 2005Date d'inscription 21 août 2015 Dernière intervention - 28 juin 2010 à 12:07
0
Merci
Dossier créé avec succès ^^
Merci encore ghuysmans99
On considère le sujet comme réglé ;)
Commenter la réponse de Sinsitrus

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.