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 :

Normalisation d'un formatage de Textbox à d'autre textbox


Sujet :

Macros et VBA Excel

  1. #21
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Quant à toi, patricktoulon :
    1) sache que je viens de pouvoir saisir, sans que ton code ne "bronche", la "date" du 31 avril 2018 !!! *****
    J'y suis parvenu en modifiant deux fois ma saisie (ce qui peut arriver à plus d'un utilisateur, hein ...)
    2) nous en sommes à combien de modifications boiteuses (mais toutes affirmées par toi comme pures) , maintenant ?
    Comme dans une autre discussion très récente à ce sujet --->> Excuse-moi, mais je vais te laisser maintenant là. Je ne peux passer mon temps à ce genre de test de tes "tâtonnements".
    Bonne chance.

    ***** EDIT : et je préfère ne pas avoir à te confirmer que lorsque j'ai appuyé sur la touche ENTER, Excel est carrément sorti en debug
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      1  1

  2. #22
    Membre régulier
    Homme Profil pro
    Ingénieur maintenance industriel
    Inscrit en
    Juin 2018
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur maintenance industriel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2018
    Messages : 185
    Points : 79
    Points
    79
    Par défaut Re:Re
    Bonjour patricktoulon:

    Je tiens à te remercier pour cette correction.

    Malheureusement j'ai trouver un autre bug de saisie

    tu sélectionne le premier chiffre du mois ou du jours (le deuxième aussi).
    et tu peux changer par le numéro que tu veux et donc ne pas respecter les limites de 31 pour les jours et de 12 pour les mois.

    Nom : Image4.PNG
Affichages : 179
Taille : 6,9 Ko

    En tous cas je tiens a te remercier pour ta réactivité, n'hésite pas à commenter ton code pour que je comprenne mieux ce que tu fais et ainsi pouvoir le modifier. Cela permettras d'éviter une demande de ma part pour chaque petite modifications.

    Concernant l'exit de la case en cliquant sur une autre textbox quelqu'un peux m'indiquer la démarche a survivre

    par exemple avec un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub control_saisie_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    bien sur généraliser à toute mes textbox.

    Unparia, dans le cas ou la démarche est bancale, peux tu proposer quelque chose qui ne l'est pas. Je vois bien que tu critique positivement les créations afin que l'on s'améliore. Mais la critique ne suffit pas et une aide de ta part pour améliorer les choses est la bienvenu. Si tu considères que l'exercice de création de code est facile ou facilement critiquable alors permet toi de nous montré ton savoir faire en écrivent un.

    Je suis venu ici pour résoudre mon problème j'ai donc partagé également un code (au début) que je voulais généralisé pour permettre l'application à plusieurs textbox. Cependant ma connaissance est limité et je n'ais pas réussi à le généraliser. C'est pourquoi je suis venu ici demander de l'aide.

    Pour rappel le code que j'ai partagé me permettait :

    D'entrée une date avec un cache de type "__/__/____" impossibilité de rentrer plus de 31 en jours et impossibilité de rentrer plus de 12 en mois
    A la sortie de se textbox si il n'avais rien modifier et que il y avais toujours écrit "__/__/____" alors on laisse la sortie possible
    Si à la sortie ce n'était pas une date ou une date incomplète alors msgbox " La date n'est pas renseigner correctement et doit respecter le cache "jj/mm/aaaa"
    Si à la sortie c'était une date antérieur de plus de 20 jours à celle d'aujourd'hui alors msgbox " La date indiquée est antérieur à plus de 20 jours par rapport à aujoud'hui" suite à ce message un refocus sur la textbox concernée (ne pas pouvoir sortir de la textbox si anterieur).
    Si à la sortie c'est une date postérieur à celle d'aujourd'hui alors msgbox "La date indiquée est postérieur à celle d'aujoud'hui" Possibilité de sortir quand même de la case Textbox
    Voila dans l'ensemble c'est cela que je veux faire. J'ai réussi à le faire (avec des recherche et la compréhension d'un débutant en VBA) mais je veux le généralisé pour pouvoir l'appliquer à un nombre important de textbox et ainsi limité le nombre de ligne de code.
    N'hésité pas à me partager d'autre solution que celle proposé, en attendant je remercies les personnes s'impliquant dans la résolution de mon problème.
    Cordialement,

    Passepartout007
      0  1

  3. #23
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Mais la critique ne suffit pas et une aide de ta part pour améliorer les choses est la bienvenu
    Il ne s'agirait pas d'amélioration, mais de reconstruction totale. Et cela ne me parait pas être exactement la vocation de ce forum.

    D'autant que (je l'ai dit à plusieurs reprises sur ce forum) je ne suis pas fan de ce genre de contrôle inutilement alourdissant en cours de saisie, alors qu'il est vraiment simple de contrôler tout simplement in fine que la date saisie est une date valide.

    Je laisse toutefois passer quelques jours (j'ai mes raisons) , puis déposerai en contributions un code de contrôle en cours de saisie. Sans faille, lui.
    Il n'y a là rien d'urgent.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      2  1

  4. #24
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    oui merci passe partout pour tes retours
    oui j'ai corrigé la selection du 2d chiffre de segement je vais verifier pour le premier

    pour le exit j'ai bien le msgbox corespondant mais le focus et le selstart ne peuvent pas etre etabli pour la simple et bonne raison que quand tu quiite un textbox ca va automatique sur le suivant et la matrice"__/__/___" est selectionnée entierement et automatiquement
    comme il y a selection on ne peut pas revenir sur le textbox non complété
    j'ai essayé divers stratagemes mais rien y fait


    unparia dit: il suffit de controler avec isdate in fine, laissons le faire il aura des surprises aux quelles j'ai été confronté car malheureusement ce test ne suffit pas pour avoir un masque dynamique en ecriture en effacement par back ou par suppr et en gardant ce qui est bon des deux coté de la partie en correction
    bref il parle beaucoup cela dit ces retours et les tiens sur le bog me sont utiles

    je verifie la selection du 1er chiffre de segment et reviens
    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
      0  0

  5. #25
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re voila tes 1er ou 2d chiffre en selection sont corrigé
    re
    tu a aussi l'evenement exit a la place de la touche enter
    un seul bemol !!!

    le retour sur le textbox ne se fait pas probleme de conflit avec le focus du textbox suivant

    le code au complet du module 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
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    Option Explicit
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        verifdate TextBox1
    End Sub
    Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        verifdate TextBox2
    End Sub
    Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        verifdate TextBox3
    End Sub
    Private Sub TextBox1_KeyDown(ByVal keycode As MSForms.ReturnInteger, ByVal Shift As Integer)
        control_saisie TextBox1, keycode
    End Sub
    Private Sub TextBox2_KeyDown(ByVal keycode As MSForms.ReturnInteger, ByVal Shift As Integer)
        control_saisie TextBox2, keycode
    End Sub
    Private Sub TextBox3_KeyDown(ByVal keycode As MSForms.ReturnInteger, ByVal Shift As Integer)
        control_saisie TextBox3, keycode
    End Sub
    Private Sub control_saisie(txt As Object, keycode)
    '--merci de laisser ces 2 lignes de commentaires si vous utiliser ce mécanisme--
    '-- l'auteur de cette fonction est Patrick Verne----:):):):):)Alias patricktoulon--------------------------
        Dim T$, X&
        With txt
            T = .Text
            X = .SelStart
            If .SelLength = 10 And keycode = 46 Then txt = "__/__/____": keycode = 0: .SelLength = 0: Exit Sub
            If Mid(T, X + 1, .SelLength) Like "*/*" Then keycode = 0: Exit Sub
            Select Case keycode
            Case 13:: Exit Sub
            Case 8
                .SelStart = X: keycode = 0:
                If X < 6 Then Mid(T, 4, 2) = "__": .Text = T: .SelStart = 2
                If X < 3 Then Mid(T, 1, 2) = "__": .Text = T: .SelStart = 0
                If X >= 6 Then Mid(T, 7, 4) = "____": .Text = T: .SelStart = 5
            Case 46
                .SelStart = X: keycode = 0:
                If X < 3 Then Mid(T, 1, 2) = "__": .Text = T: .SelStart = 3
                If X >= 3 And X < 6 Then Mid(T, 4, 2) = "__": .Text = T: .SelStart = 6
                If X > 4 Then Mid(T, 7, 4) = "____": .Text = T: .SelStart = 0
            Case 96 To 105
                T = .Text
                X = .SelStart
                If .SelLength > 1 Then
                    Mid(T, X + 1, .SelLength) = Chr(keycode - 48) & Left("___", .SelLength - 1): keycode = 0: .Text = T: .SelStart = X + 1: .SelLength = 0
                    If Not IsDate(Mid(T, 1, 6) & "2000") Then Mid(T, 4, 2) = "__": .SelStart = 3
                    Exit Sub
                End If
                If .SelLength = 1 Then
                    Mid(T, X + 1, .SelLength) = Chr(keycode - 48): keycode = 0: .Text = T
                    If Not IsDate(Mid(T, 1, 6) & "2000") Then Mid(T, 4, 2) = "__": .Text = T: .SelStart = 3
                    Exit Sub
                End If
                If InStr(T, "_") = 0 And .SelLength = 0 Then keycode = 0
                T = .Text
                If InStr(1, T, "_") <> 0 Then Mid(T, InStr(1, T, "_")) = Chr(keycode - 48): keycode = 0
                If Val(Mid(T, 1, 1)) > 3 Then Mid(T, 1, 1) = "_"
                If Val(Mid(T, 1, 2)) > 31 Then Mid(T, 1, 2) = "__"
                If Val(Mid(T, 4, 1)) > 1 Then Mid(T, 4, 1) = "_"
                If Val(Mid(T, 4, 2)) > 12 Then Mid(T, 4, 1) = "__": keycode = 0: Exit Sub
                If InStr(1, T, "_") = 4 And Not IsDate(Mid(T, 1, 3) & "01/2000") Then Mid(T, 1, 2) = "__": .SelStart = 0
                If InStr(1, T, "_") = 7 And Not IsDate(Mid(T, 1, 6) & "2000") Then Mid(T, 4, 2) = "__": .SelStart = 3
                If Not T Like "*_*" And Not IsDate(Mid(T, 1, 6) & "2000") Then Mid(T, 4, 2) = "__": .Text = T
                If Not T Like "*_*" And Not IsDate(T) Then Mid(T, 7, 4) = "____"
                .Text = T: .SelStart = InStr(1, T, "_") - IIf(InStr(1, T, "_") = 0, 0, 1):
                Exit Sub
            Case Else: keycode = 0
            End Select
        End With
    End Sub
    Private Sub verifdate(txt As Object)
        Dim ctrl, z
         Dim dToDay As Date, Darrive$, DdiFF&
        If Not txt.Value Like "*_*" Then
            dToDay = Date: Darrive = txt.Value
            DdiFF = DateDiff("d", dToDay, CDate(Darrive))
            MsgBox "la diference est de  " & DdiFF & " jours"
        Else
            If txt.Value = "__/__/____" Then Exit Sub
            MsgBox "la date n'apas été compléteée entierement "
     
            '***************************************************
            'cette ligne ne fait pas son boulot conflit avec le focus du textbox suivant le celui qui est en  cause
            txt.SetFocus: txt.SelStart = InStr(1, txt.Text, "_") - 1
            '******************************************************
        End If
    End Sub
    voila
    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
      0  0

  6. #26
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    ce test ne suffit pas pour avoir un masque dynamique
    Une "bébelle" totalement ludique et qui ne justifie en aucun cas des "tortures" éventuelles (on en a vu plus haut des exemples) infligées à l'utilisateur, voire un arrêt en debug.
    On est totalement à côté de la plaque, lorsque les gênes de l'utilisateur sont plus présentes que le confort dont il est censé "profiter".
    Je "parle" peut-être beaucoup (mais toujours pour pointer du doigt les failles, voire les sources de problèmes majeurs), mais il me semble que je m' "agite" beaucoup moins dans tous les sens, hein ...
    Allons, allons ...
    A bientôt (sur le forum contributions, pas ici).
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      2  1

  7. #27
    Membre régulier
    Homme Profil pro
    Ingénieur maintenance industriel
    Inscrit en
    Juin 2018
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur maintenance industriel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2018
    Messages : 185
    Points : 79
    Points
    79
    Par défaut Re:Re:Re
    Bonjour à vous deux :

    Unparia je comprend ta démarche et je respecte ton choix pour attendre de contribuer. j'attend avec impatience ton code parfais

    Patricktoulon je reviens vers toi le code fonctionne beaucoup mieux et correspond plus à ce que je voulais. Cependant il reste une petit bug mais celui-ci ne semble pas réalisable dans toutes les situations.

    je te joint l'image attestant mes dires:
    Nom : Image5.PNG
