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 :

DisplayAlerts ne fonctionne pas en cas de lancement de plusieurs fichiers Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2015
    Messages : 10
    Par défaut DisplayAlerts ne fonctionne pas en cas de lancement de plusieurs fichiers Excel
    Bonjour,

    Je possède un fichier Excel Fichier_A effectuant entre autres l'ouverture et l'alimentation d'un autre fichier Excel Fichier_B.

    Lors de l'ouverture de Fichier_B, plusieurs vérifications sont faites, notamment pour vérifier que le fichier a pu être ouvert en écriture.

    Le code utilisé est le suivant (simplifié), avec utilisation du DisplayAlerts = False afin de ne pas afficher le message "Fichier_B est vérouillé en modification par XXX... Lecture seule / Notifier / Annuler" :
    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
    31
    32
    33
    Function Maj_commentaires(rep_fic As String, nom_fic As String)
     
    Dim fic_principal As String
     
    fic_principal = ActiveWorkbook.Name
     
    'Ouverture du fichier commentaires
    On Error GoTo gestionErreur
    Application.DisplayAlerts = False
    Workbooks.Open Filename:=rep_fic & nom_fic
    Application.DisplayAlerts = True
    GoTo suiteTraitement
     
    gestionErreur:
        If Err.Number = 1004 Then
            Run Ecriture_ligne_erreur(nom_fic, "Commentaire fichier absent")
        Else
            Run Ecriture_ligne_erreur(nom_fic, "Commentaire erreur inconnue")
        End If
        Exit Function
     
    suiteTraitement:
    On Error GoTo 0
     
    'Vérification que le fichier a été ouvert en écriture
    If Workbooks(nom_fic).ReadOnly Then
        Workbooks(nom_fic).Close savechanges:=False
        Windows(fic_principal).Activate
        Run Ecriture_ligne_erreur(nom_fic, "Commentaire deja ouvert")
        Exit Function
    End If
     
    [Reste du traitement...]
    Jusque là, tout fonctionne parfaitement.



    Là où j'ai un problème, c'est que la macro principale de Fichier_A est appelée via un autre fichier Fichier_C. Et dans ce cas, mon displayAlerts entourant l'ouverture du Fichier_B ne fonctionne plus : si Fichier_B est vérouillé en écriture, j'obtiens systématiquement le message "Fichier_B est vérouillé en modification par XXX... Lecture seule / Notifier / Annuler".
    Ce qui est trés génant, puisque mon traitement stoppe dans l'attente d'une réponse utilisateur...

    Le code (simplifié) du fichier Fichier_C est le suivant :
    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
    Private Sub Workbook_Open()
     
    Dim CeFichier, CetteFeuille As String
    Dim Repertoire As String
     
    CeFichier = ActiveWorkbook.Name
    CetteFeuille = ActiveSheet.Name
    Repertoire = Sheets(CetteFeuille).Range("C8").Value
     
    Workbooks.Open Filename:=Repertoire & "FichierA", IgnoreReadOnlyRecommended:=True
    Workbooks(FichierA).Application.Run "'FichierA'!Mise_A_jour_globale"
    Application.DisplayAlerts = False
    ActiveWorkbook.Save
    ActiveWorkbook.Close
    Application.DisplayAlerts = True
    Windows(CeFichier).Activate
     
    ActiveWorkbook.Save
    Application.Quit
     
    End Sub
    (J'ai, dans le doute, tenté d'encadrer l'ouverture du Fichier_A par un displayAlerts false/true, mais cela ne change rien).


    La procédure principale (simplifiée) du Fichier_A est la suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Sub Mise_a_jour_globale()
     
    Application.ScreenUpdating = False
     
    [...]
    Run Maj_commentaires(Sheets("Paramétrage").Cells(9, 2), Sheets("Paramétrage").Cells(9, 1))
    Run Maj_commentaires(Sheets("Paramétrage").Cells(11, 2), Sheets("Paramétrage").Cells(11, 1))
    Run Maj_commentaires(Sheets("Paramétrage").Cells(12, 2), Sheets("Paramétrage").Cells(12, 1))
    [...]
     
    Application.ScreenUpdating = True
     
    End Sub

    Si quelqu'un à une idée ? Merci

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Dans la code du Fichier_C, essaie de remonter la ligne 12 au dessus de la ligne 11.

  3. #3
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2015
    Messages : 10
    Par défaut
    Merci pour ta réponse.
    Malheureusement, cela ne fonctionne pas mieux
    J'avais tenté cette action, me disant que c'était peut être le fichier "père" qui avait la main pour le displayAlerts, sans résultats...

    Je dois dire que je suis un peu embété, je ne comprend vraiment pas d'où peu venir ce problème malgrés une pratique régulière des macros...

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Run "'FichierA'!Mise_A_jour_globale"
    au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks(FichierA).Application.Run "'FichierA'!Mise_A_jour_globale"

  5. #5
    Membre du Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Janvier 2015
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Janvier 2015
    Messages : 10
    Par défaut
    Merci.
    Malheureusement, cela ne fonctionne pas non plus.

    En général, j'utilise toujours Application.Run directement.
    J'ai mis Workbooks(FichierA).Application.Run "'FichierA'!Mise_A_jour_globale" en me disant que ça résoudrait mon problème, mais ce n'est pas le cas : aucune des deux commandes ne résout mon problème

    Si tu as d'autres pistes, je suis preneur

  6. #6
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    J'ai essayé de faire la même chose avec 3 classeurs et je ne reproduis pas ton problème... Je peux te les faire parvenir.

Discussions similaires

  1. Réponses: 3
    Dernier message: 15/07/2010, 06h53
  2. Lancement d'un fichier Excel à partir d'Access
    Par Golork dans le forum Access
    Réponses: 5
    Dernier message: 18/03/2010, 11h45
  3. Réponses: 10
    Dernier message: 28/08/2008, 09h15
  4. Réponses: 9
    Dernier message: 10/05/2007, 10h56
  5. Paramètres au lancement d'une fichier Excel
    Par lerico dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/12/2005, 19h51

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