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 :

Afficher uniquement Userform au lancement du programme.


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Par défaut Afficher uniquement Userform au lancement du programme.
    Bonsoir comment allez vous
    mon code refuse de me masquer les feuilles et d'afficher uniquement le userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_Open()
    Application.WindowState = xlMaximized
    ThisWorkbook.Application.Visible = False
    Load UserForm5
    UserForm5.Show 0
    End Sub
    Merci de bien vouloir m'aider

  2. #2
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    mon code refuse de me masquer les feuilles et d'afficher uniquement le userform
    Si tu souhaites voir ton formulaire adapté à ton écran, alors il s'agit d'un développement particulier.

    D'autre part, je ne comprends pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Application.Visible = False
    Enfin, pour ton information, le formulaire est chargé avec ton classeur.
    Il suffit juste de le montrer.

    Sur les formulaires, tu peux consulter cet espace, ainsi que celui-ci.

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Par défaut
    merci pour la reponse
    je voudrais juste qu'au lancement les feuilles excels soient masqué et que ce soit que le userform qui s'affiche

    raison pour laquelle j'ai mis ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ThisWorkbook.Application.Visible = False

  4. #4
    Expert confirmé
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Billets dans le blog
    7
    Par défaut
    Salut,

    Ce que tu cherches, en fait, c'est d'adapter la dimension du formulaire et de ses contrôles afin qu'il occupe l'intégralité de l'écran.

    Voici le code que j'utilise.
    Il doit quelque peut dater.
    D'autres solutions peuvent exister.

    A adapter

    Dans un module standard.
    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    Public Declare Function ShowWindow Lib "user32" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Public Const SW_MAXIMIZE = 3
     
    Private Declare Function GetSystemMetrics Lib "user32" _
    (ByVal nIndex As Long) As Long
    Private Const SM_CXSCREEN = 0 'Screen width
    Private Const SM_CYSCREEN = 1 'Screen height
     
    Private Declare Function GetDC Lib "user32" _
    (ByVal hwnd As Long) As Long
    Private Declare Function GetDeviceCaps Lib "gdi32" _
    (ByVal Hdc As Long, ByVal nIndex As Long) As Long
    Private Declare Function ReleaseDC Lib "user32" _
    (ByVal hwnd As Long, ByVal Hdc As Long) As Long
    '
    Private Const LOGPIXELSX = 88 'Pixels/inch in X
    '
    'A point is defined as 1/72 inches
    Private Const POINTS_PER_INCH As Long = 72
     
    Declare Function GetSystemMetrics32 Lib "user32" _
    Alias "GetSystemMetrics" (ByVal nIndex As Long) As Long
     
    'The width of the screen, in pixels
    Public Function ScreenWidth() As Long
    ScreenWidth = GetSystemMetrics(SM_CXSCREEN)
    End Function
     
    'The height of the screen, in pixels
    Public Function ScreenHeight() As Long
    ScreenHeight = GetSystemMetrics(SM_CYSCREEN)
    End Function
     
    'The size of a pixel, in points
    Public Function PointsPerPixel() As Double
    Dim Hdc As Long
    Dim lDotsPerInch As Long
    Hdc = GetDC(0)
    lDotsPerInch = GetDeviceCaps(Hdc, LOGPIXELSX)
    PointsPerPixel = POINTS_PER_INCH / lDotsPerInch
    ReleaseDC 0, Hdc
    End Function
    Dans le module affecté au formulaire

    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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    Option Explicit
     
    Private Sub UserForm_Initialize()
     
    'Empêcher croix de fermeture
    'Dim hWnd As Long
    'hWnd = FindWindowA("Thunder" & IIf(Application.Version Like "8*", "X", "D") & "Frame", Me.Caption)
    'SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) And &HFFF7FFFF
     
    '-------------------------------------------------------------
    'Déclaration des variables RX et RH
    Dim RW As Single, RH As Single
     
    'Calcule le rapport de l'UserForm et la taille de l'écran
    RW = 0.98 * ScreenWidth * PointsPerPixel / Me.Width
    RH = 0.98 * ScreenHeight * PointsPerPixel / Me.Height
    'Debug.Print RW
    'Debug.Print RH
     
    'Met l'UserForm en plein écran
    Me.Width = 0.98 * ScreenWidth * PointsPerPixel
    Me.Height = 0.98 * ScreenHeight * PointsPerPixel
     
    'Déclaration de la variable Ctl qui correspond aux contrôles de ton UserForm
    Dim Ctl As MSForms.Control
     
    'Permet de redimensionner tous tes contrôles présent sur l'UserForm en fonction de la taille de l'userForm et de la taille de l'écran
    For Each Ctl In Me.Controls
     
            With Ctl
     
                    .Move .Left * RW, .Top * RH, .Width * RW, .Height * RH
                    If TypeOf Ctl Is MSForms.TextBox Or TypeOf Ctl Is MSForms.Label Then
                            'Ajuste la taille de police
                            With .Font
                                    .Size = .Size * RW / RH * 1.75
                            End With
                    End If
     
            End With
     
    Next Ctl
     
    End Sub
    Bonne soirée à toi. Bonne soirée au Forum.

  5. #5
    Membre Expert Avatar de mfoxy
    Homme Profil pro
    Automation VBA
    Inscrit en
    Février 2018
    Messages
    752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Belgique

    Informations professionnelles :
    Activité : Automation VBA
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Février 2018
    Messages : 752
    Par défaut
    Bonjour,

    Une autre manière de procéder serait.
    1 Dans le Workbook_Open d' afficher le userform.
    2 Dans Userform_Initialize, un test sur les classeurs ouvert, caché le classeur que vous ne voulez pas voir.
    3 Reafficher le classeur à la fermeture du Usf

    Ce qui Donnerait quelque chose du genre.
    (à tester dans une copie du fichier bien sûr)

    Code dans ThisWorkbook, à modifier nom du Usf.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Workbook_Open()
        UserForm1.Show 0 ' ouverture non modal 
    End Sub
    Code du Userform
    À modifier bien NomduWb par le nom et extension de votre fichier

    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
     
    Private Sub UserForm_Initialize()
        If Workbooks.Count > 1 Then
            Windows("NomduWb.xslm").Visible = False
        Else
            Application.Visible = False
        End If
    End Sub
     
    Private Sub UserForm_Terminate()
        If Workbooks.Count > 1 Then
            Windows("NomduWb.xslm").Visible = True
        Else
            Application.Visible = True
        End If
    End Sub

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2020
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Mali

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2020
    Messages : 90
    Par défaut
    Bonjour comment allez vous ? je cherchais juste a ouvrir le fichier sans feuilles excel derriere (seulement le userform)
    j'ai revu mon code et j'ai vu que j'avais fais erreur dans les deux premieres lignes.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Workbook_Open()
    Application.WindowState = xlMinimized
    Application.Visible = False
    Load UserForm5
    UserForm5.Show 0
    End Sub
    c'est bon mon probleme est resolu
    mais je ne comprends pas trop vos codes, pouvez vous m'expliquez ce que ça fait exactement

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

Discussions similaires

  1. Créer un object au premier lancement du programme ?
    Par david06600 dans le forum Langage
    Réponses: 1
    Dernier message: 01/03/2006, 13h04
  2. Réponses: 1
    Dernier message: 01/12/2005, 00h14
  3. Delphi 2005 Indy 9 Erreur au lancement du programme
    Par Houben Jacques dans le forum Web & réseau
    Réponses: 4
    Dernier message: 08/11/2005, 13h05
  4. Réponses: 7
    Dernier message: 02/09/2005, 16h15
  5. [DCOM] Accès refusé au lancement du programme à distance
    Par raoulmania dans le forum Web & réseau
    Réponses: 7
    Dernier message: 22/06/2005, 14h01

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