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

VBA Access Discussion :

Splitter une chaîne toute les x occurences


Sujet :

VBA Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 45
    Par défaut Splitter une chaîne toute les x occurences
    Bonjour,


    Je cherche à splitter une chaîne de caractère à chaque fois que l'on arrive au cinquième séparateur.

    Voici mon champs "Note" contenant la chaîne:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    14-8954-556-2-545-1-5-1-551-56-125-1-521-5-15-6-.....................
    Je voudrais avoir ce résultat pour le champs "Note":

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    14-8954-556-2-545
    1-5-1-551-56
    125-1-521-5-15
    Donc au cinquième séparateur "-", il y a un retour à la ligne

    Voici mon code de départ:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim i As Integer
     
    i = 0
     
    Do Until i = 5
    If Note.Value Like "*-*" Then i = i + 1
    Loop
    If i = 5 Then Note.Value = Replace(Note.Value, "-", vbNewLine, 1, i)
    Pour le reste, je ne vois pas comment procéder.

    Merci d'avance pour votre aide.

  2. #2
    Membre Expert

    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 186
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 186
    Par défaut
    Bonjour,

    Je ferais le truc en 2 temps :
    1 - Split de la chaine pour récupérer un tableau avec toutes les occurrences
    2 - Construction d'un autre tableau à partir du premier avec changement d'occurrence sur le 2 tableau toutes les 5 occurrences du 1er tableau.
    [Access] Les bases du débogage => ici

  3. #3
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    86
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 86
    Par défaut
    As tu lu cette page? Elle contient des descriptions de fonctions pour manipuler les caractères qui pourraient t'aider.

    http://silkyroad.developpez.com/VBA/...nesCaracteres/

    Bon courage

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    45
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2004
    Messages : 45
    Par défaut
    D'accord mais si j'ai une ligne de 10000 caractères avec 2000 occurrences, ça ne va pas.

    Merci pour le lien mais j'avais déjà visité ces tuto's avant de poster.

    Quelqu'un aurait-il une piste?

    Merci d'avance.

  5. #5
    Membre Expert
    Homme Profil pro
    tripatouilleur de code pour améliorer mon quotidien boulistique
    Inscrit en
    Février 2008
    Messages
    946
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : tripatouilleur de code pour améliorer mon quotidien boulistique
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2008
    Messages : 946
    Par défaut
    Bonjour

    Voici un exemple


    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
    Dim cpt As Long
    Dim txt As String
    Dim res As Long
     
     
     
    txt = "25-56-58-78-86-4587-1548-44"
    Debug.Print txt
     
     
    ' on initialise le nombre d'occurence cherchée
    nbr = 0
     
     
    ' pour chaque caractère du texte
     
    For cpt = 1 To Len(txt)
        If Mid$(txt, cpt, 1) = "-" Then ' si le caractère est égal à celui qu'on recherche
            nbr = nbr + 1 ' on augmente le nombre d'occurence de 1
            res = nbr Mod 2 ' on calcul le reste du nombre d'occurence par 2
            If res = 0 Then 'si le reste est 0,
                Mid$(txt, cpt, 1) = vbCrLf ' on remplace le caractère par un saut de ligne
            End If
        End If
    Next
     
    Debug.Print
    Debug.Print txt

    Au début le texte est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    25-56-58-78-86-4587-1548-44

    A la fin on a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    25-56
    58-78
    86-4587
    1548-44
    En fait il faut utiliser la fonction "MOD" qui permet de connaître le reste d'une division.
    Dans mon exemple, j'ai divisé par 2, il faudra donc modifier et faire





    Bonne journée

    Pierre

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/05/2013, 16h42
  2. [Javascript] Réactualisez une page toutes les X secondes...
    Par funktastique dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 20/01/2006, 15h52
  3. Réponses: 8
    Dernier message: 09/01/2006, 16h58
  4. Réponses: 9
    Dernier message: 14/12/2005, 21h05
  5. effacer une table toutes les nuits
    Par nako dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/06/2005, 21h48

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