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 :

Vérification d'une TextBox


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2018
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Décembre 2018
    Messages : 98
    Par défaut Vérification d'une TextBox
    Bonjour,

    Je doit vérifier la saisie de ma TextBox. La saisi de la TextBox me permet de mettre à jour l'indice ou version d'un document. La vérification doit me permettre de savoir si la saisie est pour indice majeur (A ou AA jusqu'as Z par exemple), ou de savoir si je suis en indice mineur (1A, A1 avec évolution du numérique)

    Pour l'indice mineur je doit écrire dans un fichier Txt à la ligne du numérique si 1 à la première, si 2 à la seconde etc.., Si Indice Majeur A l'indice se mets en première ligne en effacent se qu'il y a dedans.

    Par contre quand je passe en indice mineur supérieur c'est à dire 1B, la première ligne reste et l'indice se mets en seconde ligne et ainsi de suite pour les indices mineur (en A, B, C, etc..). Quand on passe en indice majeur B les indices mineur B s'efface et B viens en seconde ligne en conservant la première même processus pour le reste des lettres.

    Pour le moment j'ai un problème pour savoir si c'est un indice majeur ou mineur qui est inscrit dans la case.

    Voici ce que j'ai testés, tenté mais je n'y arrive pas. Car quand je met AA, il passe par "Indice mineur", et après "Majeur".

    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
     
    Private Sub CommandButton8_Click()
    Dim i As Integer
    Dim N As String
    Dim c As Integer
    Dim V As Integer
    Dim N1 As Integer
    Dim titi() As Byte
     
     
       titi = StrConv(TextBox4.Text, vbFromUnicode)
     
       For i = 0 To UBound(titi)
         'MsgBox Chr(titi(i))
       Next
     
     
        V = Len(TextBox4.Value)
     
    If V = 1 Then
        If 65 >= Asc(titi(0)) <= 90 Then
            MsgBox " MAjeur"
        Else
            MsgBox "erreur"
        End If
    End If
     
     
    If V = 2 Then
        If 48 >= Asc(titi(0)) <= 57 Or 48 >= Asc(titi(1)) <= 57 Then
            MsgBox "Mineur"
     
            N = Left(TextBox4.Value, 1)
            If 48 >= Asc(titi(0)) <= 57 And IsNumeric(N) Then
                N1 = Left(TextBox4.Value, 1)
                MsgBox "Valeur a partir de la gauche : " & N1
            End If
     
            N = Right(TextBox4.Value, 1)
            If 48 >= Asc(titi(1)) <= 57 And IsNumeric(N) Then
                N1 = Right(TextBox4.Value, 1)
                MsgBox "Valeur a partir de la droite : " & N1
            End If
        End If
            'If 65 < Asc(N) < 90 Then
            If 65 >= Asc(titi(0)) <= 90 And 65 >= Asc(titi(1)) <= 90 Then
            'Else
                MsgBox "Majeur"
            End If
    End If
     
     
        'N = Left(TextBox4.Value, 1)
        'If V <= 2 And IsNumeric(N) Then
                'If IsNumeric(N) Then
                    'If 0 < Asc(N) < 9 Then
                        'MsgBox "mineur"
                        'N1 = CInt(N)
                    'End If
                'Else
                    'If 65 < Asc(N) < 90 Then
                        'MsgBox "majeur"
                    'End If
                'End If
        'Else
        'MsgBox "C'est inverser"
     
        'End If
    End Sub
    Merci du coup de main.

  2. #2
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2018
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Décembre 2018
    Messages : 98
    Par défaut
    En continuant de faire mes test je me suis rendu compte que je bute sur quelque problème.

    Premier problème quand je suis en 1B il faut qu'il m'écrive sur la seconde ligne, comment faire le distinguo avec l'indice 1A

    J'ai un autre problème que j'ai contourné mais ça ne me plait pas car je pense qu'il y a plus propre à faire.

    Je vous mets mon code qui à évolué. Merci de votre aide.

    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
     
            V = Len(TextBox4.Value) 'Longueur du texte
            NR = Right(TextBox4.Value, 1) 'renvoie le premier caratère à doite
            NL = Left(TextBox4.Value, 1)  'renvoie le premier caratère à gauche
     
            If V <= 1 And 65 >= titi(0) <= 90 Then
                If NR = "A" Then
                    'MsgBox "A ecrire sur 1er ligne"
                    Open MonFichier For Output As #1
                    Print #1, Texte
                    Close #1
                ElseIf NR = "B" Then
                    'MsgBox " A écrire sur la seconde ligne"
                    '' Si pas d'erreur on peut faire une modification sur une ligne.
                    If Lignes(1) <> "NOK" Then
                        'Modification de la ligne 2
                        Lignes(2) = Texte
                        Lignes(3, 8) = ""
     
                        'Ecriture du fichier
                        FichierModifie = EcritureFichier(MonFichier, Lignes)
                    End If
                ElseIf NR = "C" Then
                    'MsgBox " A écrire la 3"
                    '' Si pas d'erreur on peut faire une modification sur une ligne.
                    If Lignes(1) <> "NOK" Then
                        'Modification de la ligne 3
                        Lignes(3) = Texte
                        Lignes(4, 9) = ""
     
                        'Ecriture du fichier
                        FichierModifie = EcritureFichier(MonFichier, Lignes)
                    End If
                Else
                    MsgBox "Pas encore fait"
                End If
            ElseIf V >= 2 And 48 >= titi(0) <= 57 And 65 >= titi(1) <= 90 And Not IsNumeric(NL) And IsNumeric(NR) Or IsNumeric(NL) And Not IsNumeric(NR) Then
                If IsNumeric(NL) Then
                    N1 = CInt(NL)
                End If
                If IsNumeric(NR) Then
                    N1 = CInt(NR)
                End If
                'MsgBox " Indice Mineur" & NL & NR
                If NL = "1" Or NR = "1" Then
                    Open MonFichier For Output As #1
                    Print #1, Texte
                    Close #1
                End If
                If NL <> "1" And NR <> "1" Then
                        Open MonFichier For Append As #1
                        Print #1, Texte
                        Close #1
                End If
               'MsgBox "Mauvaise Saisie"
            ElseIf V >= 2 And 65 >= titi(0) <= 90 And 65 >= titi(1) <= 90 And Not IsNumeric(NL) And Not IsNumeric(NR) Then
                MsgBox " Indice Majeur" & NL & NR
            End If
    Merci de l'aide

  3. #3
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    Bonjour,

    Pas tout compris !

    on veut vérifier le niveau d'une saisie, mais c'est la saisie qui détermine le niveau ???

    Par ailleurs, dans:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If ...  65 >= titi(0) <= 90 Then
    cette façon d'écrire ne fonctionne pas comme on pourrait s'y attendre, il faut écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If...  titi(0) <=  65   And titi(0) <= 90 Then
    Est ce normal qu'on teste, que titi(0) est inférieur à 65 et inférieur à 90 ?

    A+

  4. #4
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2018
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Décembre 2018
    Messages : 98
    Par défaut
    Pour explication, l'utilisateur met une valeur dans la textbox4.

    l'utilisateur mets une valeur de type : numérique & alphabétique, ou l'inverse. pour se que vont appeler un indice mineur

    Si l'utilisateur rentre alphabétique & alphabétique ou que alphabétique c'est un indice majeur

    Quand l'indice est mineur il se met à la suite.

    Si l'indice A est mis simple ou double, le texte se mets sur la première ligne d'un fichier txt.

    Quand je passe à l'indice 1B l'indice A reste sur la première ligne et les indice mineur se mette à la ligne du dessous.

    au passage en indice B les indices mineur se supprime et l'indice B se met en seconde lignes. Et ainsi de suite.

    Donc je vérifie les caractères qui sont taper pour savoir se que c'est et ou je mets le texte.

    J'espère avoir répondu à tes interrogations.

  5. #5
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    Quand l'indice est mineur il se met à la suite.
    à la suite de quoi et dans quoi ?


    Quand je passe à l'indice 1B l'indice A reste sur la première ligne et les indice mineur se mette à la ligne du dessous.
    ca voudrait dire qu'on a déjà saisi l'indice majeure B ?


    au passage en indice B les indices mineur se supprime et l'indice B se met en seconde lignes. Et ainsi de suite.
    les indices mineurs se suppriment : lesquels, ceux de l'indice majeur précédent?
    pourquoi inscrire les indices mineurs si c'est pour les supprimer?


    L'ordre des indices majeurs est il figé (A B C...) ? quel est sa limite supérieure ? pourquoi A ou AA (c'est la même chose?)
    les indices mineurs sont ils toujours de la forme A1 B5.... ? jusqu'à combien ?

    Part-on de rien ou bien d'une situation existante?

    en plus il serait question d'indices mineurs supérieurs, y en a-il des "inférieurs"?

    Désolé, mais ça reste trop évasif pour moi.

  6. #6
    Membre confirmé
    Homme Profil pro
    Ingénieur
    Inscrit en
    Décembre 2018
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Ingénieur

    Informations forums :
    Inscription : Décembre 2018
    Messages : 98
    Par défaut
    je crée un fichier txt avec une macro qui mets sur la première ligne, le premier indice mineur 1A ou A1 ça dépend des projets.

    L'indice suivant peut être un indice mineur avec le numérique qui évolue. Une vérification doit être faite, savoir si le texte qui est noté est de la même forme qui se trouve dans le fichier texte.

    Si c'est le cas il se mets sur la ligne suivante.

    Sinon on peut passer directement en majeur. L'indice majeur peut être du type A ou AA selon les projets. Si l'indice majeur est A il efface tout les indices mineur lui correspondant.

    Ensuite normalement on passe à l'indice mineur 1B ou B1 comme précédemment, cette indice doit se mettre sur la ligne suivante de l'indice A, tout en le concevant.

    Il n'y a pas de limite avec les indices mineur ou majeur.

    Pour exemple de mon fichier txt :
    1A
    2A
    3A
    etc...

    Si indice majeur :
    A

    Si indice mineur <> de A
    A
    1B
    2B

    Passage en indice B
    A
    B

    Etc...

  7. #7
    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 re
    bonjour
    puré c'est dur tellement c'est evasif
    cela dit je crois comprendre
    je tape 1A c'est le premier
    je tape A le 1A est supprimé dans le fichier text et remplacé par A
    je tape AA ca s'ajoute en dessous dans le fichier text
    je tape AB ca s'ajoute
    blablabla......
    je tape 1B ca s'ajoute
    je tape B ca suprime le 1B et on ajoute B

    est ce bien ca
    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

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

Discussions similaires

  1. [Débutant] Vérification instantannée dans une TextBox
    Par seanbean dans le forum C#
    Réponses: 8
    Dernier message: 15/12/2011, 21h17
  2. Dans un "userform", vérification du contenu d'une "textbox" en la quittant
    Par Harry Covair dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/09/2008, 09h24
  3. Réponses: 2
    Dernier message: 14/06/2007, 14h11
  4. [c#] valider une textbox
    Par tomtom41 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 17/04/2005, 20h30
  5. Vérification d'une requête ...
    Par Kokito dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/06/2004, 13h59

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