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

Macros et VBA Excel Discussion :

Copier des fichiers en vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Sadr'ihel
    Homme Profil pro
    AQSSE
    Inscrit en
    Juin 2016
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : AQSSE

    Informations forums :
    Inscription : Juin 2016
    Messages : 56
    Par défaut Copier des fichiers en vba
    Bonjour à tous

    J'arpente votre forums depuis un certain temps déjà et j'arrive globalement à trouver mon bonheur et en plus j'arrive à faire fonctionner ce que je trouve.
    Quelque chose me dit que mon code arrache les yeux mais bon ca marche.

    Par contre ça fait un jour ou deux que je bloque sur une commande. Cette question est abordé moultes fois ici mais je n'y arrive pas.

    J'ai un userform jusque là ...

    Je voudrais qu'à chaque selection d'un checkbox il me copie un *.pdf (* change en fonction du choix) d'un dossier source toujours le même (normalement)
    dans un répertoire créer par des paramètres définis en amont nom de société et date


    Mon répertoire se crée très bien par contre le code de copie ne fonctionne pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CheckBox1_Click()
    'manuel qualité
    CheckBox1.Value = ("1")
    Range("a120") = CheckBox1.Value
     
    Dim oFSO As Scripting.FileSystemObject
    Set oFSO = New Scripting.FileSystemObject
    Dim source As String, destination As String
    source = "\\société\entreprise\DEX\REGION NORD\Agence société\Qualite\Projet\Réponse questionnaire national\Base Documentaire\*.pdf"
    destination = Range("i177").Value    ' ici le chemin complet créé dans excel via des concateners
     
    oFSO.CopyFile source, destination, True
     
    End Sub
    J'obtiens erreur d'exécution'76'

    Chemin d'accès introuvable

    J'ai pas de budget pour me racheter un clavier qui va taper mon ordi.

    au secours

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour


    1° source n'est pas un chemin valide

    on ne peut pas utiliser le joker "*" en instruisant une variable du moins pas dans ce contexte la et en plus devant il manque une partie du chemin

    ensuite

    2 ° le new chemin de ta cellule est il valable (on en sait rien) tu l' a pas donné

    3 °tu utilise la déclaration immédiate (early binding) donc je suppose que tu a activé ta référence pour ton FSO ???

    vérifie cela ca devrait être bon
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour,
    Je me demande surtout quelle peut être la raison d'alourdir son code par l'importation de FSO alors qu'existe l'instruction native fort simple FileCopy de VBA ....

    EDIT : sans compter qu'une appli utilisant FSO est fortement déconseillée si elle doit être distribuée. Le modèle FSO, comme d'ailleurs beaucoup d'autres "choses" comprises dans la bibliothèque de types Scripting (Scrrun.dll), comme d'ailleurs tout VBS a été délibérément inhibé par plusieurs utilisateurs sur leur machine (dont la mienne).

  4. #4
    Membre confirmé Avatar de Sadr'ihel
    Homme Profil pro
    AQSSE
    Inscrit en
    Juin 2016
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : AQSSE

    Informations forums :
    Inscription : Juin 2016
    Messages : 56
    Par défaut
    Bonjour,

    Merci pour vos réponse. Par contre j'ai oublier de dire que je débute en VBA et en programmation tout court.

    J'ai utilisé le FSO car je l'ai vu comme autre proposition pour la copie de fichier car j'ai utilisé la fonction filecopy avec le même résultat.

    Je vais donc suivre le conseil de ne pas utiliser fso, dans le doute que les autres utilisateurs ne soit pas embêter.

    1° J'ai utilisé le * pour symboliser un nom de fichier effectivement maladroit de ma part pour l'exemple en question. J'ai 14 documents au même endroit (pour le moment).

    2° Pour le répertoire destination il change à chaque utilisation de mon userform suivant le nom et la date de remplissage.
    J'ai donc voulu contourné le problème en le concatenant dans une cellule (Range("I177").value.
    Je dois dire aussi le fichier source change de nom ou de version car ce sont des documents avec mise à jour.

    Donc pour mon projet je dois pouvoir mettre à jour facilement via ma feuille excel sans forcement devoir ouvrir le code en plus.

  5. #5
    Membre confirmé Avatar de Sadr'ihel
    Homme Profil pro
    AQSSE
    Inscrit en
    Juin 2016
    Messages
    56
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : AQSSE

    Informations forums :
    Inscription : Juin 2016
    Messages : 56
    Par défaut
    Bonjour,

    J'ai toujours une erreur qui s'affiche mais ca change maintenant c'est
    Erreur d’exécution '53':
    fichier introuvable

    j'ai fait ceci

    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
    Dim Origine As String, Final As String, Nomfich As String
     
    Origine = Range("c155").Value 
    Debug.Print Origine  '<---------------ce chemin est bon, il apparaît correctement dans la fenêtre d’exécution
     
    Final = Range("c157").Value 
    Debug.Print Final     '<---------------ce chemin est bon, il apparaît correctement dans la fenêtre d’exécution
     
     
    Nomfich = Dir(Origine & Range("D177").Value & ".pdf")
    Debug.Print Nomfich '<-------------- nom de fichier correct
    Debug.Print Origine & Nomfich '<---------pareil la chaîne se note bien 
    Debug.Print Final & Nomfich '<---------pareil la chaîne se note bien 
     
    FileCopy "Origine & Nomfich", "Final & Nomfich" 'et ça ne fonctionne pas
    alors je me suis posé la question est ce que cela est dut au fait que je travail sur un serveur (tout les fichiers sont sur serveur, (voir même une fois fini et roder certains fichiers seront sur notre site internet).
    Mais non quand je mets tout sur mon disque dur même problème.

    Donc visiblement ce n'est pas parce que je travail via rang(" ").value car sinon je ne verrais pas mon chemin se faire via l'onglet exécution.
    C'est très frustrant.

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    FileCopy "Origine & Nomfich", "Final & Nomfich" et ça ne fonctionne pas
    est forcément générateur d'une erreur, puisque il cherchera à copiuer un fichier nommé "Origine et Nomfich" vers un fichier nommé "Final & Nomfich" !
    Ces guillemets n'ont rien à faire ici !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 09/11/2006, 21h06
  2. Utiliser mon tableau pour copier des fichiers
    Par Paloma dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 31/10/2006, 18h38
  3. Copier des fichiers d'une machine à une autre
    Par Empty_body dans le forum Réseau
    Réponses: 3
    Dernier message: 29/10/2006, 12h44
  4. copier des fichiers
    Par Daeron dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 24/11/2004, 14h45
  5. Batch pour copier des fichier
    Par borgfabr dans le forum Scripts/Batch
    Réponses: 3
    Dernier message: 09/03/2004, 07h55

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