Bonjour à tous.
Je suis en train de lire un fichier texte, je prend ensuite chacune des
lignes.
Ces lignes je les découpe en fonction du sépérateur ( ; )
puis je mets tout ça dans un textBox (multiligne=true)
Pour dire bien voir les séparations, j'ajoute un, deux, ou trois tabulation
(chr(9) )
Mais voilà le problème. Malgré la détection de long de chaine, les
tabulations ne tiennent pas compte des lignes sup.
Donc au final il existe des décallage dans mon textbox.
Comment je pourais faire pour afficher mon fichier (contient donc 10 champs,
soit 10colonnes) proprement.
Au début, j'avais utiliser un MsFlexGrid, mais voilà cet outil ne fonctionne
pas à l'IUT.
En effet les sécurités installés sur site, empeche à VB de s'éexuter avec
d'autres outils.
Je suis donc limité aux outils standard pour faire ça.
Si vous avez une idée, ou une aide MERCI !!!
Voici les lignes qui peuvent être intéressante de mon code source pour vous
aider.
CREATION DU FICHIER PERMETTANT LE STOCKAGE DES VALEURS
----------------------------------------------------------------------------
-------------------------------------------
Sub rest_DSmaster_Click()
Call fichier.ChemFichier("DSmaster.ini")
->> cette fonction fais un path correct avec app.path et le nom du fichier.
->> Elle détect aussi sa présence, le crée sinon
->> Elle détect aussi si on se trouve à la racine pour ajouter ou non un '\'
->> Renvoi au final ChemFich qui est le chemin + nom du fichier depuis C:\
Dim nfic
nfic = FreeFile(1) '(mettre 1 si on veut permettre l'ouverture de fichier
par une autre app en même temps)
Open ChemFich For Output As nfic 'ouverture en écriture écrasement total
Print #nfic, "Pseudo;Niveau;Nb de d'essai max;Essai atteint;Nb.billes à
dispo;Nb.de trou;Durée du jeu;Date;Heure;Résultat;"
Close #nfic
End Sub
ECRITURE DANS LE FICHIER
----------------------------------------------------------------------------
---------------------------------------------------------------------
temp = Pseudo & ";" & niveau & ";" & nessai & ";" & essai & ";" & nbilles &
";" & nboites & ";" & DuréePartie & ";" & Date$ & ";" & Time$ & ";" &
resultat & ";"
Open ChemFich For Append As #nfic
Print #nfic, temp
Close #nfic
End If
End If
LECTURE DU FICHIER ET INSERT DANS TEXT BOX
----------------------------------------------------------------------------
----------------------------------------------------------------------------
---------
Sub chargeTextBox()
Dim nfic As String 'canal d'ouverture du fichier
nfic = FreeFile(1) 'attribution d'un canal libre
Dim cptlig1 As Integer 'est le Nb. de champs de la premiere ligne
Dim cpt As Integer 'compteur (Nb de champs de colza)
Dim temp As String 'valeur lue dans le fichier
Dim tableau() As String 'tableau contenant les valeurs découpés
'Calcul le Nombre de Col avec 1ere ligne du fichier
Open ChemFich For Input As nfic
On Error GoTo erreur
Line Input #nfic, temp
cpt = fichier.DecouperChaine(temp, ";", tableau)
cptlig1 = cpt
Close #nfic
'Lecture du fichier
Open ChemFich For Input As nfic
Do While Not EOF(nfic)
Line Input #nfic, temp
'on recalcul le nb de champs (dans le cas où le fichier aurait des
trou)
cpt = fichier.DecouperChaine(temp, ";", tableau)
If Not (cptlig1 = cpt) Then
'cas où le nb de champs d'une ligne n n'est pas = à l'entete
de colones
'on arrête l'affichage
GoTo erreur
End If
Dim k As Integer 'Pointeur de case sur le tableau strtab
Dim texte As String
Dim i As Integer
For k = 1 To cpt
If k = cptlig1 Then
texte = texte & vbCrLf
Else
If Len(tableau(k)) < 20 Then
If Len(tableau(k)) < 2 Then
texte = texte & tableau(k) & Chr(9) & Chr(9) &
Chr(9)
Else
texte = texte & tableau(k) & Chr(9) & Chr(9)
End If
Else
texte = texte & tableau(k) & Chr(9)
End If
'selon la longeur on ajoute 1,2 ou plus de tabulation
End If
Next
i = i + 1
Loop
Close #nfic
Text1.Text = texte
DECOUPER LE FICHIER EN CHAINE SEPARE
EN FONCTION DU CARACT DE SEPARATION
(C'est pas de moi, j'aurais peut etre faire plus simple: Code présent sur
Vbfrance adapté à mon projet)
----------------------------------------------------------------------------
----------------------------------------------------------------
Public Function DecouperChaine(StrTmp As String, car1 As String, tabstr() As
String) As Integer
'StrTmp est la chaine complete lue dans le fichier
'car1 est le caractére de séparation
'tabstr() est le tableau qui contiendra les valeurs découpé
Dim i As Integer
Dim cpt As Integer
Dim motprec As String
i = 0
DecouperChaine = 1
ReDim tabstr(1 To 1)
tabstr(1) = StrTmp
If Len(StrTmp) < 1 Then
Exit Function
ElseIf Len(StrTmp) = 1 Then
If StrTmp = car1 Then
DecouperChaine = 2
ReDim tabstr(1 To 2)
tabstr(1) = "": tabstr(2) = ""
End If
Exit Function
End If
cpt = 1
motprec = ""
'InStr Donne la position d'un caractere dans une variable
i = InStr(StrTmp, car1)
While i > 0
If i > 1 Then 'motprec sert à ignorer le car1 s'il est précédé par
"?"
If Mid$(StrTmp, i - 1, 1) = "?" Then
motprec = motprec & Left$(StrTmp, i - 2) & car1
StrTmp = Right$(StrTmp, Len(StrTmp) - i)
GoTo IgnorerCar
End If
End If
motprec = motprec & Left$(StrTmp, i - 1)
cpt = cpt + 1
ReDim Preserve tabstr(1 To cpt)
tabstr(cpt - 1) = motprec
motprec = ""
StrTmp = Right$(StrTmp, Len(StrTmp) - i)
IgnorerCar:
i = InStr(StrTmp, car1)
Wend
tabstr(cpt) = motprec & StrTmp
DecouperChaine = cpt
End Function
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Driss HANIB
utilise éventuellement un listview en mode report
Driss "Shewy80" a écrit dans le message de news:d6em7f$rvj$
Bonjour à tous. Je suis en train de lire un fichier texte, je prend ensuite chacune des lignes. Ces lignes je les découpe en fonction du sépérateur ( ; ) puis je mets tout ça dans un textBox (multiligne=true)
Pour dire bien voir les séparations, j'ajoute un, deux, ou trois
tabulation
(chr(9) )
Mais voilà le problème. Malgré la détection de long de chaine, les tabulations ne tiennent pas compte des lignes sup. Donc au final il existe des décallage dans mon textbox.
Comment je pourais faire pour afficher mon fichier (contient donc 10
champs,
soit 10colonnes) proprement.
Au début, j'avais utiliser un MsFlexGrid, mais voilà cet outil ne
fonctionne
pas à l'IUT. En effet les sécurités installés sur site, empeche à VB de s'éexuter avec d'autres outils.
Je suis donc limité aux outils standard pour faire ça.
Si vous avez une idée, ou une aide MERCI !!!
Voici les lignes qui peuvent être intéressante de mon code source pour
vous
aider.
CREATION DU FICHIER PERMETTANT LE STOCKAGE DES VALEURS --------------------------------------------------------------------------
--
------------------------------------------- Sub rest_DSmaster_Click()
Call fichier.ChemFichier("DSmaster.ini") ->> cette fonction fais un path correct avec app.path et le nom du
fichier.
->> Elle détect aussi sa présence, le crée sinon ->> Elle détect aussi si on se trouve à la racine pour ajouter ou non un
''
->> Renvoi au final ChemFich qui est le chemin + nom du fichier depuis C:
Dim nfic nfic = FreeFile(1) '(mettre 1 si on veut permettre l'ouverture de fichier par une autre app en même temps) Open ChemFich For Output As nfic 'ouverture en écriture écrasement total Print #nfic, "Pseudo;Niveau;Nb de d'essai max;Essai atteint;Nb.billes
à
dispo;Nb.de trou;Durée du jeu;Date;Heure;Résultat;" Close #nfic
End Sub
ECRITURE DANS LE FICHIER --------------------------------------------------------------------------
--------- Sub chargeTextBox() Dim nfic As String 'canal d'ouverture du fichier nfic = FreeFile(1) 'attribution d'un canal libre Dim cptlig1 As Integer 'est le Nb. de champs de la premiere ligne Dim cpt As Integer 'compteur (Nb de champs de colza) Dim temp As String 'valeur lue dans le fichier Dim tableau() As String 'tableau contenant les valeurs découpés
'Calcul le Nombre de Col avec 1ere ligne du fichier Open ChemFich For Input As nfic On Error GoTo erreur Line Input #nfic, temp cpt = fichier.DecouperChaine(temp, ";", tableau) cptlig1 = cpt Close #nfic
'Lecture du fichier Open ChemFich For Input As nfic Do While Not EOF(nfic) Line Input #nfic, temp 'on recalcul le nb de champs (dans le cas où le fichier aurait des trou) cpt = fichier.DecouperChaine(temp, ";", tableau)
If Not (cptlig1 = cpt) Then 'cas où le nb de champs d'une ligne n n'est pas = à
l'entete
de colones 'on arrête l'affichage GoTo erreur End If
Dim k As Integer 'Pointeur de case sur le tableau strtab Dim texte As String Dim i As Integer
For k = 1 To cpt If k = cptlig1 Then texte = texte & vbCrLf Else If Len(tableau(k)) < 20 Then If Len(tableau(k)) < 2 Then texte = texte & tableau(k) & Chr(9) & Chr(9) & Chr(9) Else texte = texte & tableau(k) & Chr(9) & Chr(9) End If Else texte = texte & tableau(k) & Chr(9) End If 'selon la longeur on ajoute 1,2 ou plus de tabulation
End If Next i = i + 1 Loop Close #nfic
Text1.Text = texte
DECOUPER LE FICHIER EN CHAINE SEPARE EN FONCTION DU CARACT DE SEPARATION (C'est pas de moi, j'aurais peut etre faire plus simple: Code présent sur Vbfrance adapté à mon projet) --------------------------------------------------------------------------
--
---------------------------------------------------------------- Public Function DecouperChaine(StrTmp As String, car1 As String, tabstr()
As
String) As Integer
'StrTmp est la chaine complete lue dans le fichier 'car1 est le caractére de séparation 'tabstr() est le tableau qui contiendra les valeurs découpé
Dim i As Integer Dim cpt As Integer Dim motprec As String
i = 0 DecouperChaine = 1 ReDim tabstr(1 To 1) tabstr(1) = StrTmp If Len(StrTmp) < 1 Then Exit Function ElseIf Len(StrTmp) = 1 Then If StrTmp = car1 Then DecouperChaine = 2 ReDim tabstr(1 To 2) tabstr(1) = "": tabstr(2) = "" End If Exit Function End If
cpt = 1 motprec = "" 'InStr Donne la position d'un caractere dans une variable i = InStr(StrTmp, car1) While i > 0 If i > 1 Then 'motprec sert à ignorer le car1 s'il est précédé
par
"?" If Mid$(StrTmp, i - 1, 1) = "?" Then motprec = motprec & Left$(StrTmp, i - 2) & car1 StrTmp = Right$(StrTmp, Len(StrTmp) - i) GoTo IgnorerCar End If End If motprec = motprec & Left$(StrTmp, i - 1) cpt = cpt + 1 ReDim Preserve tabstr(1 To cpt) tabstr(cpt - 1) = motprec motprec = "" StrTmp = Right$(StrTmp, Len(StrTmp) - i) IgnorerCar: i = InStr(StrTmp, car1) Wend tabstr(cpt) = motprec & StrTmp DecouperChaine = cpt End Function
utilise éventuellement un listview en mode report
Driss
"Shewy80" <nospamsguillaume.baca@neuf.fr> a écrit dans le message de
news:d6em7f$rvj$1@aphrodite.grec.isp.9tel.net...
Bonjour à tous.
Je suis en train de lire un fichier texte, je prend ensuite chacune des
lignes.
Ces lignes je les découpe en fonction du sépérateur ( ; )
puis je mets tout ça dans un textBox (multiligne=true)
Pour dire bien voir les séparations, j'ajoute un, deux, ou trois
tabulation
(chr(9) )
Mais voilà le problème. Malgré la détection de long de chaine, les
tabulations ne tiennent pas compte des lignes sup.
Donc au final il existe des décallage dans mon textbox.
Comment je pourais faire pour afficher mon fichier (contient donc 10
champs,
soit 10colonnes) proprement.
Au début, j'avais utiliser un MsFlexGrid, mais voilà cet outil ne
fonctionne
pas à l'IUT.
En effet les sécurités installés sur site, empeche à VB de s'éexuter avec
d'autres outils.
Je suis donc limité aux outils standard pour faire ça.
Si vous avez une idée, ou une aide MERCI !!!
Voici les lignes qui peuvent être intéressante de mon code source pour
vous
aider.
CREATION DU FICHIER PERMETTANT LE STOCKAGE DES VALEURS
--------------------------------------------------------------------------
--
-------------------------------------------
Sub rest_DSmaster_Click()
Call fichier.ChemFichier("DSmaster.ini")
->> cette fonction fais un path correct avec app.path et le nom du
fichier.
->> Elle détect aussi sa présence, le crée sinon
->> Elle détect aussi si on se trouve à la racine pour ajouter ou non un
''
->> Renvoi au final ChemFich qui est le chemin + nom du fichier depuis C:
Dim nfic
nfic = FreeFile(1) '(mettre 1 si on veut permettre l'ouverture de fichier
par une autre app en même temps)
Open ChemFich For Output As nfic 'ouverture en écriture écrasement total
Print #nfic, "Pseudo;Niveau;Nb de d'essai max;Essai atteint;Nb.billes
à
dispo;Nb.de trou;Durée du jeu;Date;Heure;Résultat;"
Close #nfic
End Sub
ECRITURE DANS LE FICHIER
--------------------------------------------------------------------------
---------
Sub chargeTextBox()
Dim nfic As String 'canal d'ouverture du fichier
nfic = FreeFile(1) 'attribution d'un canal libre
Dim cptlig1 As Integer 'est le Nb. de champs de la premiere ligne
Dim cpt As Integer 'compteur (Nb de champs de colza)
Dim temp As String 'valeur lue dans le fichier
Dim tableau() As String 'tableau contenant les valeurs découpés
'Calcul le Nombre de Col avec 1ere ligne du fichier
Open ChemFich For Input As nfic
On Error GoTo erreur
Line Input #nfic, temp
cpt = fichier.DecouperChaine(temp, ";", tableau)
cptlig1 = cpt
Close #nfic
'Lecture du fichier
Open ChemFich For Input As nfic
Do While Not EOF(nfic)
Line Input #nfic, temp
'on recalcul le nb de champs (dans le cas où le fichier aurait des
trou)
cpt = fichier.DecouperChaine(temp, ";", tableau)
If Not (cptlig1 = cpt) Then
'cas où le nb de champs d'une ligne n n'est pas = à
l'entete
de colones
'on arrête l'affichage
GoTo erreur
End If
Dim k As Integer 'Pointeur de case sur le tableau strtab
Dim texte As String
Dim i As Integer
For k = 1 To cpt
If k = cptlig1 Then
texte = texte & vbCrLf
Else
If Len(tableau(k)) < 20 Then
If Len(tableau(k)) < 2 Then
texte = texte & tableau(k) & Chr(9) & Chr(9) &
Chr(9)
Else
texte = texte & tableau(k) & Chr(9) & Chr(9)
End If
Else
texte = texte & tableau(k) & Chr(9)
End If
'selon la longeur on ajoute 1,2 ou plus de tabulation
End If
Next
i = i + 1
Loop
Close #nfic
Text1.Text = texte
DECOUPER LE FICHIER EN CHAINE SEPARE
EN FONCTION DU CARACT DE SEPARATION
(C'est pas de moi, j'aurais peut etre faire plus simple: Code présent sur
Vbfrance adapté à mon projet)
--------------------------------------------------------------------------
--
----------------------------------------------------------------
Public Function DecouperChaine(StrTmp As String, car1 As String, tabstr()
As
String) As Integer
'StrTmp est la chaine complete lue dans le fichier
'car1 est le caractére de séparation
'tabstr() est le tableau qui contiendra les valeurs découpé
Dim i As Integer
Dim cpt As Integer
Dim motprec As String
i = 0
DecouperChaine = 1
ReDim tabstr(1 To 1)
tabstr(1) = StrTmp
If Len(StrTmp) < 1 Then
Exit Function
ElseIf Len(StrTmp) = 1 Then
If StrTmp = car1 Then
DecouperChaine = 2
ReDim tabstr(1 To 2)
tabstr(1) = "": tabstr(2) = ""
End If
Exit Function
End If
cpt = 1
motprec = ""
'InStr Donne la position d'un caractere dans une variable
i = InStr(StrTmp, car1)
While i > 0
If i > 1 Then 'motprec sert à ignorer le car1 s'il est précédé
par
"?"
If Mid$(StrTmp, i - 1, 1) = "?" Then
motprec = motprec & Left$(StrTmp, i - 2) & car1
StrTmp = Right$(StrTmp, Len(StrTmp) - i)
GoTo IgnorerCar
End If
End If
motprec = motprec & Left$(StrTmp, i - 1)
cpt = cpt + 1
ReDim Preserve tabstr(1 To cpt)
tabstr(cpt - 1) = motprec
motprec = ""
StrTmp = Right$(StrTmp, Len(StrTmp) - i)
IgnorerCar:
i = InStr(StrTmp, car1)
Wend
tabstr(cpt) = motprec & StrTmp
DecouperChaine = cpt
End Function
Driss "Shewy80" a écrit dans le message de news:d6em7f$rvj$
Bonjour à tous. Je suis en train de lire un fichier texte, je prend ensuite chacune des lignes. Ces lignes je les découpe en fonction du sépérateur ( ; ) puis je mets tout ça dans un textBox (multiligne=true)
Pour dire bien voir les séparations, j'ajoute un, deux, ou trois
tabulation
(chr(9) )
Mais voilà le problème. Malgré la détection de long de chaine, les tabulations ne tiennent pas compte des lignes sup. Donc au final il existe des décallage dans mon textbox.
Comment je pourais faire pour afficher mon fichier (contient donc 10
champs,
soit 10colonnes) proprement.
Au début, j'avais utiliser un MsFlexGrid, mais voilà cet outil ne
fonctionne
pas à l'IUT. En effet les sécurités installés sur site, empeche à VB de s'éexuter avec d'autres outils.
Je suis donc limité aux outils standard pour faire ça.
Si vous avez une idée, ou une aide MERCI !!!
Voici les lignes qui peuvent être intéressante de mon code source pour
vous
aider.
CREATION DU FICHIER PERMETTANT LE STOCKAGE DES VALEURS --------------------------------------------------------------------------
--
------------------------------------------- Sub rest_DSmaster_Click()
Call fichier.ChemFichier("DSmaster.ini") ->> cette fonction fais un path correct avec app.path et le nom du
fichier.
->> Elle détect aussi sa présence, le crée sinon ->> Elle détect aussi si on se trouve à la racine pour ajouter ou non un
''
->> Renvoi au final ChemFich qui est le chemin + nom du fichier depuis C:
Dim nfic nfic = FreeFile(1) '(mettre 1 si on veut permettre l'ouverture de fichier par une autre app en même temps) Open ChemFich For Output As nfic 'ouverture en écriture écrasement total Print #nfic, "Pseudo;Niveau;Nb de d'essai max;Essai atteint;Nb.billes
à
dispo;Nb.de trou;Durée du jeu;Date;Heure;Résultat;" Close #nfic
End Sub
ECRITURE DANS LE FICHIER --------------------------------------------------------------------------
--------- Sub chargeTextBox() Dim nfic As String 'canal d'ouverture du fichier nfic = FreeFile(1) 'attribution d'un canal libre Dim cptlig1 As Integer 'est le Nb. de champs de la premiere ligne Dim cpt As Integer 'compteur (Nb de champs de colza) Dim temp As String 'valeur lue dans le fichier Dim tableau() As String 'tableau contenant les valeurs découpés
'Calcul le Nombre de Col avec 1ere ligne du fichier Open ChemFich For Input As nfic On Error GoTo erreur Line Input #nfic, temp cpt = fichier.DecouperChaine(temp, ";", tableau) cptlig1 = cpt Close #nfic
'Lecture du fichier Open ChemFich For Input As nfic Do While Not EOF(nfic) Line Input #nfic, temp 'on recalcul le nb de champs (dans le cas où le fichier aurait des trou) cpt = fichier.DecouperChaine(temp, ";", tableau)
If Not (cptlig1 = cpt) Then 'cas où le nb de champs d'une ligne n n'est pas = à
l'entete
de colones 'on arrête l'affichage GoTo erreur End If
Dim k As Integer 'Pointeur de case sur le tableau strtab Dim texte As String Dim i As Integer
For k = 1 To cpt If k = cptlig1 Then texte = texte & vbCrLf Else If Len(tableau(k)) < 20 Then If Len(tableau(k)) < 2 Then texte = texte & tableau(k) & Chr(9) & Chr(9) & Chr(9) Else texte = texte & tableau(k) & Chr(9) & Chr(9) End If Else texte = texte & tableau(k) & Chr(9) End If 'selon la longeur on ajoute 1,2 ou plus de tabulation
End If Next i = i + 1 Loop Close #nfic
Text1.Text = texte
DECOUPER LE FICHIER EN CHAINE SEPARE EN FONCTION DU CARACT DE SEPARATION (C'est pas de moi, j'aurais peut etre faire plus simple: Code présent sur Vbfrance adapté à mon projet) --------------------------------------------------------------------------
--
---------------------------------------------------------------- Public Function DecouperChaine(StrTmp As String, car1 As String, tabstr()
As
String) As Integer
'StrTmp est la chaine complete lue dans le fichier 'car1 est le caractére de séparation 'tabstr() est le tableau qui contiendra les valeurs découpé
Dim i As Integer Dim cpt As Integer Dim motprec As String
i = 0 DecouperChaine = 1 ReDim tabstr(1 To 1) tabstr(1) = StrTmp If Len(StrTmp) < 1 Then Exit Function ElseIf Len(StrTmp) = 1 Then If StrTmp = car1 Then DecouperChaine = 2 ReDim tabstr(1 To 2) tabstr(1) = "": tabstr(2) = "" End If Exit Function End If
cpt = 1 motprec = "" 'InStr Donne la position d'un caractere dans une variable i = InStr(StrTmp, car1) While i > 0 If i > 1 Then 'motprec sert à ignorer le car1 s'il est précédé
par
"?" If Mid$(StrTmp, i - 1, 1) = "?" Then motprec = motprec & Left$(StrTmp, i - 2) & car1 StrTmp = Right$(StrTmp, Len(StrTmp) - i) GoTo IgnorerCar End If End If motprec = motprec & Left$(StrTmp, i - 1) cpt = cpt + 1 ReDim Preserve tabstr(1 To cpt) tabstr(cpt - 1) = motprec motprec = "" StrTmp = Right$(StrTmp, Len(StrTmp) - i) IgnorerCar: i = InStr(StrTmp, car1) Wend tabstr(cpt) = motprec & StrTmp DecouperChaine = cpt End Function