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 :

réinitialiser le .StarUpPosition du userform [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut réinitialiser le .StarUpPosition du userform
    Bonjour a tous
    je suis en train de coder une private sub qui va aller dans toute mes boites de dialogues perso créées avec des userforms
    cette private sub est sensée placer mon userform au niveau de l'object(range ou controls activX d'un autre userform) que lui injecte en argument

    j'explique
    j
    'ai une variable PUBLIC dans le userform ellse se nomme"place"

    pour loader ma boite de dialog(userform)

    je fait :
    exemple dans le module du sheets avec l'evenement beforeright_click

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
        'If Target.Column = 1 Then
            Cancel = True
            With UserForm1
                Set .place = Target
                .Show
            End With
       Unload UserForm1
     'End If
    End Sub
    jusque la c'est pas compliqué la variable place devient la target
    dans le userform en haut de module j'instancie ma variable

    dans le userform dans le initialyse
    je met son StartUpPosition a 0 si place <> nothing
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Initialize()
        If Not place Is Nothing Then Me.StartUpPosition = 0 Else Me.StartUpPosition = 2
    End Sub
    je peux donc placer ma boite de dialog ou bom me semble

    dans le activate si place <> nothing j'appelle donc ma private sub de placement ma boite de dialog
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Activate()
        If Not place Is Nothing Then placement
    End Sub
    ma private sub de placement
    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
     
    Private Sub placement()
        Dim PtoPX#, x#, x2#, y#, y2#, ecW&, ecH&, AWP, ActWVr
        ecW = Me.Width - Me.InsideWidth: ecH = Me.Height - Me.InsideHeight
        Set AWP = ActiveWindow.ActivePane: Set ActWVr = ActiveWindow.VisibleRange: Set app = Application
        Select Case TypeName(place)
        Case "Range"
            If Application.WindowState <> xlMinimized Then
                PtoPX = (AWP.PointsToScreenPixelsY(Cells.Height) - AWP.PointsToScreenPixelsY(0)) / Cells.Height
                x = AWP.PointsToScreenPixelsX(place.Left) / PtoPX    '
                y = AWP.PointsToScreenPixelsY(place.Top) / PtoPX   '
                x2 = (app.Left + app.Width) - ecH: x = IIf(x + Me.Width > x2, x2 - Me.Width, x)
                y2 = (app.Top + app.Height) - ecH * 2: y = IIf(y + Me.Height > y2, y2 - Me.Height, y)
            End If
            Me.Left = x + ecW: Me.Top = y + ecW
        Case "TextBox"
            MsgBox place.Name
        Case "UserForm"
            MsgBox place.Name
        End Select
        Set AWP = Nothing
        Set ActWVr = Nothing
    End Sub
    le query close bloqué bien entendu
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        Cancel = True: Me.Hide: Me.StartUpPosition = 2
    End Sub
    manque de pot je souhaiterais l'appeler sans la variable place de facon a ce que quand il s'affiche il soit au centre
    et c'est la que je n'arrive pas a lui remmetre le starUpPosition a 2 ou 1 voir 3 peu m'importe apres l'avoir affiché avec un target pour place

    et donc quand je fait ceci ci dessous il ne s'affiche pas au centre par defaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub test2()
    'sans placement
        With UserForm1
               .Show
        End With
        Unload UserForm1
    End Sub
    quelqu'un a une idée pour palier a ce soucis ca plus d'une heure que je plombe dessus
    merci pour les retours
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    je suis un triple idiot
    mais bon sang mais c'est bien sur!!!!!
    et si je vidais la variable "place" non ???
    et en plus dans le userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
        Cancel = True: Me.Hide: Set Me.place = Nothing
    End Sub
    puré j'ai honte
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. [XL-2016] Erreur procédure unload pour réinitialiser un userform
    Par Maxence_vba dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 28/12/2018, 08h34
  2. [XL-2016] Userform : problème de réinitialisation
    Par orichedo dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 23/06/2017, 03h03
  3. [XL-2013] Réinitialiser UserForm pour le réutiliser "vierge"
    Par révèr dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/11/2015, 17h00
  4. [XL-2007] Réinitialisation de champs sur userform
    Par Tchebichef dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/02/2014, 18h35
  5. réinitialiser un userform
    Par jbggg dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 22/05/2008, 21h46

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