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 :

Récupération de données dans USERFORM


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Décembre 2009
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 276
    Par défaut Récupération de données dans USERFORM
    Bonjour à tous,

    Je viens de m'apercevoir d'un bug dans une appli que j'aie créée dernièrement.
    Je résume les étapes en simplifiant :

    1) J'ouvre un USERFORM de saisie
    2) J'ai un champ Heure (TxtHeure) sous lequel j'ai le code suivant (contrôle des heures et des minutes ainsi que l'ajout des ":" entre les heures et les minutes) :
    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
    Private Sub TxtHeure_Change()
     
    On Error Resume Next
    Dim Texte As String
    Texte = TxtHeure.Text
     
    Select Case Len(Texte)
    Case 2
        If CInt(Texte) > 23 Then
            MsgBox ("Vous avez saisi des heures supérieures à 23")
            Texte = ""
        Else
            Texte = Texte & ":"
        End If
    Case 5
        If CInt(Right(Texte, 2)) > 59 Then
            MsgBox ("Vous avez saisi des minutes supérieures à 59")
            Texte = ""
        End If
    End Select
     
    TxtHeure.Text = Texte
     
    On Error GoTo 0
     
    End Sub
    3) Je saisi la suite des autres champs
    4) Je clique sur le bouton "Valider" pour enregistrer mes données sous un onglet spécifique.
    5) Mon code pour écrire le champ TxtHeure :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sheets("Données").Activate
    ...
    Range("D" & num).Value = TxtHeure.Value
    ...
    Jusque là, tout va bien

    6) J'ai un second USERFORM (identique au premier) qui me permet de rappeler mes données si j'ai des modifs à effectuer.
    7) A l'initialisation, le champ TxtHeure prend bien la valeur saisie à l'origine par le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub UserForm_Initialize()
    ...
        TxtHeure.Value = ValidHeure 'ValidHeure  est récupéré de la manière suivante dans un formulaire de choix ==> ValidHeure = Format(Sh.Range("D" & .List(.ListIndex, 4)), "hh:mm")
    ...
    MON PROBLEME

    Si je veux modifier l'heure, mes contrôles ne fonctionnent plus sur ce champ !
    Les ":" ne s'affichent plus non plus.

    Pourtant mes contrôles ont bien été copiés dans le code de ce 2ème formulaire.

    Si quelqu'un a réussi à déchiffrer ma demande, je suis preneur de tous les commentaires.

    Merci

  2. #2
    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,

    La variable "ValidHeure" contient du texte et non pas une heure. Il est possible que ton erreur vienne de là.

  3. #3
    Membre éclairé
    Inscrit en
    Décembre 2009
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 276
    Par défaut
    Bonjour Daniel,

    Effectivement, je pense que tous mes champs que je récupère pour alimenter mon 2ème USERFORM sont des champs texte.
    Maintenant il va falloir que je réfléchisse à la meilleure méthode pour qu'ils redeviennent au format d'origine.

    As-tu une idée pour récupérer mon champ txtHeure ?

    Cordialement

  4. #4
    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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim ValidHeure As String
    TxtHeure.Value = CDate(ValidHeure)

  5. #5
    Membre éclairé
    Inscrit en
    Décembre 2009
    Messages
    276
    Détails du profil
    Informations forums :
    Inscription : Décembre 2009
    Messages : 276
    Par défaut
    Bonjour Daniel,

    Merci pour ce code mais cela ne fonctionne toujours pas.

    Dans mon champ TxtHeure de mon 2ème USERFORM, j'ai bien la bonne valeur qui apparait (ex : 11:45) mais si je veux la modifier mon contrôle suivant ne fonctionne pas :

    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
    Private Sub TxtHeure_Change()
     
    On Error Resume Next
    Dim Texte As String
    Texte = TxtHeure.Text
     
    Select Case Len(Texte)
    Case 2
        If CInt(Texte) > 23 Then
            MsgBox ("Vous avez saisi des heures supérieures à 23")
            Texte = ""
        Else
            Texte = Texte & ":"
        End If
    Case 5
        If CInt(Right(Texte, 2)) > 59 Then
            MsgBox ("Vous avez saisi des minutes supérieures à 59")
            Texte = ""
        End If
    End Select
     
    TxtHeure.Text = Texte
     
    On Error GoTo 0
     
    End Sub
    Si je supprime 11:45 et que je mets (en me trompant bien sûr) 25:63, le résultat affiché est 2563 ==> pas de contrôle sur l'heure, les minutes et pas de ":"

    Là, je sèche.

    Merci de votre aide

    _________________
    Cordialement

  6. #6
    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,

    J'ai testé ton code et la saisie de "25" dans le textbox provoque bien l'affichage du message d'erreur. Peux-tu mettre ton classeur - sans données confidentielles - en pièce jointe ?

Discussions similaires

  1. récupération de donnée dans un userform par rapport a un nom
    Par revemane dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 03/04/2009, 17h13
  2. [VB]Récupération de données dans Excel
    Par jeanangel dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 18/01/2006, 23h30
  3. Réponses: 16
    Dernier message: 10/11/2005, 21h10
  4. Réponses: 6
    Dernier message: 23/10/2005, 12h24
  5. récupération de données dans un TDBControlGrid
    Par dableuf dans le forum Bases de données
    Réponses: 3
    Dernier message: 22/11/2004, 14h25

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