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

Access Discussion :

[Novice] Suppresion d'une partie de chaine de caractère


Sujet :

Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 38
    Points
    38
    Par défaut [Novice] Suppresion d'une partie de chaine de caractère
    Voila... J'ai un problème simple (a priori) dont je n'arrive pas à trouver la réponse.

    J'ai une zone de texte qui prend la valeur d'une variable (changeante suivant une selection).

    La variable est une chaine de caractère de cette forme : XX-yy (ZZZ)

    J'aimerai que lors de la copie, la partie entre ( ) soit retirée de la chaine de caractères.

    Merci d'avance.

  2. #2
    Membre averti Avatar de temar
    Profil pro
    Étudiant
    Inscrit en
    Août 2004
    Messages
    316
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2004
    Messages : 316
    Points : 300
    Points
    300
    Par défaut
    Salut,

    En 5 secondes et 3 clics, j'ai trouvé ça dans la Faq :

    http://access.developpez.com/faq/?pa...erChaineCaract

    A+

  3. #3
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 38
    Points
    38
    Par défaut
    Au temps pour moi... Mais en tout cas ca résoud pas mon problème. Pas besoi n d'être sec d'ailleurs. J'ai toujours pour mes questions cherché dans la FAQ avant de poster.

    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Key_NivClik = 3 Then
         Me.PNTxt = Me.xTree.SelectedItem
       End If
    Si le curseur est au niveau 3 de mon arborescence, il retourne sur mon champ PNTxt l'objet selectionné. Je n'arrive pas à voir comment je pourrais insérer un contrôle là dedans.

    Sachant comme je l'ai dit que la forme peut être:

    X-YY (ZZZZZ)

    Sachant que X peut être soit composé d'un, deux ou trois caractères.
    YY sera toujours deux chiffres.

    Et le nombres de caractères entre () peut varier.

    Comment puis-je définir une variable de type String, lui donner la valeur de cette objet selectionné et ensuite retirer la partie entre (). A partir des fonctions de la FAQ je ne vois pas...

    D'ou ma question.

  4. #4
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Salut Cyphen,

    Je suis également débutante et j'ai rencontré le même problème que toi!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    La variable est une chaine de caractère de cette forme : XX-yy (ZZZ)
    D'après ce que tu écris, ta parenthèse fermante se trouve toujours en fin de chaîne!
    Ce que j'ai fait, c'est que j'ai utilisé la fonction InStr qui me donne la position de la parenthèse ouvrante dans la chaîne, puis avec la fonction left, je n'ai conservé que les caractères se trouvant à gauche de cette parenthèse ouvrante!

    Ce qui donne :

    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
    rst.MoveFirst
    While Not rst.EOF
      rst.Edit
      
      If Not IsNull(rst.Fields(OldFld)) Then
             Position = InStr(rst.Fields(OldFld), "(")
    Else: Position = 0
      End If
      
      If Position <> 0 Then
         rst.Fields(NewFld) = Left(rst.Fields(OldFld), Position - 1)
         Else: rst.Fields(NewFld) = rst.Fields(OldFld)
      End If
      
      rst.Update
      rst.MoveNext
    Wend
    Il y a peut être plus simple mais ça fonctionne!
    En espérant avoir pu t'aider!!!

    Céline

  5. #5
    Expert confirmé
    Avatar de pc75
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    3 662
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2004
    Messages : 3 662
    Points : 4 047
    Points
    4 047
    Par défaut
    Bonjour,

    Utilise les fonctions suivantes :

    Instr(MaChaine, "(") te donnera la 1ère position de la parenthèse dans MaChaine en partant du début

    InstrRev(MaChaine, "°") te donnera la 1ère position de la parenthèse dans MaChaine en partant de la fin

    Mid(MaChaine, pos1, pos2) te donnera la partie de MaChaine comprise entre Pos1 et Pos2

    PS : Il y a surement des +1 ou -1 à utiliser pour les positions

  6. #6
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 38
    Points
    38
    Par défaut
    Voila ce que j'ai essayé de faire


    Sachant que MyText a pour valeur le nom de l'objet selectionné dans l'arborescence.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     Dim Pos As Integer
       Dim Pos1 As Integer
       Dim MyStr As String
     
       MyStr = Me.MyText.Value
       Pos = Len(MyStr)
       Pos1 = InStr(MyStr, "(")
       Me.PNTxt = Left(MyText, Pos - Pos1)
    PNTxt est mon champ final.

    Pourtant, la valeur d'un champ n'est pas simplement un String ? Je comprend pas ce qui ne marche pas... J'avoue que de faire de l'ACCESS depuis 7h ce matin y est peut être pour quelque chose aussi :/

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Canada

    Informations forums :
    Inscription : Mai 2006
    Messages : 54
    Points : 36
    Points
    36
    Par défaut
    Si tu as une chaîne du type : "abcdefg-hi(treyut)"
    D'après ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Pos = Len(MyStr)
       Pos1 = InStr(MyStr, "(")
       Me.PNTxt = Left(MyText, Pos - Pos1)
    Il me semble que pos = 18 et pos1 = 11

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    D'où left(MyText, pos - pos1)=left(MyText, 7)
    Ce qui te rendera en résultat : "abcdefg"

    Essaie plutôt

  8. #8
    Nouveau membre du Club
    Inscrit en
    Juin 2006
    Messages
    94
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 94
    Points : 38
    Points
    38
    Par défaut
    Bien... Mes problème était manifestement des problèmes de positionnement de fonction et de mauvais choix de Pos.

    Voila le résultat:

    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
    'Display according to selected node
     
        Dim MyStr As String
        Dim Pos As Integer
     
       If Key_NivClik = 3 Then
         Me.MyText = Me.ocxTree.SelectedItem
            If IsNull(MyStr) Then
        Exit Sub
       Else
        MyStr = Me.MyText.Value
        Pos = InStr(MyStr, "(")
        Me.PNTxt = Left(MyStr, Pos - 2)
       End If
       End If
    Merci encore...

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

Discussions similaires

  1. [E-02] Remplacer une partie de chaine de caractère par une autre
    Par lucarno dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 30/09/2008, 22h19
  2. Transformer une partie de chaine de caractère en majuscule.
    Par DelphLaga dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 14/05/2007, 14h00
  3. case sur une partie de chaine de caractère
    Par jonathan1 dans le forum VBA Access
    Réponses: 5
    Dernier message: 27/04/2007, 17h03
  4. Récuperer une partie de chaine de caractère
    Par lolo_bob2 dans le forum Access
    Réponses: 6
    Dernier message: 06/07/2006, 18h34
  5. Remplacer une PARTIE de chaine de caractères dans un champ
    Par Turlututuchapopointu dans le forum Langage SQL
    Réponses: 1
    Dernier message: 07/08/2005, 11h57

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