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

VB 6 et antérieur Discussion :

suppression d'une chaîne de caractères


Sujet :

VB 6 et antérieur

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    968
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 968
    Points : 141
    Points
    141
    Par défaut suppression d'une chaîne de caractères
    Bonjour,

    J'aimerais arranger mon code qui prévoit, si un utilisateur supprime des caractères dans un comboboxtextarea, que la valeur de la chaîne saisie( appelée sPrefix dans le code) diminue d'autant de caractères que de fois que l'utilisateur a tapé sur la touche Backspace.

    Cependant il se peut que l'utilisateur selectionne plusieurs caractères à la fois et les supprime en un seule fois.

    Pouriez vous m'aider à arranger mon code en ce sens afin que la valeur de la chaîne saisie restante soit toujours exacte.

    Merci beaucoup à vous

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Private sPrefix as String
    Private Sub Text3_KeyPress(KeyAscii As Integer)
     
     
     If KeyAscii = 8 Then
                If Len(sPrefix) > 0 Then
                sPrefix = Mid(sPrefix, 1, Len(sPrefix) - 1)
                Else
                sPrefix = ""
            End If
            Exit Sub
        End If

  2. #2
    Membre régulier Avatar de biquet
    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 199
    Points : 105
    Points
    105
    Par défaut
    salut,
    tu peux tester apres les suppressions ta chaine de caractère.

    tu lui défini un alphabet, ici un espace
    puis tu parcours ta chaine de caractère et si il rencontre des espace alors il ne le met pas dans ta variable. Ca peut être un truc du genre (mais à réflechir)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for i = 1 to length(sPrefix)
            If Not InStr(1, alphabet, moncar) > 0 Then
                sprefix2 = sprefix2 & moncar
     
    next i

  3. #3
    Nouveau membre du Club
    Profil pro
    Developpeur
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par harbonne
    Pouriez vous m'aider à arranger mon code en ce sens afin que la valeur de la chaîne saisie restante soit toujours exacte.

    envois le projet complet qu'on le corrige ça ira plus vite...

  4. #4
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Tout simplement sur l'évenement KeyUp :

  5. #5
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    Ou dans l'evenement Change de ta boite Text :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Private Sub Text3_Change()
    sPrefix = Text3.text
    end sub
    Avantage : Si l'utilisateur change le contenu de ta boite, ta variable est mise a jour, mais si ton appli change aussi le contenu, elle est aussi mise a jour

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    968
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 968
    Points : 141
    Points
    141
    Par défaut suppression par backspace
    Rebonjour,

    Je ne sais si mon message a ete efface mais je reprends:

    Voici le code que j'ai finalement ecrit

    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
     
     
    Private sPrefix as String
    Private Sub Text3_KeyPress(KeyAscii As Integer)
     
     
        ' si le caractère saisi est le Backspace alors
     
         If KeyAscii = 8 Then
                If Len(sPrefix) > 0 And Text3.SelLength = 0 Then
                sPrefix = Mid(sPrefix, 1, Len(sPrefix) - 1)
                ElseIf Text3.SelLength > 0 Then
                sPrefix = Mid(sPrefix, 1, Len(sPrefix) - Text3.SelLength)
                Else
                sPrefix = ""
            End If
            Exit Sub
        End If
     
     
          '
    Jene sais ce que vous en pensez, vos conseils sont bienvenus mais çà fonctionne.

    Le nouveu pb est le cas oùun utilsateur remplace un caractère non pas par la touche backspace mais directement en le selectionnant .

    Comment puis je recupérer la valeur exacte de sPrefix?

    Merci à vous de votre aide.

    cordialement.
    Nathalie

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Pourquoi as-tu reposté?

    As-tu lu?
    http://www.developpez.net/forums/sho...48#post1333548

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    968
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 968
    Points : 141
    Points
    141
    Par défaut pb de remplacement d'un caractère
    Bonjour,

    Le pb n'est pas résolu dans le cas où un utilsateur selectionne un caractère pour le changer car le contenu de
    Text3.Text ne contient pas le contenu nouveau mais toujours l'ancien et cette valeur ne change donc pas et celle de sPrefix devient Text3.Text+le caractère de remplacement... ce qui cause pb!!.

    Je ne suis pas très expérimentée en la matière , peut être pouvez vous m'aider à résoudre ce petit pb.

    Merci beaucoup à vous.

    Voici mlon code
    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
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
     
     
    Private Sub Text3_KeyPress(KeyAscii As Integer)
     
     Dim I As Integer
        Dim s As String
        Dim bValid As Boolean
     
     
        bValid = False
     
     
        ' si le caractère saisi est le Backspace alors
     
         If KeyAscii = 8 Then
               If Len(sPrefix) > 0 Then 'And Text3.SelLength = 0
                sPrefix = Mid(sPrefix, 1, Len(sPrefix) - 1)
                Exit Sub
               ElseIf Text3.SelLength > 0 Then
    '            sPrefix = Mid(sPrefix, 1, Len(sPrefix) - Text3.SelLength)
                Text3_Change
              Else
                sPrefix = ""
                End If
                Exit Sub
          End If
     
         If Text3.SelLength > 0 Then
         Text3_Change
         End If
     
     
     
     
          '
     
     
          '
          '       si les caractères saisis ne sont pas des nombres, on sort de la procedure
          '
          If Chr(KeyAscii) < "0" Or Chr(KeyAscii) > "9" Then
             KeyAscii = 0
             MsgBox " Vous ne pouvez saisir que des nombres", vbExclamation
             Exit Sub
          End If
     
     
     
          '
          For I = 0 To Combo1.ListCount - 1
            '
            s = Mid(Combo1.List(I), 1, ACCLEN)
            '
     
            'attention :tant que bValid ne change pas explicitement de valeur dans un if de la boucle for, elle conserve sa valeur precedente dans cette boucle
            If Len(sPrefix) = ACCLEN - 1 And sPrefix & Chr(KeyAscii) <> s Then
            bValid = True
            End If
     
     'si la longueur de la chaîne déjà saisie  =4(5-1) et que la concaténation de la chaîne déjà saisie et
            'du caractère en cours = le nombre testé dans la comboliste
                    If Len(sPrefix) = ACCLEN - 1 And sPrefix & Chr(KeyAscii) = s Then
                        MsgBox "le nombre saisi existe déjà dans la liste des comptes du plan sru", vbExclamation
                        Text3.Text = ""
                        bValid = False
                        Exit For
                        Exit Sub
                    End If
     
            ' si la sous chaîne qui va du premier caractère du nombre testé dans la comboliste
            'à son troisième au maximum est égale à la concaténation de la chaîne déjà saisie
            'et du caractère en cours
            If Mid(s, 1, Min(3, Len(sPrefix) + 1)) = sPrefix & Chr(KeyAscii) Then
               bValid = True
               Exit For
            End If
            '
            If Len(sPrefix) >= ACCLEN - 2 And Len(sPrefix) <> ACCLEN - 1 Then
              bValid = True
              Exit For
            End If
     
     
     
          Next I
     
          '
          If bValid = False And sPrefix & Chr(KeyAscii) <> s Then
             KeyAscii = 0
             MsgBox "le nombre saisi ne correspond pas à un compte comptable du plan sru", vbExclamation
     
             ElseIf bValid = False Then ' on considère le cas où sPrefix & Chr(KeyAscii)=s,le msgbox précédent n'est pas justifié
             KeyAscii = 0
             sPrefix = ""
     
          Else
              '
              '     si la variable bValide= true alors on ajoute à la valeur de sPrefix celle du caractère en cours,
              '    pour pouvoir refaire le test de la boucle for
     
              sPrefix = sPrefix & Chr(KeyAscii)
              '
              If Len(sPrefix) = ACCLEN Then
     
                If peut_ajout(Mid(sPrefix, 1, ACCLEN - 1)) = True Then
    '                MsgBox "on peut inserer le nouveau compte dans la BDD"
     
                    '
                    '
                Else
                    If Mid(sPrefix, ACCLEN, 1) = "0" Then
                       If peut_ajout(Mid(sPrefix, 1, ACCLEN - 2)) = True Then
    ''                     MsgBox "on peut inserer le nouveau compte dans la BDD ", vbExclamation
    '
    '                     '
                       Else 'si peut_ajout(Mid(sPrefix,1,ACCLEN-2))=True n'est pas vérifié
    '                    Beep
                        MsgBox "on ne peut pas créer de nouveau compte", vbExclamation
                        KeyAscii = 0
                        sPrefix = ""
                        Text3.Text = ""
                        Exit Sub '
                       End If ' fin de  If peut_ajout(Mid(sPrefix, 1, ACCLEN - 2)) = True
    '                   peut_ajout (Mid(sPrefix, 1, ACCLEN - 2))
                       '
                    End If 'fin de If  Mid(sPrefix, ACCLEN, 1) = "0"
     
     
                    End If 'If peut_ajout(Mid(sPrefix, 1, ACCLEN - 1)) = True
    '
              End If 'If Len(sPrefix) = ACCLEN
            End If 'fin de if bValid=False
     
    End Sub
    Private Sub Text3_Change()
    sPrefix = Text3.Text

    End Sub

    [/code]

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Bon...

    Tu ne vas pas nous poser une question à chaque erreur que tu rencontres?

    Il est permis de réfléchir, de temps en temps.

    La solution t'a été donnée par avigeilpro.
    Elle remplace tous tes tests compliqués.

    Si tu veux qu'on écrive tout ton code à ta place, c'est dans le forum Offres d'emploi qu'il faut poster.

  10. #10
    Membre éprouvé Avatar de avigeilpro
    Homme Profil pro
    Ambulancier
    Inscrit en
    Janvier 2004
    Messages
    880
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Creuse (Limousin)

    Informations professionnelles :
    Activité : Ambulancier
    Secteur : Transports

    Informations forums :
    Inscription : Janvier 2004
    Messages : 880
    Points : 971
    Points
    971
    Par défaut
    En effet, si tu place le code dans l'événement Change de ton control, quel que soit la façon dont ta boite texte est modifiée et quel que soit le changement, ta variable sPrefix sera toujours à jour.

  11. #11
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    968
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 968
    Points : 141
    Points
    141
    Par défaut suppression d'un caractère
    Citation Envoyé par avigeilpro
    En effet, si tu place le code dans l'événement Change de ton control, quel que soit la façon dont ta boite texte est modifiée et quel que soit le changement, ta variable sPrefix sera toujours à jour.
    non, c'est là le pb, quand je me positionne sur un caractère et le remplace, le Text3.Text devient la mêmcahîne plus le caractère de remplacement!!
    C'est la le pb, il n'y a pads d'effacement du caractère et sPrefix n'est pas mise à jour.

    Je refléchis au pb mais me demande s'il ne faudrait pas demander aux utilisateurs d'emblée d'utiliser la touche backspace pour remplacer un caractère comme cela le pb serait réglé!!

    Cordialement

    Nathalie

  12. #12
    Nouveau membre du Club
    Profil pro
    Developpeur
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Points : 36
    Points
    36
    Par défaut
    Citation Envoyé par harbonne
    Je refléchis au pb mais me demande s'il ne faudrait pas demander aux utilisateurs d'emblée d'utiliser la touche backspace pour remplacer un caractère comme cela le pb serait réglé!!
    Nathalie
    Demande carrément aux utlisateurs de saisir les données dans la base access...

  13. #13
    Futur Membre du Club
    Inscrit en
    Avril 2005
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 7
    Points : 8
    Points
    8
    Par défaut
    Un gros message rouge pour indiquer ce que l'utilisateur doit saisir, ça fait pas sérieux !!!
    Pour tester les programmes, mon prof d'informatique appuyait de ses deux grosses mains sur tout le clavier. Dans ton programme avec cette méthode c'est le plantage assuré.

    Allez bon courage, tu vas bien trouver une solution

  14. #14
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    968
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 968
    Points : 141
    Points
    141
    Par défaut suppression d'un caractère
    Bonjour,

    Je n'apprécie pas tes blagues de mauvais goût...mon pb est URGENT!!

  15. #15
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 71
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Ca n'est pas une blague, mais une marque de : m'enfin , il est lourd
    Tu insistes pour tester les frappes clavier. ce n'est pas la bonne solution
    Laisse tomber le _KeyPress (efface tout le code dans l'evenement) et Travaille sur le _Change

    Relis le post d Avigeilpro plus haut

  16. #16
    Nouveau membre du Club
    Profil pro
    Developpeur
    Inscrit en
    Mars 2005
    Messages
    30
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Mars 2005
    Messages : 30
    Points : 36
    Points
    36
    Par défaut
    C'est peut etre lourd mais ce qui est aussi lourd c'est de voir qu'on veut t'aider et que tu t'entete dans ta solution que tout le monde te deconseille

  17. #17
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par harbonne
    Bonjour,

    Je n'apprécie pas tes blagues de mauvais goût...mon pb est URGENT!!
    Si tu ne les apprécies pas, ne te mets pas dans la position de les provoquer.

    Alors, soit tu fais ce qu'on te conseille, soit tu t'abstiens de poster ici.

    Si c'est pour nous demander une solution et ne pas l'appliquer, je ne vois pas pourquoi tu es là...

    Et, accessoirement, ce n'est pas nous qui avons fait que ton problème est urgent, c'est toi!

  18. #18
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    968
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 968
    Points : 141
    Points
    141
    Par défaut suppression d'un caractère
    Le pb est qu'ensuite dans cet evènement keypress il y a une validation cde sPrefix que je ne peux effectuer qu'en utilisant cet evènement!!!!
    Je n'azi pas que cela à faire de m'entêter.
    Nathalie

  19. #19
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par harbonne
    Je n'azi pas que cela à faire de m'entêter.
    On n'a pas que cela à faire de te répondre... pour que tu ne fasses pas ce qu'on te propose.

  20. #20
    Inactif  
    Avatar de jmfmarques
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    3 784
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 3 784
    Points : 4 674
    Points
    4 674
    Par défaut
    un bonjour de passage, Alain,

    Que t'arrive-t-il ?

    As-tu oublié :
    http://www.developpez.net/forums/sho...3&postcount=18
    et le messade qui précédait... et celui qui suivait ?
    Vous voilà, je le crains, dans le même cas que celui d'une bb (je ne me rappelle plus le n° qui suivait...)
    Tu vas commencer à me comprendre, je pense ... et je le regrette vraiment....

Discussions similaires

  1. Suppression d'une chaîne de caractères
    Par GameRoot dans le forum Requêtes
    Réponses: 3
    Dernier message: 18/05/2014, 13h54
  2. [WebI XiR2] Suppression d'un espace dans une chaîne de caractères
    Par SGA99 dans le forum Débuter
    Réponses: 6
    Dernier message: 02/12/2010, 17h12
  3. suppression des espaces d'une chaîne de caractère
    Par tubaas dans le forum MATLAB
    Réponses: 6
    Dernier message: 18/03/2010, 20h19
  4. Réponses: 5
    Dernier message: 25/02/2008, 14h34
  5. Réponses: 13
    Dernier message: 20/11/2006, 17h46

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