IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

[VB]Problème de copie


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 16
    Points : 5
    Points
    5
    Par défaut [VB]Problème de copie
    Bonjour,

    je voudrais créer un programme qui permette d'explorer un disque dur, de sélectionner dessus un dossier puis un fichier, et de copier ce fichier sur un autre disque en cliquant sur un command "importer".

    Mon code donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
     
    Private Sub Command1_Click()
    Shell "C:\Documents and Settings\Administrateur\Bureau\GRASSET\infos.bat"
    End Sub
     
    Private Sub Dir1_Change()
    File1.Path = Dir1.Path
    End Sub
     
    Private Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
    End Sub
     
    Public Sub File1_Click()
    Dim SelectedFile As String
    'L'utilisateur a sélectionné l' objet
    SelectedFile = File1.Path & "\" & File1.FileName ' (&) Voir opérateurs
    End Sub
     
    Public Sub Command2_Click()
    Shell "copy" & " " & File1.Path & " " & "C:\Documents and Settings\Administrateur\Bureau\GRASSET\"
    End Sub
    Mais lors de l'éxécution, il me fait une erreur 53 fichier introuvable
    et il pointe ensuite sur la ligne Shell "copy" etc.

    Pourriez vous m'aider s'il vous plait

  2. #2
    Membre expérimenté Avatar de Megaxel
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    1 187
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 1 187
    Points : 1 405
    Points
    1 405
    Par défaut
    Et au moment de l'erreur, si tu places le pointeur de la souris sur "File1.Path " dans la ligne "Shell copy...", il te donne quoi comme valeur?

  3. #3
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    Public Sub Command2_Click()
    Shell "copy" & " " & File1.Path & " " & "C:\Documents and Settings\Administrateur\Bureau\GRASSET\"
    End Sub
    Tu es vraiment obligé d'utiliser l'appel de Shell pour celà ?
    (en dehors du fait que chez moi (avec VB5) la syntaxe du shell n'est pas celle-là)
    ta sous-routine de command1 n'a rien à voir la dedans..
    :

  4. #4
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    un simple FileCopy devrait faire l'affaire
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    En fait j'ai changé la ligne Shell "copy" :

    Au lieu de
    Shell "copy" & " " & File1.Path & " " & "C:\Documents and Settings\Administrateur\Bureau\GRASSET\"

    j'ai mis
    Shell "copy" & SelectedFile & "C:\Documents and Settings\Administrateur\Bureau\GRASSET\"
    Là il me fait une erreur Variable non définie...

    (sinon avec la ligne non modifiée, il me mettait comme valeur le nom du dossier, donc je pense que j'avais oublié File1.FileName

    sigh

  6. #6
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    evidemment, SelectedFile est définit dans File1_Click et n'est pas public
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    En fait un FileCopy suffirait mais j'aimerais apprendre à utiliser le Shell.

    Euh j'ai du rater un train (pataper svp, noob inside) mais j'ai précisé que c'était Public, non?

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Shell "copy" & " " & File1.Path & " " & "C:\Documents and Settings\Administrateur\Bureau\GRASSET\"
    Tu comptes copier quoi, là ? Le répertoire ?
    Alors je ne comprends pas ton File1_Click où l'utilisateur sélectionne un fichier
    Dim SelectedFile As String
    'L'utilisateur a sélectionné l' objet
    SelectedFile = File1.Path & "\" & File1.FileName ' (&) Voir opérateurs
    Bref, essaie ça (non testé)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Call Shell "cmd /c copy " & File1.Path & " C:\Documents and Settings\Administrateur\Bureau\GRASSET\"
    As-tu vérifier que copy existe bien toujours dans les commande du pseudo DOS (XP)
    Quel est le système sur ton PC ? XP ? Win98 ?...

    A+

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Alors en fait le problème est le suivant :

    j'ai vérifié comme tu le dis si sous dos on peut toujours faire un "copy" (je suis sous XP pro SP2) et ça marche bien.
    Sauf que ! ça marche tant que la cible (donc le lieu où il faut copier) ne contient pas le chemin "documents and settings" etc.
    Impossible de comprendre pourquoi.. J'adore Windows..
    Donc j'ai modifié le fichier cible et ça fonctionne bien !

    Merci à vous !!

  10. #10
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    le probleme vient des espaces dans le path

    essaie avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    """C:\Documents and Settings\Administrateur\Bureau\GRASSET\"""
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Alors j'ai parlé trop tôt... toujours le même problème de variable non définie. Pourtant dans le code suivant je la définis :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Option Explicit
     
    Public Sub Form_Load()
    Dim FichierACopier As String
    FichierACopier = File1.Path & "\" & File1.FileName
    End Sub
     
     
    Private Sub Command1_Click()
    Shell "C:\Documents and Settings\Administrateur\Bureau\GRASSET\infos.bat"
    End Sub
     
    Public Sub Dir1_Change()
    File1.Path = Dir1.Path
    End Sub
     
    Public Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
    End Sub
     
    Public Sub File1_Click()
    Dim SelectedFile As String
    'L'utilisateur a sélectionné l' objet
    SelectedFile = File1.Path & "\" & File1.FileName ' (&) Voir opérateurs
    End Sub
     
    Public Sub Command2_Click()
    Shell "copy" & FichierACopier & "C:\Testdos\"
    End Sub
    edit : j'ai mis Public au lieu de Private partout mais rien n'y change..

  12. #12
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    mais elle n'est pas dimensionné au bon endroit !!!

    La ou elle est elle n'est pas accessible par la Sub Command2_Click


    et ne confonds pas les balises de code avec celle de citation


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Option Explicit
     
    Dim SelectedFile As String '<-- *******************
    Dim FichierACopier As String '<-- *******************
     
    Public Sub Form_Load()
    FichierACopier = File1.Path & "\" & File1.FileName
    End Sub
     
     
    Private Sub Command1_Click()
    Shell "C:\Documents and Settings\Administrateur\Bureau\GRASSET\infos.bat"
    End Sub
     
    Public Sub Dir1_Change()
    File1.Path = Dir1.Path
    End Sub
     
    Public Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
    End Sub
     
    Public Sub File1_Click()
    'L'utilisateur a sélectionné l' objet
    SelectedFile = File1.Path & "\" & File1.FileName ' (&) Voir opérateurs
    End Sub
     
    Public Sub Command2_Click()
    Shell "copy" & FichierACopier & "C:\Testdos\"
    End Sub
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Hmm effectivement. Je pensais qu'en la déclarant dans form_load, elle serait accessible partout.
    J'ai mis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Sub Command2_Click()
    Dim FichierACopier As String
    FichierACopier = File1.Path & "\" & File1.FileName
    Shell "copy" & FichierACopier & "C:\Testdos\"
    End Sub
    Maintenant, il me fait une erreur "fichier introuvable". Je pense que ça vient du chemin qui est mal défini. Je vais essayer autrement et je vous tiens au courant.
    Merci beaucoup en tout cas

    edit : arf, crosspost :p Je vais essayer comme tu as mis et je te dis ce que ça donne.

  14. #14
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Hé non ! Quand il y a un espace dans le nom de répertoire, le dos marche pas... (VBA97) Tu peux essayer avec un nom de huit caractères se terminant par ~1 mais je ne suis pas sûr d'avoir réussi à le faire marcher (désolé mais ma mémoiwe, là, tout de suite, me fait défaut )
    Bonne chance

    A+

  15. #15
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Donc, mise à jour du code pour plus de visibilité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Option Explicit
     
    Dim FichierACopier As String
     
    Public Sub Dir1_Change()
    File1.Path = Dir1.Path
    End Sub
     
    Public Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
    End Sub
     
    Public Sub File1_Click()
    FichierACopier = File1.Path & "\" & File1.FileName
    End Sub
     
    Public Sub Command2_Click()
    Shell "copy" & FichierACopier & "C:\Testdos\"
    End Sub
    Je pense que le problème est très simple, mais je débute et je n'y comprend pas grand chose.
    L'erreur renvoyée est "FICHIER INTROUVABLE" sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell "copy" & FichierACopier & "C:\Testdos\"
    J'ai remplacé FichierACopier par sa définition, rien à faire.
    Existe-t-il un moyen d'avoir une fenêtre cmd qui s'ouvre avec le programme et dans laquelle je pourrai voir pas à pas ce qu'il fait ?

  16. #16
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    Citation Envoyé par sterepathie
    Je pense que le problème est très simple, mais je débute et je n'y comprend pas grand chose.
    Alors, a mon avis, tu devrais te contenter d'un FileCopy
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  17. #17
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    il manque des espaces dans ta ligne de commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Shell "copy " & FichierACopier & " C:\Testdos\"
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

  18. #18
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 16
    Points : 5
    Points
    5
    Par défaut
    Ah j'ai pas encore essayé pour les espaces, mais j'ai anticipé ta réponse et essayé un simple filecopy donc voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Dim FichierACopier As String
     
     
     
    Public Sub Dir1_Change()
    File1.Path = Dir1.Path
    End Sub
     
    Public Sub Drive1_Change()
    Dir1.Path = Drive1.Drive
    End Sub
     
    Public Sub File1_Click()
    FichierACopier = File1.Path & "\" & File1.FileName
    End Sub
     
    Public Sub Command2_Click()
    FileCopy FichierACopier, "C:\Testdos\"
    End Sub
    Bien évidemment, ça ne marche pas, il me met un "fichier introuvable", que je mette ou non des guillemets autour de FichierACopier ou pas (dans la ligne FileCopy).

  19. #19
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Tu as essayé ?

  20. #20
    Expert éminent
    Avatar de ThierryAIM
    Homme Profil pro
    Inscrit en
    Septembre 2002
    Messages
    3 673
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2002
    Messages : 3 673
    Points : 8 524
    Points
    8 524
    Par défaut
    tu voudrais pas faire un minimum d'effort !!!

    Mettre un point d'arret au FileCopy et regarder ce que tu as dans FichierACopier par exemple !!!
    Vous vous posez une question, la réponse est peut-être ici :
    Toutes les FAQs VB
    Les Cours et Tutoriels VB6/VBScript
    Les Sources VB6


    Je ne réponds pas aux questions techniques par MP. Utilisez les forums. Merci de votre compréhension

Discussions similaires

  1. problème de copie de fichier...
    Par Pe04 dans le forum Langage
    Réponses: 5
    Dernier message: 22/03/2006, 10h17
  2. [VBA-E] Problème de copie de données
    Par JM_stp dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/02/2006, 00h33
  3. [XSL] problème avec copy espace de nom
    Par luta dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 11/10/2005, 15h18
  4. Problème de copie de string dans string
    Par kazarn dans le forum SL & STL
    Réponses: 17
    Dernier message: 15/03/2005, 18h35

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo