Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/02/2011, 07h22   #1
Candidat au titre de Membre du Club
 
Inscription : novembre 2004
Messages : 45
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 45
Points : 10
Points : 10
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 :
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 :
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 :
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.
JiB@ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/02/2011, 08h40   #2
Membre Expert
 
Inscription : janvier 2006
Messages : 1 111
Détails du profil
Informations forums :
Inscription : janvier 2006
Messages : 1 111
Points : 1 093
Points : 1 093
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
Kloun est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 24/02/2011, 10h15   #3
Membre du Club
 
Inscription : août 2008
Messages : 86
Détails du profil
Informations forums :
Inscription : août 2008
Messages : 86
Points : 43
Points : 43
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
Glherbier est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2011, 04h21   #4
Candidat au titre de Membre du Club
 
Inscription : novembre 2004
Messages : 45
Détails du profil
Informations forums :
Inscription : novembre 2004
Messages : 45
Points : 10
Points : 10
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.
JiB@ est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/02/2011, 09h30   #5
Membre Expert
 
Homme Pierre ANTOINE
Inscription : février 2008
Messages : 650
Détails du profil
Informations personnelles :
Nom : Homme Pierre ANTOINE
Âge : 43
Localisation : France, Côte d'Or (Bourgogne)

Informations professionnelles :
Secteur : Enseignement

Informations forums :
Inscription : février 2008
Messages : 650
Points : 1 302
Points : 1 302
Bonjour

Voici un exemple


Code :
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 :
25-56-58-78-86-4587-1548-44

A la fin on a

Code :
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
pier.antoine est déconnecté   Envoyer un message privé Réponse avec citation 10
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h29.


 
 
 
 
Partenaires

Hébergement Web