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 :

Aide pour codification en Vba [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    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 Aide pour codification en Vba
    Bonjour à tous,

    Je rencontre 2 problèmes que je vous soumets :

    1 - Dans un formulaire, j'ai une Combo (C1) dans laquelle s'affiche un certain nombre de nom d'école. Je souhaiterai qu'à l'ouverture de mon formulaire, le nom dans la Combo soit identique à celui de l'onglet de la feuille.
    Est-ce possible et comment ?

    2 - Dans un TextBox l'utilisateur doit taper une heure au format hh:mm.
    Je souhaiterai qu'il n'est à taper que les chiffres sur le clavier. Après avoir tapé l'heure, les : soient automatiques, et ensuite frappe les minutes.
    Un peu sur ce principe de date :

    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
     
    Dim valeur As Byte
        Me.T3.MaxLength = 10
        valeur = Len(Me.T3)
            If valeur = 2 And Mid(Me.T3, 1, 2) > 31 Then
                Me.T3.MaxLength = 2
                    MsgBox "Jour invalide"
                Exit Sub
            End If
                If valeur = 5 And Mid(Me.T3, 4, 5) > 12 Then
                    Me.T3.MaxLength = 5
                        MsgBox "Mois invalide"
                    Exit Sub
                End If
            If valeur = 2 Or valeur = 5 Then Me.T3 = Me.T3 & "-"
            If valeur = 10 And Not IsDate(Me.T3) Then Me.T3 = "-"
    Merci par avance pour l'aide que vous pourrez m'apporter.

  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 NEC14 et le forum
    Les questions me semblant donner des réponses simples, je ne les testent pas :
    Dans un formulaire, j'ai une Combo (C1) dans laquelle s'affiche un certain nombre de nom d'école. Je souhaiterai qu'à l'ouverture de mon formulaire, le nom dans la Combo soit identique à celui de l'onglet de la feuille.
    Est-ce possible et comment ?
    Dans la macro d'initialisation tu metsça suppose que ta liste est crée avec le nom des feuilles
    Dans un TextBox l'utilisateur doit taper une heure au format hh:mm
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub T3_Change()
        If Me.T3.TextLength = 2 Then
            If 0 <= CInt(Me.T3) And CInt(Me.T3) <= 24 Then
                Me.T3 = Me.T3 & ":"
            Else
                MsgBox "les heures sont limitées à 24 ", , "Erreur de saisie"
                Me.T3 = ""
            End If
        End If
    End Sub
    A+

  3. #3
    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
    Merci Gorfael tes codes marchent super bien.

    Je me permet d'abuser un peu, il a fallu que je mette en place 9 TextBox où s'appliquent ton code. (Celui des heures)
    Comment mettre dans un module ton code afin qu'il s'applique à chaque TextBox ?
    Cela m'éviterai de le recopier 9 fois.
    Merci par avance

  4. #4
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    bonjour nec Gorfael le forum il faut passer par un module de classe
    question tes textbox sont renommées de T1 a T9 ??

  5. #5
    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 laetitia

    Elles sont nommées de T6 à T14

  6. #6
    Membre Expert Avatar de laetitia
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    1 281
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 1 281
    Par défaut
    re nec,Gorfael un module de classe a tester!!

    code user
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Option Explicit
    Dim txt(6 To 14) As New classe1, i As Byte
    Private Sub UserForm_Initialize()
    For i = 6 To 14: Set txt(i).txt = Controls("T" & i): Next i
    End Sub
    code module de classe

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Option Explicit
    Public WithEvents txt As MSForms.TextBox, c As Control
    Private Sub txt_Change()
    For Each c In UserForm1.Controls
    If TypeOf c Is MSForms.TextBox Then
    If Val(c) > 24 Then MsgBox "Erreur de saisie": c = "": Exit Sub
    If c.TextLength = 2 Then: c = c & ":"
    End If: Next c
    End Sub
    Private Sub txt_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    If InStr("0123456789", Chr(KeyAscii)) = 0 Then KeyAscii = 0
    End Sub

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

Discussions similaires

  1. Aide pour Operateur avec VBA access
    Par achevar dans le forum VBA Access
    Réponses: 6
    Dernier message: 07/11/2008, 15h37
  2. Aide pour un code VBA Excel
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 03/07/2008, 10h09
  3. Aide pour un code Vba
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 15/10/2007, 16h03
  4. Aide pour codification VBA
    Par NEC14 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/09/2007, 12h02
  5. besoin d'aide pour macros ou VBA
    Par jmsor dans le forum VBA Access
    Réponses: 1
    Dernier message: 07/02/2007, 18h41

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