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

Access Discussion :

Formulaire mauvais positionnement après DoCmd.MoveSize 0,0


Sujet :

Access

  1. #1
    Membre du Club
    Homme Profil pro
    Consultant en Gestion
    Inscrit en
    Mars 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2014
    Messages : 40
    Points : 45
    Points
    45
    Par défaut Formulaire mauvais positionnement après DoCmd.MoveSize 0,0
    Bonjour à tous,

    Je n'arrive pas à bien positionner le formulaire en haut à gauche de l'écran avec la commande <DoCmd.MoveSize 0, 0> : le formulaire se place en effet en haut à gauche mais pas exactement à gauche (il y a un léger écart de quelques twips entre le bord de l'écran et le bord gauche du formulaire).

    Je suis obligé de "forcer" la position avec un <DoCmd.MoveSize -148, 0> ... Embêtant car je voudrais bien travailler sur n'importe quel écran.
    voir code ci-dessous .
    Pour info : le formulaire est ici dimensionné pour prendre toute la largeur de l'écran et toute la hauteur disponible en laissant la barre des tâches visible (code tiré à partir d'une étude attentive de différents tutoriels dont celui de l'excellent Maitre LELOUP).

    Comme d'habitude : Quelqu'un, quelque part, SAIT !
    Grand merci à ceux qui partagent
    Unlucky Luke


    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
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
     
    ' ****************************
    ' Formulaire *******************
    ' ****************************
    Private Sub Form_Current()
     
    Call TailleFormulaire(Application.Forms(Me.Name))
     
    ' DoCmd.MoveSize 0, 0 (marche pas bien)
     
    ' DoCmd.MoveSize BarreTache.Gauche, BarreTache.Haut (marche pas mieux)
     
    DoCmd.MoveSize -148, 0
     
    End Sub
     
     
     
    ' ****************************
    ' Module **********************
    ' ****************************
    Option Compare Database
     
     
    Public Type RECTANGLE
            Left As Long
            Top As Long
            Right As Long
            Bottom As Long
    End Type
     
    Public Type POSITION
        Gauche As Long
        Haut As Long
        Largeur As Long
        Hauteur As Long
    End Type
     
     
    Public Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECTANGLE) As Long
     
    Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
     
    Public Declare Function GetSystemMetrics Lib "user32" (ByVal nIndex As Long) As Long
     
     
     
    '*****************************************
    ' ** Dimensions de la Barre des Taches **
    '*****************************************
     
    Public Function BarreTache() As POSITION
    Dim RectangleBarre As RECTANGLE
    Dim barreTemp As POSITION
     
       'Rectangle de la Barre des Taches
       GetWindowRect FindWindow("Shell_traywnd", ""), RectangleBarre
     
       'Dimensions de la Barre des Taches
       With barreTemp
           .Gauche = RectangleBarre.Left
           .Haut = RectangleBarre.Top
           .Largeur = RectangleBarre.Right - RectangleBarre.Left
           .Hauteur = RectangleBarre.Bottom - RectangleBarre.Top
       End With
     
       BarreTache = barreTemp
     
    End Function
     
    '*****************************************
    ' ***** Taille du Formulaire courant *****
    '*****************************************
     
    Public Sub TailleFormulaire(Formulaire As Form)
     
    Formulaire.InsideWidth = BarreTache.Largeur * 15
    Formulaire.InsideHeight = (GetSystemMetrics(1) - BarreTache.Hauteur) * 15
     
    End Sub

  2. #2
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Bonjour,

    Tout ce qui est excessif est insignifiant
    Talleyrand

    Mets la propriété Fenêtre indépendante de ton formulaire à oui.

    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  3. #3
    Membre du Club
    Homme Profil pro
    Consultant en Gestion
    Inscrit en
    Mars 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2014
    Messages : 40
    Points : 45
    Points
    45
    Par défaut
    Bonjour Maître,

    J'ai bien vu cette remarque dans ton tutoriel. Et j'ai creusé. Mais je ne trouve pas cette propriété du formulaire par la voie standard.
    Sous Access 2013 la fenêtre propriétés du formulaire ne présente pas de choix pour Fenêtre Indépendante oui/non
    (voir captures d'écran jointes)

    J'ai essayé la plupart des différentes combinaisons d'autres propriétés concernant la fenêtre pour le même résultat : le formulaire reste décalé par rapport au bord gauche de l'écran.


    Peut-être est-il quand même possible de contourner cette lacune (si la propriété Fen Independante existe toujours pour Form) et de lui affecter la valeur Oui ou Non via du code??
    (ce qui me sauverait, si bien sûr, le problème vient de là)

    Merci quand même à toi
    Bon Week-End




    Nom : Access2013 01.png
Affichages : 311
Taille : 124,1 KoNom : Access2013 02.png
Affichages : 330
Taille : 12,8 Ko

  4. #4
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Essaie en exécutant cette sub logée dans un module.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Option Compare Database
    Option Explicit
     
     
    Public Sub ModifFen(NomDuFormulaire As String)
      DoCmd.OpenForm (NomDuFormulaire), acDesign
      Forms(NomDuFormulaire).PopUp = True
      DoCmd.Close acForm, NomDuFormulaire, acSaveYes
    End Sub
    Pour l'exécuter, ouvre la fenêtre d'exécution (<CTRL + G>)

    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  5. #5
    Membre du Club
    Homme Profil pro
    Consultant en Gestion
    Inscrit en
    Mars 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2014
    Messages : 40
    Points : 45
    Points
    45
    Par défaut
    Ca ne donne rien. Le décalage à gauche existe toujours.

    J'ai testé mes autres formulaires, ils s'ouvrent tous en mode fenêtre indépendante (Me.PopUp = True) et subissent le même décalage.

    à noter : le DoCmd.Maximise agit très bien, le formulaire prend tout l'écran mais je perd l'accès à la barre des tâches.

  6. #6
    Rédacteur/Modérateur

    Avatar de ClaudeLELOUP
    Homme Profil pro
    Chercheur de loisirs (ayant trouvé tous les jours !)
    Inscrit en
    Novembre 2006
    Messages
    20 594
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de loisirs (ayant trouvé tous les jours !)
    Secteur : Finance

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 594
    Points : 282 192
    Points
    282 192
    Par défaut
    Désolé : je dispose d'une version 2000.

    Espérons qu'un autre forumeur plus moderne prenne le relais.

    Bonne chance... unlucky
    SVP ne m'envoyez pas de messages privés pour poser des questions techniques, vous n'aurez pas de réponse !

  7. #7
    Membre du Club
    Homme Profil pro
    Consultant en Gestion
    Inscrit en
    Mars 2014
    Messages
    40
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant en Gestion
    Secteur : Conseil

    Informations forums :
    Inscription : Mars 2014
    Messages : 40
    Points : 45
    Points
    45
    Par défaut
    C'est dur à admettre Maître. merci quand même pour tes pistes et bravo pour tes tutoriels.

    Pour ceux qui suivent et sont plus ou moins au courant de mon pb :
    quand j'effectue les commandes suivantes et que je teste la position du formulaire j'obtiens :

    avec DoCmd.MoveSize 0, 0 >>>>>>> PositionFormulaire.Gauche = 0 et PositionFormulaire.Haut = 0
    ce qui est normal, sauf que le formulaire n'est pas aligné en haut à gauche de l'écran

    et avec DoCmd.MoveSize -149, 0 >>>>>>> PositionFormulaire.Gauche = -9 et PositionFormulaire.Haut = 0
    le formulaire est aligné en haut à gauche de l'écran

    avec DoCmd.Maximize >>>>>>> PositionFormulaire.Gauche = -8 et PositionFormulaire.Haut = -8 !!!!
    le formulaire est bien aligné en haut à gauche et prend tout l'écran

    la résolution de l'écran à pour caractéristique 14,8503... Twip/pixel dans la largeur
    je peux comprendre le passage de - 8 à - 9 justifié par position gauche passant (théoriquement) de 0 à -149
    je ne comprend pas l'origine de ce décalage à gauche

    et je ne comprend plus rien en ce qui concerne la position à partir du haut de l'écran avec DoCmd.Maximize !!!!


    HELP !!!!!!!
    ULK


    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
    Private Sub Form_Current()
     
    Call TailleFormulaire(Application.Forms(Me.Name))
     
    DoCmd.Maximize
     
    PositionFormulaire (Me.Name)
     
    End Sub
     
     
    '*****************************************
    ' ***** Taille du Formulaire courant *****
    '*****************************************
    Public Function PositionFormulaire(NomFormulaire As String) As POSITION
    Dim RectangleFormulaire As RECTANGLE
     
    'Rectangle de la fenêtre du formulaire
    GetWindowRect Forms(NomFormulaire).hWnd, RectangleFormulaire
     
    PositionFormulaire.Gauche = RectangleFormulaire.Left
     
    PositionFormulaire.Haut = RectangleFormulaire.Top
     
    PositionFormulaire.Largeur = RectangleFormulaire.Right - RectangleFormulaire.Left
     
    PositionFormulaire.Hauteur = RectangleFormulaire.Bottom - RectangleFormulaire.Top
     
    End Function

Discussions similaires

  1. formulaire DoCmd .MoveSize
    Par imsse dans le forum IHM
    Réponses: 3
    Dernier message: 09/01/2008, 10h46
  2. Réponses: 2
    Dernier message: 04/04/2007, 11h14
  3. Réponses: 1
    Dernier message: 10/08/2006, 15h11
  4. Réponses: 3
    Dernier message: 13/06/2005, 14h07
  5. Mauvais résultat aprés une formule de calcul complexe
    Par poufouille dans le forum Bases de données
    Réponses: 3
    Dernier message: 10/12/2004, 00h12

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