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 :

Quelques questions sur les Userform [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Quelques questions sur les Userform
    Bonjour à tous.

    J'ai créé mon premier userform et j'ai quelques petites questions. Mon userform sert à saisir les informations d'un nouveau membre. J'ai plusieurs zones de textes pour inscrire par exemple le nom, l'adresse... du nouveau membre. J'ai également une case à cocher et finalement 2 boutons de commande.

    Voici mes questions :

    1- Après avoir inscrit mes données dans les zones de texte ainsi qu'avoir sélectionné la case à cocher, je clique sur un des deux boutons de commande pour finaliser l'enregistrement ou l'annuler. Lors de la prochaine utilisation du Userform la case à cocher est encore coché. J'aimerais qu'elle ne soit jamais coché lors de l'appel du userform. Est-il possible de le faire ?

    2- Est-il possible d'avoir un masque de saisie. Au Canada, le téléphone est sous forme (514) 123-4567 .

    3- Dans une des zones de texte, est-il possible d'avoir la un petit menu déroulant contenant les noms dans une plage de cellules comme le fait l'option "Validation" du menu données d'excel 2003?

    Merci à l'avance

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut dlight et le forum
    Q1-J'aimerais qu'elle ne soit jamais coché lors de l'appel du userform.
    R1 Utilise la macro initialize de ton USF pour mettre la valeur de lacase à cocher à false

    Q2- Est-il possible d'avoir un masque de saisie. Au Canada, le téléphone est sous forme (514) 123-4567 .
    R2-Dans la TextBox, tu peux utiliser la macro TextBox_Change de manière à tester chaque nouvel ajout de chiffre.
    -Dans une cellule avec un format personnalisé de type "("000") "000"-"0000
    mais le plus simple, si ce sont des données du USF, c'est de le mettre en forme dans la TextBox et de faire un transfert en texte

    Q3- Dans une des zones de texte, est-il possible d'avoir la un petit menu déroulant
    R3-Non. par contre, les ComboBox sont faites pour ça.
    A+

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Quelques questions Userform
    Merci à toi Gorfael.

    Pour la première question, c'est bien ce que j'avais besoin.

    Pour la deuxième question, je ne comprends pas bien
    mais le plus simple, si ce sont des données du USF, c'est de le mettre en forme dans la TextBox et de faire un transfert en texte
    Pour la troisième question, je dois te dire que je suis débutant en vba et je ne sais pas comment créer un combobox.

    Merci encore une fois .

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut dlight et le forum
    je ne sais pas comment créer un combobox.
    Comme tu as créé ta textBox, mais c'est un autre objet de la boîte à outils appelée aussi "zone de texte modifiable".
    Pour la deuxième question, je ne comprends pas bien
    Un exemple de formatage de la TextBox1
    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
    Private Sub TextBox1_Change()
    Select Case Len(Me.TextBox1)
        Case 1
            If Me.TextBox1 Like "#" Then
                Me.TextBox1 = "(" & Me.TextBox1
            ElseIf Not (Me.TextBox1 Like "#") And Me.TextBox1 <> "(" Then
                Me.TextBox1 = ""
            End If
        Case 2
            If Not (Me.TextBox1 Like "(#") Then Me.TextBox1 = "("
        Case 3
            If Not (Me.TextBox1 Like "(##") Then Me.TextBox1 = Left(Me.TextBox1, 2)
        Case 4
            If Not (Me.TextBox1 Like "(###") Then
                Me.TextBox1 = Left(Me.TextBox1, 3)
            Else
                Me.TextBox1 = Me.TextBox1 & ") "
            End If
        Case 5
            If Not (Me.TextBox1 Like "(###)") Then Me.TextBox1 = Left(Me.TextBox1, 4) & "( "
        Case 6
            If Not (Me.TextBox1 Like "(###) ") Then Me.TextBox1 = Left(Me.TextBox1, 5) & " "
        Case 7
            If Not (Me.TextBox1 Like "(###) #") Then Me.TextBox1 = Left(Me.TextBox1, 6)
        Case 8
            If Not (Me.TextBox1 Like "(###) ##") Then Me.TextBox1 = Left(Me.TextBox1, 7)
        Case 9
            If Not (Me.TextBox1 Like "(###) ###") Then
                Me.TextBox1 = Left(Me.TextBox1, 8)
            Else
                Me.TextBox1 = Me.TextBox1 & "-"
            End If
        Case 10
            If Not (Me.TextBox1 Like "(###) ###-") Then Me.TextBox1 = Left(Me.TextBox1, 9)
        Case 11
            If Not (Me.TextBox1 Like "(###) ###-#") Then Me.TextBox1 = Left(Me.TextBox1, 10)
        Case 12
            If Not (Me.TextBox1 Like "(###) ###-##") Then Me.TextBox1 = Left(Me.TextBox1, 11)
        Case 13
            If Not (Me.TextBox1 Like "(###) ###-###") Then Me.TextBox1 = Left(Me.TextBox1, 12)
        Case 14
            If Not (Me.TextBox1 Like "(###) ###-####") Then Me.TextBox1 = Left(Me.TextBox1, 13)
        Case Else
            Me.TextBox1 = Left(Me.TextBox1, 14)
    End Select
    End Sub
    Tu ne peux saisir que des données correspondant à "(514) 123-4567" (la saisie des chiffres suffit).
    Dans ton bouton de validation, un simple "Range("destination")=Me.TextBox1" suffira à le transférer.
    A+

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Userform et masque de saisie
    Bonjour.

    Merci à toi Gorfael. Ce bout de code est simplement génial. Je vais me pratiquer afin de l'appliquer à d'autres situations.

    Mais si tu le permet, j'aimerais à nouveau te demander une explication sur ce bout de code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Case Len(Me.TextBox1)
    "Len" sert à quoi ainsi que le "Me." ?

    Merci encore une fois.

  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

    il ny a pas que dvp tu a la solution "f1" aussi (l'aide)

    enfin on peu pas tout faire a ta place

    cela dit "len" ca corespond a "nombre de caracteres"

    exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    sub compte_les_caracteres ()
    dim monnom as string
    monnom="teteatoto"
    msgbox"monom comporte  " &  len(monnom)& "caractere"
    end sub
    voila au plaisir
    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

  7. #7
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut dlight et le forum
    L'utilisation de Select Case est assez simple :
    "Select Case A" défini la variable de travail comme étant A. On teste les valeurs en correspondance avec les Case et quand il y a concordence, on effectue ce qui suit Case. C'est plus parlant et avec plus de possibilités que les If...Else If...

    Len(Me.TextBox1) : nombre de caractères de textbox1

    Me. : remplace l'objet sur lequel on travaille. Deux avantages (pour moi) :
    - Cest l'objet auquel est lié le module (ici le USF) et évite les ambiguïtés qui peuvent conduire à des erreurs
    - Ça permet d'avoir toute la liste des propriétés/actions autorisées pour l'objet.
    A+

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Novembre 2009
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2009
    Messages : 322
    Par défaut Userbox et len
    Merci à vous deux pour vos réponses et explications.

    Après d'autres lectures, je suis en mesure avec vos exemples de maitriser ce code.

    merci

    dlight

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 27/12/2006, 13h26
  2. Quelques questions sur les shaders
    Par Yno dans le forum OpenGL
    Réponses: 2
    Dernier message: 04/12/2006, 15h44
  3. Quelques questions sur les annuaires ldap
    Par rvfranck dans le forum Réseau
    Réponses: 7
    Dernier message: 15/08/2006, 02h41
  4. Quelques questions sur les LOB
    Par Wurlitzer dans le forum Oracle
    Réponses: 2
    Dernier message: 14/06/2006, 17h32
  5. Quelques questions sur les threads
    Par benj63 dans le forum C++Builder
    Réponses: 28
    Dernier message: 21/11/2005, 13h27

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