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 :

Masque de saisie dans un UserForm Excel [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut Masque de saisie dans un UserForm Excel
    Bonjour le forum,


    Je travaille actuellement sur un Formulaire sous Excel (UserForme en VBA) et je bloque sur certains masques de saisie :

    1°) A partir du nom du salarié, la macro entre divers renseignements, dont le numéro de Sécurité Sociale. Je souhaite que celui-ci soit correctement formaté dans la cellule, car il apparaît sous forme d'une suite de chiffre.
    J'ai utilisé l'enregistreur de macro pour voir comment Excel réagit, puis j'ai entré le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub NIR_Change()
    NIR.Value = Format(NIR.Value, "[>=3000000000000]#"" ""##"" ""##"" ""##"" ""###"" ""###"" | ""##;#"" ""##"" ""##"" ""##"" ""###"" ""###")
     
    End Sub
    Le format n'est pas le bon : avec un N° de Sécurité Sociale qui serait 1 85 12 08 123 456|78

    J'obtiens : 1 71 12 081 234 | 56

    Plus simplement, j'ai essayé aussi :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Private Sub NIR_Change()
    NIR.Value = Format(NIR.Value, "0 00 00 00 000 000|00")
     
    End Sub
    Là, j'obtiens : 0 01 85 12 081 234|56


    Bref, je tourne un peu en rond !


    2°) Pour des horaires de travail, au format 39:00:00 dans ma base Excel, j'ai saisi le masque suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Horaire_Change()
    Horaire.Value = Format(Horaire.Value, "hh:mm:ss")
    End Sub
    Là, le masque est correct, mais j'obtiens "00:00:00", alors que la valeur correspondante de la base Excel est bien de 39:00:00.


    3°) Enfin, j'ai concaténé le code postal et la ville de domicile du salarié, directement dans l'instruction suivante :


    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
    Private Sub Identité_Change()
    With Sheets("Base Agents")
    NumLigne = Me.Identité.ListIndex + 5
    Me.Coef.Value = .Cells(NumLigne, 19).Value
    Me.Serv.Value = .Cells(NumLigne, 51).Value
    Me.CP_Ville.Value = .Cells(NumLigne, 12).Value & " " & .Cells(NumLigne, 13).Value
    Me.Cptc.Value = .Cells(NumLigne, 21).Value
    Me.Date_entrée.Value = .Cells(NumLigne, 27).Value
    Me.Emploi.Value = .Cells(NumLigne, 14).Value
    Me.Exp.Value = .Cells(NumLigne, 20).Value
    Me.Horaire.Value = .Cells(NumLigne, 22).Value
    Me.N°_agent.Value = .Cells(NumLigne, 1).Value
    Me.Domiciliation.Value = .Cells(NumLigne, 52).Value
    Me.NIR.Value = .Cells(NumLigne, 2).Value
    Me.Adresse.Value = .Cells(NumLigne, 6).Value & " " & Cells(NumLigne, 7).Value
    End With
    End Sub
    Or, le problème se pose pour les départements inférieurs à 10 : j'obtiens "3000 MOULINS" au lieu de "03000 MOULINS".


    Si quelqu'un passe par là et me trouve une solution sur l'un ou l'autre de ces points, ça me débloquerait pas mal !

    Merci d'avance.


    Cordialement.

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2007
    Messages : 22
    Par défaut
    Bonjour,

    pour la question 3, voici comment tu peux procéder :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.CP_Ville.Value = Right("00000" & .Cells(NumLigne, 12).Value,5) & " " & .Cells(NumLigne, 13).Value
    Bonne journée

  3. #3
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    1.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub NIR_Change()
        If Len(NIR.Value) = 15 Then
            NIR.Value = Format(NIR.Value, "0 00 00 00 000 000|00")
        End If
    End Sub
    2.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub horaire_Change()
        Dim Heure
        If Len(horaire.Value) = 6 Then
            horaire.Value = Format(horaire.Value, "00:00:00")
        End If
    End Sub

  4. #4
    Membre éprouvé
    Homme Profil pro
    Assistant aux utilisateurs
    Inscrit en
    Septembre 2007
    Messages
    1 896
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Assistant aux utilisateurs
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 896
    Par défaut
    Bonjour,

    Pour le numéro de sécu, n'aurait-il pas été plus simple de formater la cellule à partir des formats Excel ? Idem pour les numéros de Départements.
    Cordialement

  5. #5
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour René,

    Pour ma part, je trouve préférable de m'assurer visuellement que la saisie est correcte avant validation.

  6. #6
    Membre confirmé
    Inscrit en
    Juin 2013
    Messages
    114
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 114
    Par défaut
    Bonjour Zelnist,
    Bonjour Daniel,

    Ca marche très bien !

    Merci beaucoup.

    Cordialement.

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

Discussions similaires

  1. Masque de saisie dans une zone de texte d'un formulaire Excel
    Par guillaume846 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/04/2014, 16h37
  2. Interdire la saisie dans certaines cellules excel via un Userform
    Par smurf007 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 29/07/2009, 14h58
  3. [E-00] Masque de saisie dans userform
    Par mercatog dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 29/01/2009, 22h45
  4. Réponses: 2
    Dernier message: 17/02/2005, 00h00
  5. problème avec masque de saisie dans table
    Par porki dans le forum Access
    Réponses: 6
    Dernier message: 13/10/2004, 08h58

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