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 :

Rendre invisible des fichiers à l'ouverture


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé Avatar de etorria
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 107
    Par défaut Rendre invisible des fichiers à l'ouverture
    Bonjour,

    Je m'explique : à l'ouverture d'un premier fichier (A), deux autres (B et C) s'ouvrent également afin de mettre à jour le premier !
    Jusque là, pour moi, pas de soucis avec VBA (voir code ci-dessous). Simplement je souhaite, une fois que le premier fichier est mis à jour et que je le ferme, fermer dans le même temps les deux autres.
    J'espère que j'ai été assez clair !


    Merci

    Etorria

    Code saisi dans ThisWorkbook du premier fichier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Workbook_Open()
    Set c = ThisWorkbook
    Application.Workbooks.Open ("Z:\Performance industrielle\RAPPORT QUOTIDIEN USINE\cub_colismvt.xlsm"), , True
    Application.Workbooks.Open ("Z:\Performance industrielle\RAPPORT QUOTIDIEN USINE\cub_interv_maint.xlsm"), , True
    c.Activate
    Set c = Nothing
    With ActiveWorkbook:
    .UpdateRemoteReferences = True:
    .SaveLinkValues = True:
    End With
    Application.AskToUpdateLinks = True
    End Sub

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 972
    Par défaut
    bonsoir
    Je crois au lieu de ca : Set c = Nothing
    à remplacer par : c.Close True

  3. #3
    Membre confirmé Avatar de etorria
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 107
    Par défaut
    Merci mais dans ce cas Excel me propose de fermer le premier fichier en me demandant de l’enregistrer ou pas. Et les deux autres fichiers sont toujours ouverts.
    Je continue à chercher !

  4. #4
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 972
    Par défaut
    débutant en VBA donc attention de mes propositions

    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
    Private Sub Workbook_Open()
    Dim wk1 As Workbook, wk2 As Workbook
    Set c = ThisWorkbook
    Application.Workbooks.Open ("Z:\Performance industrielle\RAPPORT QUOTIDIEN USINE\cub_colismvt.xlsm"), , True
    Set wk1= ActiveWorkbook
    Application.Workbooks.Open ("Z:\Performance industrielle\RAPPORT QUOTIDIEN USINE\cub_interv_maint.xlsm"), , True
    Set wk2= ActiveWorkbook
    c.Activate
    Set c = Nothing
    With ActiveWorkbook:
    .UpdateRemoteReferences = True:
    .SaveLinkValues = True:
    End With
    wk1.Close True
    wk2.Close True
    Application.AskToUpdateLinks = True
    End Sub

  5. #5
    Membre confirmé Avatar de etorria
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 107
    Par défaut
    Merci pour ton aide !
    Tous les fichiers s’ouvrent puis se ferment aussitôt les fichiers B et C sans que je puisse avoir le temps de l’imprimer une fois les mises à jour effectuées.
    En fait les fichiers B et C doivent se fermer après la fermeture du fichier A.
    C’est possible ?
    Encore merci pour ta démarche !
    Etorria

  6. #6
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 972
    Par défaut
    Tu dois normalement supprimer ma ancienne proposition celle de :

  7. #7
    Membre confirmé Avatar de etorria
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 107
    Par défaut
    Oui cela a été fait...

  8. #8
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 972
    Par défaut
    re
    et si tu déclare en haut c comme workbook?? et tu supprime qu'est ce que ça donne ??

  9. #9
    Membre confirmé Avatar de etorria
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 107
    Par défaut
    Ok
    J’essaierai cela demain à mon bureau !
    Bonne soirée
    Etorria

  10. #10
    Membre confirmé Avatar de etorria
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 107
    Par défaut
    Bonjour,

    Les fichiers s'ouvrent normalement mais seul le fichier A reste ouvert et n'a pas le temps de se mettre à jour car les deux autres se ferment aussitôt.

    etorria

  11. #11
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      Dim wk1 As Workbook
     
      Set wk1 = Workbooks.Open("d:\invisible1.xlsx")
      wk1.Windows(1).Visible = False
      ThisWorkbook.Activate
    Cela dit, il serait bien plus intéressant et plus professionnel de travailler en important les données des fichiers "invisibles" via les outils natifs d'Excel que de travailler avec des liaisons (probablement sur formules, ce qui est de la pure aberration).

    Si on souhaite malgré tout travailler avec des liaisons, il serait préférable de placer les chemins dans des cellules d'une feuille "paramètres" que de les coder en dur dans le code...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  12. #12
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 972
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 972
    Par défaut
    Bonjour
    Essayer avec ç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
    23
    24
     Private Sub Workbook_Open()
     Dim wk1 As Workbook, wk2 As Workbook, wk3 As Workbook
     Dim chemin1 As String, fichier1 As String, fichier2 As String
     Application.ScreenUpdating = False
     Set wk3 = ThisWorkbook
     
    chemin1 = "Z:\Performance industrielle\RAPPORT QUOTIDIEN USINE\"
    fichier1 = "cub_colismvt.xlsm"
    Workbooks.Open chemin1 & fichier1
    Set wkB1 = ActiveWorkbook
     
    fichier2 = "cub_interv_maint.xlsm"
    Workbooks.Open chemin1 & fichier2
    Set wkB2 = ActiveWorkbook
    wk3.Activate
    With ActiveWorkbook:
    .UpdateRemoteReferences = True:
    .SaveLinkValues = True:
    End With
    wk1.Close True
    wk2.Close True
    Application.AskToUpdateLinks = True
    Application.ScreenUpdating = True
    End Sub

  13. #13
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Il n'est pas nécessaire de passer par toutes ces contorsions

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    dim wk1 as workbook, wk2 as workbook
    set wk1 = workbooks.open("...")
    wk1.windows(1).visible=false
    set wk2=workbooks.open("...")
    wk2.windows(1).visible = false
    with Thisworkbook
      .updateremotereferences = true
      .savelinkvalues = true
    end with
    wk1.close false
    wk2.close false
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  14. #14
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Par défaut
    Bonjour,


    Cela dit, il serait bien plus intéressant et plus professionnel de travailler en important les données des fichiers "invisibles" via les outils natifs d'Excel que de travailler avec des liaisons (probablement sur formules, ce qui est de la pure aberration).

    Si on souhaite malgré tout travailler avec des liaisons, il serait préférable de placer les chemins dans des cellules d'une feuille "paramètres" que de les coder en dur dans le code...
    Tout a fait d'accord avec ce que t'a dit Pierre Fauconnier

    Mais si effectivement malgré tout tu veux continuer tu peux essayer 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
    16
     
    'avant d'ouvrir les fichiers tu ajoutes cette ligne
    Application.Calculation = xlCalculationManual 'désactive le calcul automatique afin de le gérer
     
    'puis ton code ici
     
     
    Application.Calculate
    Do
        If Application.CalculationState = xlDone Then Exit Do
        DoEvents
    Loop
    wk1.Close True
    wk2.Close True
     
    Application.Calculation =xlCalculationAutomatic
    j'ai pas testé à toi de voir

  15. #15
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    Tous les fichiers s’ouvrent puis se ferment aussitôt les fichiers B et C sans que je puisse avoir le temps de l’imprimer une fois les mises à jour effectuées.
    En fait les fichiers B et C doivent se fermer après la fermeture du fichier A.
    et bien mettre la fermeture de B et C dans le Private Sub Workbook_BeforeClose(Cancel As Boolean) de A
    eric

  16. #16
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Eh oui, Eric... La logique quand même...

    En fait les fichiers B et C doivent se fermer après la fermeture du fichier A.
    Car je vois mal comment A pourrait fermer B et C après avoir été fermé lui-même...

    Je le redis encore une fois tellement ça me chagrine qu'on lie des fichiers Excel par formules: C'est à ne jamais faire!! Ca éviterait bien des soucis. Evidemment, ça demande une bonne conception des classeurs...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  17. #17
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Oui, ils se fermeront juste avant la fermeture de A, pour lui c'est pareil.

  18. #18
    Membre confirmé Avatar de etorria
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 107
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Eh oui, Eric... La logique quand même...



    Car je vois mal comment A pourrait fermer B et C après avoir été fermé lui-même...

    Je le redis encore une fois tellement ça me chagrine qu'on lie des fichiers Excel par formules: C'est à ne jamais faire!! Ca éviterait bien des soucis. Evidemment, ça demande une bonne conception des classeurs...

    Bonjour,

    Je n'ai pas encore effectué de test mais je souhaite en savoir plus sur ces propos !
    Mes connaissances en VBA sont certes limitées, mais je suis ouvert à toutes critiques...raisonnées !
    Donc Mr Fauconnier, quelle(s) solution(s) me proposez-vous si ce n'est des liaisons ?
    Merci
    Etorria

  19. #19
    Membre confirmé Avatar de etorria
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 107
    Par défaut
    Citation Envoyé par Phil Free Voir le message
    Bonjour,




    Tout a fait d'accord avec ce que t'a dit Pierre Fauconnier

    Mais si effectivement malgré tout tu veux continuer tu peux essayer 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
    16
     
    'avant d'ouvrir les fichiers tu ajoutes cette ligne
    Application.Calculation = xlCalculationManual 'désactive le calcul automatique afin de le gérer
     
    'puis ton code ici
     
     
    Application.Calculate
    Do
        If Application.CalculationState = xlDone Then Exit Do
        DoEvents
    Loop
    wk1.Close True
    wk2.Close True
     
    Application.Calculation =xlCalculationAutomatic
    j'ai pas testé à toi de voir
    Bonjour,

    Je vais effectuer le test, je vous tiens au courant dans l'après-midi !
    Etorria

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/07/2014, 16h08
  2. Comment rendre invisibles les fichiers.asv
    Par Pierrot92320 dans le forum MATLAB
    Réponses: 2
    Dernier message: 01/06/2009, 14h10
  3. Rendre invisible des tabpages d'un tabcontrol
    Par belocom dans le forum VB.NET
    Réponses: 10
    Dernier message: 25/05/2007, 15h42
  4. Accès à des fichiers pour ouverture d'une image
    Par noutnout53 dans le forum C++
    Réponses: 4
    Dernier message: 02/06/2006, 15h44
  5. Rendre invisibles des onglets de formulaires
    Par cabort josé dans le forum IHM
    Réponses: 4
    Dernier message: 16/11/2004, 17h48

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