Split d'une chaîne à une taille fixée

Résolu
cs_le cafard Messages postés 10 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 18 mars 2010 - 18 mars 2010 à 11:49
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 18 mars 2010 à 16:51
Bonjour,

J'écris une procédure d'export des données en VBA sous Access vers un fichier plat.
Je souhaite exporter un champ Mémo en le taillant à une largeur fixe (72 caractères par ligne).
Pour cela je souhaite passer par un tableau de String.
1) Existe-t-il une fonction équivalente à Split ?

J'utilise Left et Mid mais je ne connais pas la dimension de mon Tableau.
2) Comment définir la variable "Dim Tableau() as String" ?

3 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 mars 2010 à 12:03
de tête, faire un truc genre :

Chaine = "     "

Dim Tableau() as String
Dim nCount As Long

nCount = Len(Chaine)\72
Redim Tableau(nCount-1)

For i = 0 to nCount -1
    Tableau(i) = Mid$(Chaine, 1+i*72, 72)
Next



Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
3
cs_le cafard Messages postés 10 Date d'inscription jeudi 15 février 2007 Statut Membre Dernière intervention 18 mars 2010
18 mars 2010 à 16:41
Merci Renfield et bravo pour ta rapidité (en moins d'1/4 heure).
Je ne connaissais pas la l'instruction ReDim.
Sinon il n'est pas nécessaire de mettre "-1".
Voici la version finale :

Public Sub CoupeChaine(Chaine As String)
  Dim Tableau() as String
  Dim nCount As Long

  nCount = Len(Chaine)\72
  Redim Tableau(nCount)

  For i = 0 to nCount
    Tableau(i) = Mid$(Chaine, 1+i*72, 72)
  Next
End Sub
3
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
18 mars 2010 à 16:51
-1 ? pour pas avoir la dernière case vide (une case en trop)

vu que l'index du tableau commence à 0
si tu veux par exemple 5 cases,

il te faut bien aller de 0 à 4

remet donc ce -1 si cela ne gène pas ton code (pas testé)

Renfield - Admin CodeS-SourceS - MVP Visual Basic & Spécialiste des RegExp
0
Rejoignez-nous