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-Excel] Bug dans Import de boite de dialogue incompréhensible


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut [VBA-Excel] Bug dans Import de boite de dialogue incompréhensible
    bonjour,
    j'ai fait un petit programme qui ouvre une boite de dialogue.
    Mon code 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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    Sub tt()
     
    Dim stChemin, stNomFichier(1), stUrl As String
    stChemin = "C:\tt\"
    stNomFichier(0) = "toto"
    stNomFichier(1) = "fils"
    stExtenstion = ".frm"
     
    bt = bIsDejaOuvert(stNomFichier(0))
     
    If Not bt Then
        For i = 0 To 1
            stUrl = stChemin & stNomFichier(i) & stExtenstion
            ThisWorkbook.VBProject.VBComponents.Import (stUrl)
        Next
    End If
        toto.Show
    End Sub
     
    Function bIsDejaOuvert(ByVal stFileName As String) As Boolean
    'Fonction ok !
    bIsDejaOuvert = False
    With ThisWorkbook.VBProject.VBComponents
        i = 1
        While (i <= .Count) And bIsDejaOuvert = False
            If LCase(.Item(i).Name) = LCase(stFileName) Then bIsDejaOuvert = True
            i = i + 1
        Wend
    End With
     
    End Function
    Le problème est le suivant. Quand les feuilles ne sont pas chargées, il les charge correctement, mais refuse de lancer la boite de dialogue nommée toto.
    J'ai une "erreur 424 : Objet requis". Or mes boites de dialogues sont bel et bien chargées. je ne comprends pas ce bug.
    En plus ça fonctionne très bien quand les feuilles sont déjà importées !

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    Tu peux utiliser cette syntaxe


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim stUrl As String
     
    stUrl = "C:\toto.frm"
    ThisWorkbook.VBProject.VBComponents.Import (stUrl)
     
    VBA.UserForms.Add("toto").Show


    michel

  3. #3
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    Merci C'est au poil!!!
    juste deux questions subsidiaires.
    Si ce n'est pas une boite du dialogue mais un module et que je veuille lire une fonction qui est dedans?

    et j'aimerai savoir comment je puis faire pour retirer après l'avoir utilisé cette boite de dialogue?
    je n'ai trouvé que ça est c'est pas super agréable a lire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub FermeMoi()
        ThisWorkbook.VBProject.VBComponents.Remove ActiveWorkbook.VBProject.VBComponents(stNomFichier)
    End Sub

  4. #4
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    Tu peux aussi l'écrire de cette manière (mais le code reste identique)


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    With ActiveWorkbook.VBProject
        .VBComponents.Remove .VBComponents("UserForm1")
    End With


    michel

  5. #5
    Membre éclairé
    Profil pro
    chomeur
    Inscrit en
    Août 2006
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : chomeur

    Informations forums :
    Inscription : Août 2006
    Messages : 343
    Par défaut
    Merci.
    Mais en fait je vois que j'ai plusieurs soucis.
    Si c'est un module qui utilise une classe, c'est fort pénalisant... car dans ma classe je dois prévoir tous les cas possibles et imaginables...

    Comment faire alors pour mettre un module et une classe?

Discussions similaires

  1. [Vba-E]Bug dans mon code
    Par antoinelavigne dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 19/06/2006, 14h55
  2. [VBA-E] Bug dans la concaténation de String
    Par krollkop dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 01/06/2006, 11h41
  3. [VBA excel]graph dans un userform .._
    Par SpaceFrog dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 31/05/2006, 18h45
  4. [VB6][Excel] bug dans la duplication des zones nommees
    Par hirochirak dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 30/05/2006, 13h37
  5. [VBA] [EXCEL] Texte dans graphique
    Par pier dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/12/2005, 16h40

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