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

VBA Access Discussion :

TransferSpreadsheet et fichier ouvert


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2016
    Messages : 18
    Par défaut TransferSpreadsheet et fichier ouvert
    Bonjour,

    Je me permets de poster ici car je travaille sur le développement d'une base de données Access pour un client. Je suis en local et j'essaye de coller un fichier excel dans une table Access crée pour l'occasion. Pour celà, j'avais penser à utiliser TransferSpreadsheet, le code est ci dessous

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Dim chemin_fichier As String, T_import as string
    chemin_fichier = "C:/mon_chemin/mon_fichier.xlsx"
    T_import = "zzTimport"
    Nettoyage_Table (T_import) ' nettoyage_Table est une petite sub que j'ai écrite qui vérifie la présence de la table en argument dans la base et qui la supprime si présente.
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, T_import, chemin_fichier, False, "maFeuille!"
    Ce code fonctionne si et seulement si le fichier en question est fermé sur mon ordinateur. Si le fichier est ouvert en parallèle, le code ne renvoie pas d'erreur, mais la ligne 6 ne fonctionne pas et je suis obliger de tuer Access avec Ctrl Alt Suppr pour reprendre la main.
    J'ai essayé différente variantes pour faire un close du fichier, mais sans succès... J'ai l'impression que quelquechose m'échappe.

    Merci par avance pour toute suggestion.

  2. #2
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    bonjour
    Ce code fonctionne si et seulement si le fichier en question est fermé sur mon ordinateur. Si le fichier est ouvert en parallèle, le code ne renvoie pas d'erreur, mais la ligne 6 ne fonctionne pas et je suis obliger de tuer Access avec Ctrl Alt Suppr pour reprendre la main.
    Si l'importation fonctionne fichier fermé, pourquoi vouloir le faire fichier ouvert ?
    D'autant plus que tu peux l'ouvrir après importation si tu le souhaites vraiment.

  3. #3
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2016
    Messages : 18
    Par défaut
    Bonjour Grandbois,
    Moi je sais me servir d'access et de VBA, mais le client pas forcément : je me dois de prendre en compte la possibilité qu'un jour le client tente de réaliser des importations avec le fichier ouvert... Je pourrais préciser dans le manuel utilisateur que il faut s'en servir fichier fermé, mais ce n'est pas très pro...

  4. #4
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2019
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2019
    Messages : 144
    Par défaut
    Bonjour

    Je pense que ce soit le fait qu'Excel n'admet qu'une connexion extérieure à la fois (sachant que ce n'est pas le cas lorsque c'est des formules liés).

    C'est une hypothèse.

  5. #5
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2016
    Messages : 18
    Par défaut
    Bonjour Phiphi41;
    Merci pour ta réponse, mais j'ai un peu de mal à voir ce que je peux en faire ^^ Peux tu développer ?

  6. #6
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2019
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loir et Cher (Centre)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2019
    Messages : 144
    Par défaut
    Bonjour

    Je ne suis pas aussi bon que certains membres du forum, mais je pense qu'il faudrait faire un test avant pour savoir si le fichier Excel est ouvert en utilisant GetObject comme dans ce fil : https://www.developpez.net/forums/d9...r-deja-ouvert/

  7. #7
    Expert éminent
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 935
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 935
    Par défaut
    Citation Envoyé par Rince83
    Je pourrais préciser dans le manuel utilisateur que il faut s'en servir fichier fermé, mais ce n'est pas très pro...
    en quoi ce n'est pas très pro: si c'est un pré-requis, le client peut le comprendre, non ?

  8. #8
    Membre averti
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Décembre 2016
    Messages
    18
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Décembre 2016
    Messages : 18
    Par défaut
    Citation Envoyé par tee_grandbois Voir le message
    en quoi ce n'est pas très pro: si c'est un pré-requis, le client peut le comprendre, non ?
    Disons simplement que le fait de passer sous Access constitue un step technologique pour mon client :
    - moralement, je me dois de tout faire pour lui simplifier la tache.
    - techniquement, le fait de lui livrer un outil propre, simple avec aussi peu de contraintes que possibles va dans le sens de pérenniser l'utilisation de l'outil chez mon client et le besoin de support chez nous.

    Citation Envoyé par Phiphi41 Voir le message
    je pense qu'il faudrait faire un test avant pour savoir si le fichier Excel est ouvert en utilisant GetObject comme dans ce fil : https://www.developpez.net/forums/d9...r-deja-ouvert/
    Merci pour le lien, phiphi, j'en ai pris connaissance et j'ai repéré la fonction Excel_Ouvert de pcvesoul (modifiée et notamment pour accepter un argument) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim chemin_fichier As String, T_import as string
    chemin_fichier = "C:/mon_chemin/mon_fichier.xlsx"
    T_import = "zzTimport"
    Nettoyage_Table (T_import) ' nettoyage_Table est une petite sub que j'ai écrite qui vérifie la présence de la table en argument dans la base et qui la supprime si présente.
    Call Excel_Ouvert(chemin_fichier )
    DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel12, T_import, chemin_fichier, False, "maFeuille!"

    et ça marche ! Le transferSpreadhseet fonctionne !
    Merci phiphi et pcvesoul
    Ca marche parce que Excel_Ouvert prévoit un wb.close. Techniquement, je pourrais mettre cette conversation comme résolue.
    Mais pour ma compréhension.... je trouve bizarre que le fichier excel reste ouvert.... Le wb.close est juste sous VBA ?

Discussions similaires

  1. [VBA][Office 2003] Fichier ouvert depuis IE ou Word?
    Par nbaudraz dans le forum VBA Word
    Réponses: 2
    Dernier message: 12/10/2005, 14h27
  2. tester si fichier ouvert
    Par nbelg27 dans le forum Access
    Réponses: 6
    Dernier message: 08/09/2005, 10h19
  3. Réponses: 5
    Dernier message: 13/05/2005, 12h26
  4. Nombre maximum de fichiers ouverts par processus
    Par galinoo dans le forum Windows
    Réponses: 3
    Dernier message: 27/10/2004, 17h47
  5. Nombre de fichiers ouverts simultanément
    Par matrixfan dans le forum C++Builder
    Réponses: 3
    Dernier message: 27/05/2002, 17h47

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