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 :

Comment enlever la barre de titre de l'Userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut Comment enlever la barre de titre de l'Userform
    bonjour,

    Je démarre une autre conversation sur mon Userform

    1) j'aimerai enlever la barre de titre de mon Userform ?
    2) je voudrais sauvegarder les fiches de mon Userform ?
    3) Je voudrais connaître le code pour effacer les champs de mon Userform
    4) et enfin quitter mon Userform

    Voilà je peux vous envoyer le code complet, mais je le ferai dès que tout sera finalisé pour les internautes.

    Merci de votre réponse

  2. #2
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    1. Enlever la barre de titre ?
      Je ne crois pas que ce soit poossible
    2. sauvegarder les fiches d'un Userform ?
      Les fiches ? Que veux-tu dire ?
    3. le code pour effacer les champs d'un Userform ?
      Faire une boucle sur tous les champs (textBox) et mettre leur propriété Text = ""
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      Dim c As Control
      For Each c In Me.Controls
          if TypeOf c Is TextBox then c.Text = ""
      Next
    4. quitter (fermer le UserForm) ?
      Mettre ce code dans l'événement Click du bouton Fermer (ou autre nom de bouton)

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 66
    Points : 77
    Points
    77
    Par défaut
    Voici pr exemple une fonction à placer dans le code de la userform
    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 Declare Function GetWindowLongA Lib "user32" _
      (ByVal hwnd As Long, ByVal nIndex As Long) As Long
     
    Private Declare Function SetWindowLongA Lib "user32" _
      (ByVal hwnd As Long, ByVal nIndex As Long, _
      ByVal dwNewLong As Long) As Long
     
    Private Declare Function FindWindowA Lib "user32" _
      (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
     
    Private Sub UserForm_Initialize()
      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
    End Sub
    Elle permet de modifier la barre de titre en supprimant la croix
    A plus

    Pour vider et réinitialiser une userform:
    Code à placer dans un commandbutton fermer ou dans le bouton qui valide une action.

  4. #4
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par zazaraignée Voir le message
    • Enlever la barre de titre ?
      Je ne crois pas que ce soit poossible
    • sauvegarder les fiches d'un Userform ?
      Les fiches ? Que veux-tu dire ?
    Pour sauvegarder l'userform rempli de mes données

    Citation Envoyé par zazaraignée Voir le message
    • le code pour effacer les champs d'un Userform ?
      Faire une boucle sur tous les champs (textBox) et mettre leur propriété Text = ""
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      1
      2
      3
      4
      Dim c As Control
      For Each c In Me.Controls
          if TypeOf c Is TextBox then c.Text = ""
      Next
    Ton code marche très bien je te remercie, mais où dois-je mettre le code pour effacer les champs de mon Userform, car je voudrais pouvoir le sauvegarder avant de l'effacer puis de quitter . Merci d'avance j'attends votre réponse.

  5. #5
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim c As Control
    For Each c In Me.Controls
        If TypeOf c Is TextBox Then c.Text = ""
        Next
    Ne marche pas, il n'efface rien.

    Donc avez vous un autre exemple SVP.

    Merci d'avance

  6. #6
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par jolzeviking Voir le message
    Pour vider et réinitialiser une userform:
    Code à placer dans un commandbutton fermer ou dans le bouton qui valide une action.
    ce code ne marche pas sur mon Excel c'est la version 2003, peut-être que tu as un autre exemple pour effacer mes données.

    Maintenant j'arrive à quitter l'userform et à l'imprimer, mais il me reste à effacer les données et à enregistrer l'userform à chaque changement de clients.

    Merci à toi si tu trouves

    Mais moi je bloque un peu

  7. #7
    Expert confirmé
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Points : 4 085
    Points
    4 085
    Par défaut
    J'avoue que je n'avais pas testé mon bout de code qui me viens d'une habitude de programmation en VB6... mais qui malheureusement ne fonctionne pas sous VBA. Désolée.

    Le Unload, déchargeant le UserForm complètement de la mémoire vive efface bien plus que le contenu des champs. Mais le résultat est le même puisque lorsque l'on affiche à nouveau le fenêtre, les champs sont vides...

    Avais-je mentionné que la barre de titre était impossible à enlever ? J'aurais du ajouter 'sans avoir recours aux fonctions de l'API windows'...

    Pour la suite, je réitère donc ma question : Qu'entends-tu par les fiches de ton UserForm ? Des onglets sur ton UserForm ? les différentes feuilles de calcul qui contiennent les données ?

    Une solution de paresseux (ou plutôt de paresseuse, puisque c'est celle-là que j'utilise la plupart du temps) pour créer un formulaire de saisie, j'utilise le formulaire par défaut de Excel. À la première utilisation (quand il n'y a pas de données sous les entêtes du tableau), un message d'erreur s'affiche (avec des boutons du type Ok, Annuler, Aide), mais après avoir cliqué sur Ok, tout va bien. Il suffit de mettre dans le code de l'événement Activate de chaque feuille et s'assurer que les entête de tableau sont présentes dans un format autre que celui des données (gras et centré, par exemple).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Activate()
        ShowDataForm
    End Sub

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    Et la FAQ, c'est fait uniquement pour ceux qui savent ?
    Regarde ici, chapitre "Comment masquer la barre de titre d'une UserForm ?"
    Ça sert à quoi que Bbil il se décarcasse ?

  9. #9
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par ouskel'n'or Voir le message
    Et la FAQ, c'est fait uniquement pour ceux qui savent ?
    Regarde ici, chapitre "Comment masquer la barre de titre d'une UserForm ?"
    Ça sert à quoi que Bbil il se décarcasse ?
    bonjour,

    oui désolée mais je ne l'avais pas vu, merci.

    J'ai trouvé un code mais il ne marche pas dans excel 2003, il me dit que la variable n'est pas défini je te donne le code :

    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
    Sub AfficheTitleBarre(stCaption As String, pbVisible As Boolean)
    Dim vrWin As RECT
    Dim style As Long
    Dim lHwnd As Long
    '- Recherche du handle de la fenêtre par son Caption
        lHwnd = FindWindowA(vbNullString, stCaption)
        If lHwnd = 0 Then
            MsgBox "Handle de " & stCaption & " Introuvable", vbCritical
            Exit Sub
        End If
     
        GetWindowRect lHwnd, vrWin
        style = GetWindowLong(lHwnd, GWL_STYLE)
        If pbVisible Then
            SetWindowLong lHwnd, GWL_STYLE, style Or WS_CAPTION
        Else
            SetWindowLong lHwnd, GWL_STYLE, style And Not WS_CAPTION
        End If
        SetWindowPos lHwnd, 0, vrWin.Left, vrWin.Top, vrWin.Right - vrWin.Left, _
                vrWin.Bottom - vrWin.Top, SWP_FRAMECHANGED
    End Sub
    il s'arrête sur la deuxième ligne ! je l'ai pourtant mis dans le module standard,

    et la suite du code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub UserForm_Initialize()
    With tbxspecifications
    'spécifie que la touche ENTREE ajoutera une nouvelle ligne
    tbxspecifications.EnterKeyBehavior = True
    'On passe en arguments :
    '    - le titre de la fenêtre
    '    - False pour masquer la barre de titre
       AfficheTitleBarre Me.Caption, False
    Merci pour ton aide.

    Pour répondre à Zazaraignée :

    Pour la suite, je réitère donc ma question : Qu'entends-tu par les fiches de ton UserForm ? Des onglets sur ton UserForm ? les différentes feuilles de calcul qui contiennent les données ?
    En fait, c'est l'Userform même que je voudrais sauvegarder pour en garder une trace, Es-ce possible ? Si oui merci car j'ai essayé plusieurs code mais je n'y arrive pas, il me manque certainement quelque chose.

    Merci à toi pour ton aide

    J'attends vos réponses.

  10. #10
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 546
    Points
    15 546
    Par défaut
    J'ai trouvé un code mais il ne marche pas dans excel 2003, il me dit que la variable n'est pas défini je te donne le code :
    As-tu ajouté les déclarations à ton code ? (qui se trouvent avant les deux macros)
    Sinon, j'ai une solution que j'utilisais "avant", à l'époque ou je ne savais pas récupérer le handle de l'userform. C'est un bricolage mais il fait la même chose si l'userform est censé couvrir la totalité de l'écran. Je te le passe à toutes fins utiles.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub UserForm_Activate()
        UserForm1.Top = Application.Top - 13
        Me.Height = Application.Height + 13
        Me.Width = Application.Width
        Me.Left = 0
    End Sub
    J'ai bien dit "un bricolage" !

  11. #11
    Membre du Club
    Femme Profil pro
    Assistante Développement
    Inscrit en
    Juin 2008
    Messages
    116
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Assistante Développement
    Secteur : Conseil

    Informations forums :
    Inscription : Juin 2008
    Messages : 116
    Points : 60
    Points
    60
    Par défaut
    Merci beaucoup, ton code est génial, c'est tout à fait çà ! Super

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

Discussions similaires

  1. Réponses: 31
    Dernier message: 22/08/2008, 12h14
  2. Enlever la barre de titre tout en gardant les bordures
    Par vaspered dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 20/12/2007, 05h48
  3. Réponses: 3
    Dernier message: 20/02/2007, 12h09
  4. [SWING] Comment redessiner la barre de titre d'une JFrame?
    Par rprom1 dans le forum Agents de placement/Fenêtres
    Réponses: 14
    Dernier message: 21/06/2006, 17h18
  5. [JInternalFrame] Enlever la Barre de Titre d'une JInternalFrame
    Par tchoukapi dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 05/09/2005, 12h37

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