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 :

[VBA-E]Ecrire dans un fichier sans l'ouvrir (ou dans un fichier invisible)


Sujet :

Macros et VBA Excel

  1. #1
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut [VBA-E]Ecrire dans un fichier sans l'ouvrir (ou dans un fichier invisible)
    bonjour tout le monde,

    J'aimerais remplir une feuille d'un classeur sans que l'on voit ce classeur.
    Pour l'instant j'ai un fichier .xls principal dans lequel est placé mon code qui crée et remplit un autre fichier .xls.
    Jusqu'à maintenant ce deuxième fichier était activé (donc visible...) au moment du remplissage, mais j'aimerais qu'il ne le soit plus.
    J'ai essayé ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks(NomFichier).Application.Visible = False
    mais c'est l'application excel en entier qui devient invisible...
    quelqu'un a t'il une petite idée?
    PS: j'ai vu sur quelques sites que certains pasaient par ADO, mais je n'ai pas tout compris et si il y a plus simple ca m'intéresse...

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 35
    Points : 33
    Points
    33
    Par défaut
    Et sans le .Application ?

  3. #3
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    j'ai une erreur :
    err 438 : propriété ou méthode non gérée par cet objet

  4. #4
    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
    La réponse a été donnée sur le forum. Je ne sais pas trop comment la question avait été formulé mais je regarde.
    Jète un oeil de ton côté.

    A+

    NB -
    Workbooks(NomFichier).Application.Visible = False n'est pas la bonne solution et ne peut de toutes façons pas fonctionner.

  5. #5
    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
    Regarde là http://www.developpez.net/forums/sho...u%E9+Invisible la réponse de bbil de 21h03 et suivants
    Consiste :
    - A empêcher la mise à jour des modifs (Application.ScreenUpdating = False)
    - à activer les feuilles qui t'intéressent (elles ne sont plus masquées mais on ne les voit pas)
    - A faire tes petites affaires sur les feuilles en questions
    - A masquer ces feuilles
    - A effectuer la mise à jour (Application.ScreenUpdating = True)

    Tu dis

    NB - Il existe une autre méthode mais celle-ci devrait être suffisante en VBA d'Excel

  6. #6
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    merci pour le lien, je suis en train d'étudier la proposition.
    Petite question cependant : au vu du code, j'ai l'impression que cela marche pour des feuilles à l'intérieur d'un classeur...
    Or moi c'est le classeur en entier que je voudrais cacher (je ne souhaite pas qu'il apparraise dans la barre des taches), est ce possible?

  7. #7
    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
    Non, c'est valable pour tous les classeurs ouverts, suffit de le désigner.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Workbooks(NomDuClasseur).activate
    A+

  8. #8
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    désolé j'ai du mal exprimer ma demande.
    en fait ce n'est pas seulement les feuilles du classeur que je souhaite cacher mais le classeur lui meme. en d'autres termes l'utilisateur ne doit jamais voir apparaitre ce deuxième classeur, mais je dois cependant le remplir avec les fonctions du premier classeur (qui lui est ouvert et bien visible).
    voici mon code très abrégé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Applexcel.Visible = False
    'creation du deuxième classeur
    ActiveWorkbook.SaveAs Filename:=Dossier & NomFichier
     'traitements et remplissage de   Workbooks(NomFichier).sheets(1)
    Workbooks(NomFichier).Save                          'sauvegarde du classeur rempli
    Workbooks(NomFichier).Close
    Application.Visible = True
    C'est pour cela que j'utilisais application.visible= false, mais malheuresement cela cache excel et tous ses classeurs, or moi je ne veux en masquer qu'un seul (celui qui vient d'etre créé)...

  9. #9
    Membre habitué
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 137
    Points : 130
    Points
    130
    Par défaut
    Je vais peut-être dire une bêtise...
    Mais est-ce que tu peux pas ouvrir une autre application excel pour le fichier que tu veux cacher, comme ça tu caches ton 2ème excel seulement?
    Je précise que je n'ai pas testé et que je ne sais pas si c'est possible, c'est juste une idée comme ça...

  10. #10
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    tiens pour masquer/demasquer toutes les fenêtres contenant un classeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub ClasseurVisible(wk As Workbook, bVisible As Boolean)
      Dim w As Window
      For Each w In wk.Windows
        w.Visible = bVisible
       Next
    End Sub
    Appel de la procédure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Sub testMasque()
     ClasseurVisible ThisWorkbook, False
    End Sub
    Sub testAffiche()
     ClasseurVisible ThisWorkbook, False
    End Sub

  11. #11
    Membre éprouvé
    Avatar de bandit boy
    Profil pro
    Inscrit en
    Février 2006
    Messages
    916
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 916
    Points : 1 007
    Points
    1 007
    Par défaut
    en fait je fais faire autrement. En m'inspirant de l'idée de linda15975, je vais essayer d'utiliser plusieurs applications Excel. pour l'instant je fais quelques tests et ca donne de bons résultats!
    Merci a tous pour vos suggestions (que je garde en mémoire sait'on jamais...)

  12. #12
    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
    En m'inspirant de l'idée de linda15975, je vais essayer d'utiliser plusieurs applications Excel. pour l'instant je fais quelques tests et ca donne de bons résultats!
    Je souhaite pour toi que les utilisateurs n'aient jamais de Perso.xls sinon ils vont se poser des questions quand tu voudras ouvrir ta seconde appli. La solution bbil est de loin la meilleure. Je l'utilise depuis 8 ans et elle n'a jamais posé le moindre problème

    Mais c'est toi qui choises

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

Discussions similaires

  1. [Toutes versions] ERROR 52 VBA, Ouverture d'un fichier sans l'ouvrir de source externe
    Par studying dans le forum Excel
    Réponses: 0
    Dernier message: 14/01/2013, 12h29
  2. Savoir le nombre de fichiers dans un dossier sans l'ouvrir.
    Par Alexgal dans le forum Configuration
    Réponses: 0
    Dernier message: 25/02/2010, 18h41
  3. Réponses: 2
    Dernier message: 20/03/2008, 10h38
  4. Ouvrir ficher dans editeur texte sans boite dialogue
    Par 78alex78 dans le forum Langage
    Réponses: 2
    Dernier message: 30/10/2007, 13h23
  5. Réponses: 3
    Dernier message: 02/03/2006, 10h49

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