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 :

Disparition à l'ouverture d'un userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 43
    Par défaut Disparition à l'ouverture d'un userform
    Bonjour à tous,

    J'ai un fichier Excel qui ouvre une userform automatiquement.

    Le problème c'est que si d'autres fichiers Excel sont déjà ouverts, ils disparaissent du bureau et de la barre du menu démarrer et il faut aller les réouvrir pour pouvoir les récupérer.

    D'ou ca peut venir ?

  2. #2
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    salut

    et avec quel code (tant celui d'avant l'ouverture de ton UserForm.... voire d'après cette ouverture ..., que celui qui s'exécute à l'ouverture de ton UserForm) ?
    Rien ne disparaît sans motif, en général.

    Sans ce(s) code(s) : impossible de te répondre. Tout peut arriver, y compris (cas particulier, mais pas le seul) l'utilisation d'un End intempestif alors qu'un "hameçon" (sous-classement par API) a été créé.

  3. #3
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 43
    Par défaut
    Voici le code d'initialisation, après c'est 3 combobox et des évènements sur des boutons avec quelques boucles, rien de très recherché (600 lignes) donc je pense pas que ca soit utile de les mettre, à voir ...

    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 Userform_Initialize()
    Dim j As Integer
    Dim MonDico As Object
     
    With Worksheets("Base")
        Set MonDico = CreateObject("Scripting.Dictionary")
        For j = 5 To 3353
            If .Range("A" & j).Value <> "" And Not MonDico.exists(.Range("A" & j).Value) Then MonDico(.Range("A" & j).Value) = .Range("A" & j).Value
        Next j
        Me.ComboCountry.List = MonDico.items
        MonDico.RemoveAll
     
        For j = 3355 To 3677
            If .Range("A" & j).Value <> "" And Not MonDico.exists(.Range("A" & j).Value) Then MonDico(.Range("A" & j).Value) = .Range("A" & j).Value
        Next j
        Me.ComboFiliale.List = MonDico.items
        Set MonDico = Nothing
    End With
    ETIC.Visible = False
    Label95.Visible = False
    End Sub

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    ce code n'est pas le responsable.
    (je t'ai parlé d'autres instructions, que je ne vois pas)

  5. #5
    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.

    Je suppose que le userform est initialisé à l'ouverture du fichier.

    Il serait donc pertinent de donner le code de l'évènement OPEN du fichier
    "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...
    ---------------

  6. #6
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 43
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Salut.

    Je suppose que le userform est initialisé à l'ouverture du fichier.

    Il serait donc pertinent de donner le code de l'évènement OPEN du fichier
    Le voici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Workbook_Open()
    Application.Visible = False
    Load UserForm
    UserForm.Show
    End Sub

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    Rien de tout cela n'est non plus le responsable de :
    Le problème c'est que si d'autres fichiers Excel sont déjà ouverts, ils disparaissent du bureau et de la barre du menu démarrer et il faut aller les réouvrir pour pouvoir les récupérer.
    à moins que tu ne décrives mal le phénomène observé.

    Et autres questions (on ne sait jamais) : utilises-tu des Addins, des ocx ? Lesquels, le cas échéant ?

  8. #8
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 43
    Par défaut
    Citation Envoyé par babaothe Voir le message
    Rien de tout cela n'est non plus le responsable de :

    à moins que tu ne décrives mal le phénomène observé.

    Et autres questions (on ne sait jamais) : utilises-tu des Addins, des ocx ? Lesquels, le cas échéant ?

    Pour etre précis, dès que ma userform s'ouvre, tous les fichiers excel se masquent (ils ne se ferment pas). Et si je vais ouvrir mon fichier il se réaffiche en me laissant le message "le fichier est déjà ouvert voulez vous le réouvrir ?". La je clique non et le fichier se réaffiche ...

    Non je n'utilise rien de celà, en tout cas je ne sais pas ce que c'est...

  9. #9
    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
    Dans le code de l'évènement OPEN, je ne vois rien qui justifie la fermeture des classeurs ouverts...

    Par contre, il faut faire attention à ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    ActiveWorkbook.Close savechanges:=True
    End Sub
    Ce code ferme le classeur actif, qui n'est pas forcément le classeur qui contient le userform. A mon avis, tu aurais intérêt à remplacer ActiveWorkbook par ThisWorkBook qui est, par défaut, le nom du classeur qui contient la macro en train de s'exécuter...

    Tu pourrais aussi avancer en pas à pas ou déboguer par bloc pour voir quand la fermeture intempestive intervient.
    "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...
    ---------------

  10. #10
    Inactif  
    Profil pro
    Inscrit en
    Février 2010
    Messages
    517
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 517
    Par défaut
    C'est TRES loin de la description que tu donnais !
    Alors : regarde tes Visible (un par un)
    A commencer par celui-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.Visible = False

  11. #11
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 43
    Par défaut
    C'est parti ....

    PS : j'ai remplacé ActiveWorkbook par ThisWorkBook mais ca ne fait rien

  12. #12
    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
    Qu'est-ce qui est parti?

    Qu'as-tu fait de la ligne "Application.visible = 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...
    ---------------

  13. #13
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 43
    Par défaut
    c'est parti facon de dire je commence à éplucher mes "visible"

    Si j'enlève le "Application.visible = false" je n'ai plus le problème mais je ne veux pas que les utilisateurs voient la base de données, ils doivent seulement voir la userform ... En fait il faudrait un application.visible = false mais seulement pour ce classeur ...

  14. #14
    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
    Tu peux rendre un classeur invisible
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonClasseur.Windows(1).Visible=False
    Tu remplaces alors MonClasseur par l'objet qui correspond au classeur que tu veux masquer. J'ai considéré ici le cas simple où tu n'as qu'une seule fenêtre sur un classeur. Si tu as plusieurs fenêtres, tu devras boucler.

    Note cependant que l'utilisateur pourra afficher le classeur via les commandes du ruban ou de la barre d'outils.
    "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...
    ---------------

  15. #15
    Membre averti
    Inscrit en
    Octobre 2010
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 43
    Par défaut
    J'ai mis à la place de "MonClasseur" : "worksheets("monfichier.xls")" et il me renvoie une erreur 1004 "la méthode worksheets de l'objet global a échoué"

  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
    WORKSHEETS renvoie la collection des feuilles d'un classeur.
    WORKBOOKS renvoie la collection des classeurs ouverts dans l'instance d'Excel
    "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...
    ---------------

Discussions similaires

  1. Ouverture d'un userform automatiquement à l'ouverture d'un document
    Par TaleMaker dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 22/01/2009, 18h24
  2. placer le curseur dans une textbox défini à l'ouverture d'un userform
    Par jffaber dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/08/2008, 17h38
  3. Débutant : ouverture et fermeture UserForm
    Par zblook dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/11/2007, 14h20
  4. [vba excel] lancer 3 module a l'ouverture de mon userform
    Par CIBOOX dans le forum Macros et VBA Excel
    Réponses: 19
    Dernier message: 22/02/2007, 18h50
  5. VBA : ouverture d'un Userform sans passer par excel
    Par jemigo dans le forum Macros et VBA Excel
    Réponses: 28
    Dernier message: 23/11/2005, 16h28

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