Affichages : 185
Taille : 6,1 Ko

    j'ai également réussi à avoir 01/_9/2018
    Je te remercie encore pour ton aide.

    Cordialement,

    Passepartout007
      0  0

  8. #28
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    ben c'est simple on interdit le sellength(1)
    si tu veux revenir sur le jour ,le mois ,l'année tu selectionne les 2 chiffres ou les 4 pour l'année

    alors bien sur tu peux decider d'abandonner la saisie et aller sur un autre textbox

    et te retrouver avec exemple 21/1_/2018 ou 21/12/2___ mais tu aura le message de non remplissage la sub remplie donc son role

    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
    47
    48
    49
    Private Sub control_saisie(txt As Object, keycode)
    '--merci de laisser ces 2 lignes de commentaires si vous utiliser ce mécanisme--
    '-- l'auteur de cette fonction est Patrick Verne----:):):):):)Alias patricktoulon--------------------------
        Dim T$, X&
        With txt
            T = .Text
            X = .SelStart
            If .SelLength = 1 Then .SelLength = 0: keycode = 0: Exit Sub
            If .SelLength = 10 And keycode = 46 Then txt = "__/__/____": keycode = 0: .SelLength = 0: Exit Sub
            If Mid(T, X + 1, .SelLength) Like "*/*" Then keycode = 0: Exit Sub
            Select Case keycode
            Case 13:: Exit Sub
            Case 8
                .SelStart = X: keycode = 0:
                If X < 6 Then Mid(T, 4, 2) = "__": .Text = T: .SelStart = 2
                If X < 3 Then Mid(T, 1, 2) = "__": .Text = T: .SelStart = 0
                If X >= 6 Then Mid(T, 7, 4) = "____": .Text = T: .SelStart = 5
            Case 46
                .SelStart = X: keycode = 0:
                If X < 3 Then Mid(T, 1, 2) = "__": .Text = T: .SelStart = 3
                If X >= 3 And X < 6 Then Mid(T, 4, 2) = "__": .Text = T: .SelStart = 6
                If X > 4 Then Mid(T, 7, 4) = "____": .Text = T: .SelStart = 0
            Case 96 To 105
                T = .Text
                X = .SelStart
                If .SelLength > 1 Then
                    Mid(T, X + 1, .SelLength) = Chr(keycode - 48) & Left("___", .SelLength - 1): keycode = 0: .Text = T: .SelStart = X + 1: .SelLength = 0
                     If Not IsDate(Mid(T, 1, 6) & "2000") Then Mid(T, 4, 2) = "__": .SelStart = 3
                    If Mid(T, 4, 1) > 1 Then Mid(T, 4, 1) = "_":
                   Exit Sub
                End If
     
                If InStr(T, "_") = 0 And .SelLength = 0 Then keycode = 0
                T = .Text
                If InStr(1, T, "_") <> 0 Then Mid(T, InStr(1, T, "_")) = Chr(keycode - 48): keycode = 0
                If Val(Mid(T, 1, 1)) > 3 Then Mid(T, 1, 1) = "_"
                If Val(Mid(T, 1, 2)) > 31 Then Mid(T, 1, 2) = "__"
                If Val(Mid(T, 4, 1)) > 1 Then Mid(T, 4, 1) = "_"
                If Val(Mid(T, 4, 2)) > 12 Then Mid(T, 4, 1) = "__": keycode = 0: Exit Sub
                If InStr(1, T, "_") = 4 And Not IsDate(Mid(T, 1, 3) & "01/2000") Then Mid(T, 1, 2) = "__": .SelStart = 0
                If InStr(1, T, "_") = 7 And Not IsDate(Mid(T, 1, 6) & "2000") Then Mid(T, 4, 2) = "__": .SelStart = 3
                If Not T Like "*_*" And Not IsDate(Mid(T, 1, 6) & "2000") Then Mid(T, 4, 2) = "__": .Text = T
                If Not T Like "*_*" And Not IsDate(T) Then Mid(T, 7, 4) = "____"
                .Text = T: .SelStart = InStr(1, T, "_") - IIf(InStr(1, T, "_") = 0, 0, 1):
                Exit Sub
            Case Else: keycode = 0
            End Select
        End With
    End Sub
    merci pour les retours ca me permet de voir ce que j'ai pas vu ou essayé
    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
      0  0

  9. #29
    Membre régulier
    Homme Profil pro
    Ingénieur maintenance industriel
    Inscrit en
    Juin 2018
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur maintenance industriel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2018
    Messages : 185
    Points : 79
    Points
    79
    Par défaut Re : Cela semble fonctionner correctement.
    Bonjour,

    Je reviens vers toi patricktoulon, le code semble fonctionner correctement j'ai même essayer le Copier coller et rien n'y fais je ne peux pas mettre n'importe quoi, j'ai bien les message d'erreur que je voulais. Je te remercie pour ton travail et ta motivation dans l'amélioration de ton code.
    je copie le code final que j'ai :

    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    Option Explicit
    Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        verifdate TextBox1
    End Sub
    Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        verifdate TextBox2
    End Sub
    Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
        verifdate TextBox3
    End Sub
    Private Sub TextBox1_KeyDown(ByVal keycode As MSForms.ReturnInteger, ByVal Shift As Integer)
        control_saisie TextBox1, keycode
    End Sub
    Private Sub TextBox2_KeyDown(ByVal keycode As MSForms.ReturnInteger, ByVal Shift As Integer)
        control_saisie TextBox2, keycode
    End Sub
     
    Private Sub TextBox3_KeyDown(ByVal keycode As MSForms.ReturnInteger, ByVal Shift As Integer)
        control_saisie TextBox3, keycode
    End Sub
    Private Sub control_saisie(txt As Object, keycode)
    '--merci de laisser ces 2 lignes de commentaires si vous utiliser ce mécanisme--
    '-- l'auteur de cette fonction est Patrick Verne----:):):):):)Alias patricktoulon--------------------------
        Dim T$, X&
        With txt
            T = .Text
            X = .SelStart
            If .SelLength = 1 Then .SelLength = 0: keycode = 0: Exit Sub
            If .SelLength = 10 And keycode = 46 Then txt = "__/__/____": keycode = 0: .SelLength = 0: Exit Sub
            If Mid(T, X + 1, .SelLength) Like "*/*" Then keycode = 0: Exit Sub
            Select Case keycode
            Case 13:: Exit Sub
            Case 8
                .SelStart = X: keycode = 0:
                If X < 6 Then Mid(T, 4, 2) = "__": .Text = T: .SelStart = 2
                If X < 3 Then Mid(T, 1, 2) = "__": .Text = T: .SelStart = 0
                If X >= 6 Then Mid(T, 7, 4) = "____": .Text = T: .SelStart = 5
            Case 46
                .SelStart = X: keycode = 0:
                If X < 3 Then Mid(T, 1, 2) = "__": .Text = T: .SelStart = 3
                If X >= 3 And X < 6 Then Mid(T, 4, 2) = "__": .Text = T: .SelStart = 6
                If X > 4 Then Mid(T, 7, 4) = "____": .Text = T: .SelStart = 0
            Case 96 To 105
                T = .Text
                X = .SelStart
                If .SelLength > 1 Then
                    Mid(T, X + 1, .SelLength) = Chr(keycode - 48) & Left("___", .SelLength - 1): keycode = 0: .Text = T: .SelStart = X + 1: .SelLength = 0
                     If Not IsDate(Mid(T, 1, 6) & "2000") Then Mid(T, 4, 2) = "__": .SelStart = 3
                    If Mid(T, 4, 1) > 1 Then Mid(T, 4, 1) = "_":
                   Exit Sub
                End If
     
                If InStr(T, "_") = 0 And .SelLength = 0 Then keycode = 0
                T = .Text
                If InStr(1, T, "_") <> 0 Then Mid(T, InStr(1, T, "_")) = Chr(keycode - 48): keycode = 0
                If Val(Mid(T, 1, 1)) > 3 Then Mid(T, 1, 1) = "_"
                If Val(Mid(T, 1, 2)) > 31 Then Mid(T, 1, 2) = "__"
                If Val(Mid(T, 4, 1)) > 1 Then Mid(T, 4, 1) = "_"
                If Val(Mid(T, 4, 2)) > 12 Then Mid(T, 4, 1) = "__": keycode = 0: Exit Sub
                If InStr(1, T, "_") = 4 And Not IsDate(Mid(T, 1, 3) & "01/2000") Then Mid(T, 1, 2) = "__": .SelStart = 0
                If InStr(1, T, "_") = 7 And Not IsDate(Mid(T, 1, 6) & "2000") Then Mid(T, 4, 2) = "__": .SelStart = 3
                If Not T Like "*_*" And Not IsDate(Mid(T, 1, 6) & "2000") Then Mid(T, 4, 2) = "__": .Text = T
                If Not T Like "*_*" And Not IsDate(T) Then Mid(T, 7, 4) = "____"
                .Text = T: .SelStart = InStr(1, T, "_") - IIf(InStr(1, T, "_") = 0, 0, 1):
                Exit Sub
            Case Else: keycode = 0
            End Select
        End With
    End Sub
     
    Private Sub verifdate(txt As Object)
    Dim Dtoday As Date, Darrive As Date, ddiff As String
        If txt.Value = "__/__/____" Then Exit Sub
        If Not txt.Value Like "*_*" Then
     
            Dtoday = Date
            Darrive = txt.Value
            ddiff = DateDiff("d", Dtoday, Darrive)
                If ddiff < -20 Then
                MsgBox "Attention la date saisie est enterieur à 20 jours"
                End If
                If ddiff > 0 Then MsgBox "Attention la date saisie est posterieur à aujoud'hui"
     
                If ddiff > -20 And ddiff < 30 Then Exit Sub
     
     
        Else: MsgBox "la date n'a pas été complètée correctement"
     
     
        End If
    End Sub
    Encore merci à toi je vais pouvoir l'adapter à mon formulaire.

    J'attend également le retour d'unparia afin de voir ce qui propose et je mettrais le sujet comme résolu.

    Cordialement,
    Passepartout007
      0  0

  10. #30
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Bonjour passepartout
    merci pour le retour
    et oui moi aussi j'ai essayé tout les stratagemes pour planter et j'ai pas reussi il est donc impeccable
    je regarderais si je peux pas le simplifier encore mais en l'etat il est bien
    tu es arrivé au bon moment a vrai dire je travailais sur ce projet depuis quelque jours et notre ami unparia trouvais toujours moyen de planter mon code

    qu'il le fasse maintenant
    j'aime beaucoup ce genre d'exercice
    je travaille sur une version sans masque aussi
    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
      0  0

  11. #31
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    j'ai pas reussi il est donc impeccable
    Ah ? Ah bon ...
    et notre ami unparia trouvais toujours moyen de planter mon code

    qu'il le fasse maintenant
    j'aime beaucoup ce genre d'exercice
    Et ce n'est pas tout. L'essentiel est encore là
    Tu es bien certain, patricktoulon que ton code va bien et qu'il va bien sur TOUTES les machines ?

    Allez. Réfléchis (commence à le faire un peu). Cela fait du bien, sais-tu, de réfléchir.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      1  2

  12. #32
    Membre émérite
    Avatar de pijaku
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    1 814
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Août 2010
    Messages : 1 814
    Points : 2 949
    Points
    2 949
    Billets dans le blog
    10
    Par défaut
    Bonjour,

    Sans parler des différentes configurations de dates possibles sous différents OS, j'ai, je pense, un souci avec ma machine.

    Que vous donne ceci, lors de la frappe de la première touche :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub control_saisie(txt As Object, keycode)
    '--merci de laisser ces 2 lignes de commentaires si vous utiliser ce mécanisme--
    '-- l'auteur de cette fonction est Patrick Verne----:):):):):)Alias patricktoulon--------------------------
        Dim T$, X&
        With txt
            T = .Text
            X = .SelStart
            MsgBox "Text : --" & T & "-- Start : " & X
    Personnellement, j'ai ceci :
    Text : ---- Start : 0

    Si Text = "", ça va forcément planter au premier Mid rencontré...
    Ici ==>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not T Like "*_*" And Not IsDate(Mid(T, 1, 6) & "2000") Then Mid(T, 4, 2) = "__"


    Forcément, je n'ai pas chargé mes textbox avec le masque
    Cordialement,
    Franck
      0  0

  13. #33
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour, Franck
    configurations de dates possibles sous différents OS
    voilà l'un des deux aspects. Celui-ci est le moindre des deux et très facile à régler.
    Il y en a un second, bien plus redoutable.
    Amitiés à toi, Franck.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      0  1

  14. #34
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    il y a rien du tout il fonctionne parfaitement bien

    le format os different mais vous parlez de quoi la

    c'est un textbox et le format est celui decidé par le developpeur dans le userform et c'est celui que j'ai décidé et le textbox est en string on peut donc en faire ce que l'on en veut apres

    pia pia pour rien
    si vous le voulez dans un autre format en 3 minute vous pouvez modifier je m'y suis tenté et j'ai pas mis longtemps pour arriver au format "yyyy/mm/dd"

    pijaku oui il faut que le textbox ai deja la chaine masque sinon c'est sur ca ne fonctionne pas
    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
      0  1

  15. #35
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    pia pia pour rien
    Tu crois ? -->> bien -->> je vais te laisser continuer, donc. Et ne te parler de la chute qu'au bout de tes "travaux". C'est la seule manière, avec toi.
    si vous le voulez dans un autre format en 3 minute vous pouvez modifier je m'y suis tenté et j'ai pas mis longtemps pour arriver au format "yyyy/mm/dd"
    Relis ce que j'en ai dit plus haut. Cet aspect-là, c'est de la gnognotte. Rien à voir avec un autre aspect n'ayant rien à voir avec celui-ci.
    La raison de mon attitude ? -->> je n'aime pas les auto-congratulations ni que l'on qualifie d' "impeccable" ce qui ne l'est pas, ni que l'on continue à se présenter comme l'auteur d'un mécanisme qu'on a du modifier x fois après interventions de tiers.
    Voilà pourquoi je vais te laisser faire jusqu'au bout et ne te dire qu'à la fin pourquoi il te faudra tout démolir
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      0  1

  16. #36
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    La raison de mon attitude ? -->> je n'aime pas les auto-congratulations ni que l'on qualifie d' "impeccable" ce qui ne l'est pas, ni que l'on continue à se présenter comme l'auteur d'un mécanisme qu'on a du modifier x fois après interventions de tiers.
    ause dire que j'en suis pas l'auteur !!!!!!

    intervention de quoi je crois pas me souvenir que qui que se soit m'a corrigé une ligne de mon code

    seulement révéler les bugs en l'essayant

    pour critiquer et cracher ton venin t'es fort toi , ca a un nom ca


    c'est la meilleur celle la !!!!!c'est pas mon travail tu me les aura toutes faites toi




    et comment tu a apris toi !!!!!! sans les autres ??????

    pauvre ...
    puré il arrive encore a me foutre les boules celui la !!!!!

    Voilà pourquoi je vais te laisser faire jusqu'au bout et ne te dire qu'à la fin pourquoi il te faudra tout démolir
    non ca ne m'interesse pas!!! comment il faut te le dire
    je veux rien de toi , tu pourrie mes contribs, denigre mon travail et celui des autres

    @passepartout j'ai une version pour toi si tu veux acceptant les formats "dd/mm/yyyy" ou "mm/dd/yyyy" et le code est plus court et plus propre si tu la veux envoie un MP
    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
      0  2

  17. #37
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Perso, je préfère "taper sur les doigts" a posteriori plutôt que de tenter de guider l'utilisateur durant la saisie. Sur le BeforeUpdate, on invoque une fonction qui teste que la saisie est bien une date au format demandé (sans s'amuser à ce que la fonction teste tous les formats de date possibles, évitons l'usine à gaz) et on informe l'utilisateur si problème.

    Perso, me faire guider et corriger en cours de frappe, je déteste ça, et utiliser des datapicker, je déteste tout autant

    [EDIT] Et si ça démange vraiment le développeur de me mettre un contrôle qui "me guide", il aura intérêt à ce que l'ergonomie proposée soit conforme à une saisie habituelle et intuitive, comme le dit Jacques dans le message qui suit. Avoir mon point d'insertion qui saute d'une zone à l'autre en fonction de la saisie, comme je viens de le constater sur un code proposé, a le don de m'énerver...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------
      2  0

  18. #38
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Mille fois d'accord avec Pierre Fauconnier.
    C'est d'ailleurs ce que j'ai dit sur ce forum à plusieurs reprises et que j'ai à nouveau dit dans la présente discussion -->>
    D'autant que (je l'ai dit à plusieurs reprises sur ce forum) je ne suis pas fan de ce genre de contrôle inutilement alourdissant en cours de saisie, alors qu'il est vraiment simple de contrôler tout simplement in fine que la date saisie est une date valide.
    Mais si l'on tient absolument à un contrôle en cours de saisie, il convient alors de tout mettre en oeuvre pour que l'outil soit :
    - sans aucune faille et fonctionne sur toutes les machines
    - d'une très grande convivialité (que les gestes "naturels" et instinctifs de l'utilisateur soient pris en compte)
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.
      3  0

  19. #39
    Membre régulier
    Homme Profil pro
    Ingénieur maintenance industriel
    Inscrit en
    Juin 2018
    Messages
    185
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur maintenance industriel
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2018
    Messages : 185
    Points : 79
    Points
    79
    Par défaut Re
    Bonjour à tous,

    Il est vrais que le contrôle en cours de saisie n'ai pas forcément très ergonomique pour l'utilisateur.
    Cependant lors de la saisie si l'utilisateur veux rentrer une date dans la généralité il ne va pas se tromper et rentrer une bonne date.
    Dans la participation de @patricktoulon si l'utilisateur ne se trompe pas son code fonctionne parfaitement et ne contraint en rien l'utilisateur.
    Si en revanche l'utilisateur se trompe de touche il ne se passe rien et rien n'est écrit. Toute fois si une erreur est repérée elle est signalée à la sortie de la Textbox. Il est vrais que l'ergonomie de saisie et la manière de supprimer les données de la textbox n'est pas optimal. Mais ce code répond aux demandes que j'ai formulées au début de cette discution. Je ne m'y connaissais pas assez pour suivre les détails du code. et je comprend tout à fais la démarche unparia de montrer les failles de ce code, afin que celui-ci s'améliore. Cependant il effectue des fois des critiques qui ne sont pas forcément constructive et je comprend l'agacement de patricktoulon, qui à peu le prendre comme un acharnement.

    Dans tous les cas je tiens à remercier patricktoulon pour sa participation et sa grosse contribution dans l'élaboration d'un masque de saisie pour une date.
    Je remercie Unparia pour ses avertissements potentiel de défaut du code, et reste à l'écoute d'autres propositions de sa part. (Également des conseils afin d'évité les codes à faille).
    Je remercie tous les autres pour leurs interventions et leurs conseils et apports de leur points de vue.

    Je laisse le sujet non résolut car il semble qu'il existe une défaillance dans le code de patricktoulon (qui ne m'impacte pas) et laisse également les autres contributeurs d'apporter leur pierre à l'édifice.

    Cordialement,
    Passepartout007
      2  0

  20. #40
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    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 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    bonjour passepartout et merci pour ton soutient

    je réhitere ma proposition sur le model acceptant les 2 format si ca t'intéresse fait le moi savoir

    question ergonomie
    je pense que des que l'on contraint l'utilisateur a revenir on ne peut plus parler d'ergonomie


    cependant Pierre m'a fait une remarque tres interessante qui entrerais tres bien dans le cadre (de l'ergonomie)
    donc dans ma derniere version j'ai supprimé les selections automatiques
    on a ainsi la touche back et suppr a dispo tout le temps


    quand le mois ou le jour n'est pas bon il est effacé et laisse la place a sa partie equivalente du masque et sans selection cette fois ci

    encore merci pour ton soutient
    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
      1  0

Discussion fermée
Cette discussion est résolue.
Page 2 sur 3 PremièrePremière 123 DernièreDernière

Discussions similaires

  1. [XL-2007] Copier textbox vers autre textBox
    Par apdf1 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 23/08/2013, 17h40
  2. Réponses: 5
    Dernier message: 22/11/2006, 23h24
  3. envoyer contenu textbox vers autre textbox d'une popup..
    Par metatron dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 10/08/2006, 17h31
  4. [VB6]Creer un autre TextBox à partir d'une Textbox Existante
    Par bb62 dans le forum VB 6 et antérieur
    Réponses: 24
    Dernier message: 18/01/2006, 08h20
  5. Réponses: 1
    Dernier message: 25/09/2005, 20h03

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