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 :

Macro personnal.xlsb et WorkBook_Open [XL-2013]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 4
    Par défaut Macro personnal.xlsb et WorkBook_Open
    Bonjour,

    Dans le cadre d'une macro qui doit ouvrir tous les liens d'un classeur lorsque celui ci viens d'être ouvert si il se trouve dans un chemin spécifique, je rencontre un problème à l'ouverture.

    Lorsque j'ouvre directement un classeur cela fonctionne cependant lorsque j'ouvre excel vierge sans classeur d'ouvert il lance quand même la macro et m'affiche le message d'erreur 91"bloc with non défini" sur la ligne "Chemin = ActiveWorkbook.Path"

    Cela me parait logique car aucun classeur n'est actif cependant la macro personnal.xlsb ne devrait pas se lancer.

    Je cherche donc une solution à mon problème pour pas que la macro se lance à l'ouverture simple d'excel.

    Voici le code de ThisWorkBook :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public WithEvents AppX As Application
    Private Sub Workbook_Open()
            Set AppX = Application
    End Sub
     
    Private Sub AppX_WorkbookOpen(ByVal wb As Workbook)
       Application.OnTime Now + TimeValue("00:00:05"), "Ouverture"
    End Sub
    Voici le code de la fonction qui est appelé :

    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
     
    Sub Ouverture()
        Dim ihyperLink As Hyperlink
        Dim wSh As Worksheet
        Dim Chemin As String, CheminValide As String
        Chemin = ActiveWorkbook.Path
        'MsgBox (Chemin)
        Chemin = Left(Chemin, 13)
     
        'MsgBox (Chemin)
     
        CheminValide = "T:\Métallerie"
     
        If Chemin = CheminValide Then
        MsgBox ("yes")
            For Each wSh In ActiveWorkbook.Worksheets
                For Each ihyperLink In wSh.Hyperlinks
                    ihyperLink.Follow
                Next
            Next
        End If
     
    End Sub
    Cordialement,

  2. #2
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Je cherche donc une solution à mon problème pour pas que la macro se lance à l'ouverture simple d'excel
    Bonjour,

    Une proposition, à ajouter au début de ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Workbooks.Count =0 then exit sub
    Ca n'empêche pas que la macro se lance mais ça la ferme si aucun classeur n'est ouvert

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 4
    Par défaut
    Citation Envoyé par halaster08 Voir le message
    Bonjour,

    Une proposition, à ajouter au début de ton code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Workbooks.Count =0 then exit sub
    Ca n'empêche pas que la macro se lance mais ça la ferme si aucun classeur n'est ouvert
    Merci pour votre aide et votre temps, cependant j'ai essayé de rajouter ce code dans le mien est voici le problème :
    L'erreur continu car il détecte le "personnal.xlsb" comme un classeur (enfin je suppose), alors je remplace 0 par 1 en pensant que quand je vais ouvrir un autre classeur il va en compter 2 et 1 seul si j'ouvre seulement excel,
    sauf que petit bémole il fait comme si il détectait qu'un seul classeur également quand j'en ouvre un autre donc rien ne se passe.


    En clair :

    "WorkBooks.Count = 0" : Erreur 91, le code s'effectue quand même à l'ouverture d'Excel vierge.
    "WorkBooks.Count = 1" : Rien ne se passe pour l'ouverture d'Excel et également pour l'ouverture d'un autre classeur.

    Cordialement,

  4. #4
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Peut-être, en début de macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not ActiveWorkbook Is Nothing Then

  5. #5
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 682
    Par défaut
    Je ne peux malheureusement pas testé moi même avec la macro sur personal.xlsb, j'ai testé dans un .xlam et ça marchait bien

    sauf que petit bémole il fait comme si il détectait qu'un seul classeur également quand j'en ouvre un autre donc rien ne se passe.
    Bizarre qu'il ne t'en compte pas deux
    As-tu essayé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Workbooks.Count =1 and workbooks(1).name like "personnal.xlsb" then exit sub

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2020
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Indre (Centre)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 4
    Par défaut
    Merci de vos aides, la ligne "If Not ActiveWorkbook Is Nothing Then" marche très bien cependant maintenant j'ai un nouveau problème, lorsque j'ouvre un classeur dans le chemin spécifique et que la condition est vérifié, cela m'ouvre deux fois le même lien pour un pdf, en gros il exécute la macro deux fois comme si la condition "If Not ActiveWorkbook Is Nothing Then" n'était plus prise en compte du fait que un des deux classeur est actif et il exécute la macro pour les deux.

    Cordialement,

  7. #7
    Membre Expert
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 817
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 817
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Essaie de mettre un second test pour ne pas ouvrir deux fois.
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Ouverture()
    Static Ouvert As Boolean
        Dim ihyperLink As Hyperlink
        Dim wSh As Worksheet
        Dim Chemin As String, CheminValide As String
        If Not ActiveWorkbook Is Nothing Then
            If Not Ouvert Then
                Ouvert = True
                Chemin = ActiveWorkbook.Path
            Else
                Ouvert = False
            End If
        End If
    End Sub
    Pour être tout à fait honnête, ne sachant pas vraiment ce que tu fais, je galère à t'aider...

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

Discussions similaires

  1. [XL-2013] Ouvrir un classeur par macro et ignorer Sub Workbook_Open()
    Par Denis_67 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/06/2018, 13h27
  2. Réponses: 7
    Dernier message: 24/10/2015, 14h53
  3. Intégrer un code dans Personnal.xlsb
    Par atk_49 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 29/04/2014, 16h29
  4. Pbl PERSONNAL.XLSB [XL 2007]
    Par Igloobel dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 10/06/2010, 06h58
  5. [XL-2007] Transporter macros PERSONAL.XLSB
    Par LisonLisette dans le forum Excel
    Réponses: 1
    Dernier message: 13/08/2009, 16h53

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