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 :

Inhiber le déplacement d'un UserForm que le ScreenUpdating est à False [XL-2002]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 97
    Par défaut Inhiber le déplacement d'un UserForm que le ScreenUpdating est à False
    Bonsoir,

    Comment peut on empêcher de déplacer un UserForm, quand on a désactivé le ScreenUpdating.

    J'ai trouvé une solution dans la F.A.Q. avec l'évènement layout, mais le résultat n'est pas concluant : on peut toujours bouger la fenêtre, l'évènement layout intervenant une fois qu'on a laché le bouton de la souris.

    Merci de m'éclairer.

  2. #2
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Bonsoir Touffe54, le forum
    la seule que je connaisse est de supprimer le titre de la fenêtre par API Windows (Voir la FAQ) et de la remplacer par une étiquette.

    ESVBA

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

    pas sûr d'avoir bien compris ce que tu veux faire et pourquoi tu veux le faire.

    Si c'est ceci : "empêcher le déplacement quand screenupdating = False et l'autoriser quand = True ", voilà, parmi d'autres, une manière ===>>>

    1) tout en haut (dans la partie générale) du module de code de ton userform :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Option Explicit
    Private Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
    Private Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
    Private Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
    Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    2) immédiatement après chaque instruction ScreenUpdating = False :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     Dim sysmen As Long
        sysmen = GetSystemMenu(FindWindowA(vbNullString, Me.Caption), 0)
        DeleteMenu sysmen, &HF010&, &H0&
    2) immédiatement après chaque instruction ScreenUpdating = True:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     GetSystemMenu FindWindowA(vbNullString, Me.Caption), True
        DrawMenuBar FindWindowA(vbNullString, Me.Caption)
    Il sera d'ailleurs plus commode de mettre dans deux procédures (par exemple autoriser et inhiber) les deux codes et de lancer inhiber après un screenupdating à false et autoriser en le remettant à true

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 97
    Par défaut
    J'ai pris note du code, mais pour l'instant çà bug.

    Merci quand même.

  5. #5
    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
    Citation Envoyé par Touffe54 Voir le message
    J'ai pris note du code, mais pour l'instant çà bug.

    Merci quand même.
    montre donc ton code

  6. #6
    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 heu
    bonjour a tous les deux

    je viens d'essayer le code de babahote un peu modifier pour aller dans un module standard

    les deux actions s'appellent "enleve et remet"
    et sa ne marche pas du tout ca ne fais absolument rien
    y aurait t-il pas une erreur au niveau des variables "&HF010&, &H0"



    les deux actions sont appelées par deux boutons

    code dans le userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Private Sub CommandButton1_Click()
    enleve Me
    End Sub
     
    Private Sub CommandButton2_Click()
    remet Me
    End Sub
    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
     
     
    Public Declare Function GetSystemMenu Lib "user32" (ByVal hwnd As Long, ByVal bRevert As Long) As Long
    Public Declare Function DeleteMenu Lib "user32" (ByVal hMenu As Long, ByVal nPosition As Long, ByVal wFlags As Long) As Long
    Public Declare Function DrawMenuBar Lib "user32" (ByVal hwnd As Long) As Long
    Public Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Public sysmen As Long
     
     
    Sub enleve(maform As UserForm)
       sysmen = GetSystemMenu(FindWindowA(vbNullString, maform.Caption), 0)
        DeleteMenu sysmen, &HF010&, &H0&
      End Sub
     
    Sub remet(maform As UserForm)
     GetSystemMenu FindWindowA(vbNullString, maform.Caption), False
        DrawMenuBar FindWindowA(vbNullString, maform.Caption)
     End Sub
    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. Réponses: 31
    Dernier message: 22/04/2014, 14h55
  2. Réponses: 3
    Dernier message: 24/08/2004, 11h49
  3. [Image] détecter que le chargement est terminé
    Par Pascmar dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 19/07/2004, 19h12
  4. [débutant]Est-ce que Direct X est programmable en C ?
    Par Bubonik software dans le forum DirectX
    Réponses: 12
    Dernier message: 12/12/2003, 10h45

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