Précédent   Forum du club des développeurs et IT Pro > Autres langages > Général Visual Basic 6 et VBScript > VB 6 et antérieur
VB 6 et antérieur Visual basic 6 et versions antérieures. Avant de poster -> La FAQ VB6, Les tutoriels VB
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 13/12/2012, 11h25   #1
dmoluc
Nouveau Membre du Club
 
Homme Didier
Enseignant
Inscription : juin 2012
Messages : 154
Détails du profil
Informations personnelles :
Nom : Homme Didier
Localisation : France

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : juin 2012
Messages : 154
Points : 34
Points : 34
Par défaut ouvrir et enregistrer un MsFlexgrid

Bonjour à tous,

J'ai un MSFlexgrid que j'enregistre en format text avec ce code :

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
Private Sub enregistrer_Click()
 
Dim colonne As Integer
Dim Ligne As Integer
Dim cptligne As Integer
Dim cptcolonne As Integer
Dim chaine As String
Dim emp
 
 
emp = App.Path
 
Open emp + "nomfichier.txt" For Output As #1
colonne = Me.MSFlexGrid1.Cols
Ligne = Me.MSFlexGrid1.Rows
For cptligne = 0 To Ligne - 1
For cptcolonne = 0 To colonne - 1
chaine = chaine & Me.MSFlexGrid1.TextMatrix(cptligne, cptcolonne)
chaine = chaine & "|"
Next cptcolonne
Print #1, chaine
chaine = ""
Next cptligne
 
Close #1
 
End Sub
Le résultat n'est pas au top^car il y a plein de traits verticaux sur la feuille mais les données sont bien enregistrées. Le gros problème est de pouvoir ouvrir les fichiers enregistrés au format text.
J'ai bricoler un bout de code qui utilise la boite de dialogue ouvrir mais je n'arrive pas à lire et encore moins à écrire le contenu du fichier dans mon MSFlexgrid ( j'utilise le même MSFexgrid qui à créer le fichier pour le r'ouvrir)

voici le code qui ne fonctionne pas :

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
29
30
31
32
 
Private Sub ouvrir_Click()
 
Dim ff As Integer
Dim i As Integer
Dim j As Integer
Dim A$
Dim MonFichier
 
i = MSFlexGrid1.Rows
 
 
ff = FreeFile
CommonDialog1.ShowOpen
MonFichier = CommonDialog1.FileName
Open MonFichier For Input As #ff
 
Do While Not EOF(ff)
    MSFlexGrid1.Rows = i + 1
    For j = 0 To 104
        If Not EOF(ff) Then
            Input #ff, A$
            MSFlexGrid1.TextMatrix(i, j) = A$
        Else
            Exit Do
        End If
    Next j
    i = i + 1
Loop
 
Close #ff
End Sub
il doit me manquer un petit quelque chose que mes maigre connaissances ne me permettent pas de trouver

merci pour votre aide toujours précieuse

cordialement

Didier
dmoluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 11h32   #2
DAUDET78
Membre chevronné
 
Avatar de DAUDET78
 
Homme Alphonse Daudet
retraité
Inscription : janvier 2008
Messages : 408
Détails du profil
Informations personnelles :
Nom : Homme Alphonse Daudet
Âge : 70
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : retraité
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 408
Points : 682
Points : 682
Citation:
Envoyé par dmoluc Voir le message
Le résultat n'est pas au top^car il y a plein de traits verticaux sur la feuille
Ca me semble normal .... c'est toi qui les ajoute
__________________
A voir ! http://physafilm.com/
DAUDET78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 11h38   #3
dmoluc
Nouveau Membre du Club
 
Homme Didier
Enseignant
Inscription : juin 2012
Messages : 154
Détails du profil
Informations personnelles :
Nom : Homme Didier
Localisation : France

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : juin 2012
Messages : 154
Points : 34
Points : 34
merci c'est déjà ça : à force de piquer des codes à droites à gauche sans les comprendres totalement, je fais des bétises
dmoluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 12h13   #4
dmoluc
Nouveau Membre du Club
 
Homme Didier
Enseignant
Inscription : juin 2012
Messages : 154
Détails du profil
Informations personnelles :
Nom : Homme Didier
Localisation : France

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : juin 2012
Messages : 154
Points : 34
Points : 34
j'ai essayé de faire l'inverse de l'enregistrement en utilisant input, mais je n'arrive toujours pas à ouvrir le fichier

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
29
30
31
32
 
 
Private Sub ouvrir_Click()
 
Dim MonFichier
Dim colonne As Integer
Dim ligne As Integer
Dim cptligne As Integer
Dim cptcolonne As Integer
Dim chaine As String
Dim emp
 
 
CommonDialog1.ShowOpen
 
MonFichier.Text = CommonDialog1.FileName
 
Open "MonFichier" For Input As #1
colonne = Me.MSFlexGrid1.Cols
ligne = Me.MSFlexGrid1.Rows
For cptligne = 0 To ligne - 1
For cptcolonne = 0 To colonne - 1
chaine = chaine & Me.MSFlexGrid1.TextMatrix(cptligne, cptcolonne)
chaine = chaine & " "
Next cptcolonne
Print #1, chaine
chaine = ""
Next cptligne
 
Close #1
 
End Sub
"CommonDialog1.FileName" contient bien le fichier mais impossible de l'ouvrir, cette ligne de code ne fonctionne pas :

Code :
 Open "MonFichier" For Input As #1
quelqu'un aurait une idée, ce serait sympat, merci
dmoluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 12h23   #5
DAUDET78
Membre chevronné
 
Avatar de DAUDET78
 
Homme Alphonse Daudet
retraité
Inscription : janvier 2008
Messages : 408
Détails du profil
Informations personnelles :
Nom : Homme Alphonse Daudet
Âge : 70
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : retraité
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 408
Points : 682
Points : 682
Peut être
Code :
Open MonFichier.text For Input As #1
__________________
A voir ! http://physafilm.com/
DAUDET78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 12h39   #6
ProgElecT
Rédacteur/Modérateur
 
Avatar de ProgElecT
 
Homme Francis MILLET
Inscription : décembre 2004
Messages : 3 199
Détails du profil
Informations personnelles :
Nom : Homme Francis MILLET
Âge : 57
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : décembre 2004
Messages : 3 199
Points : 5 109
Points : 5 109
Envoyer un message via MSN à ProgElecT
Salut
Code :
1
2
3
Dim MonFichier
'................
MonFichier.Text = CommonDialog1.FileName
La variable MonFichier n'a pas de propriété Text cette variable n'est pas un objet.
ProgElecT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 12h46   #7
iclic
Membre éprouvé
 
Inscription : décembre 2007
Messages : 454
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 454
Points : 497
Points : 497
Bonjour,

Code :
1
2
 
Open "MonFichier" For Input As #1
Si tu ouvres un fichier en 'INPUT , il faut prendre le code approprié
pour le lire

soit
Mais attention s'il y a des virgules dans le texte...

ou alors
Code :
1
2
 
Line input #1, chaine
NB: PRINT, c'est pour écrire et on ouvre alors le fichier en OUTPUT ou APPEND
iclic est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 12h47   #8
DAUDET78
Membre chevronné
 
Avatar de DAUDET78
 
Homme Alphonse Daudet
retraité
Inscription : janvier 2008
Messages : 408
Détails du profil
Informations personnelles :
Nom : Homme Alphonse Daudet
Âge : 70
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : retraité
Secteur : Industrie

Informations forums :
Inscription : janvier 2008
Messages : 408
Points : 682
Points : 682
Citation:
Envoyé par ProgElecT Voir le message
cette variable n'est pas un objet.
Bien vu !
Code :
1
2
3
Dim MonFichier as String
'........
Open MonFichier For Input As #1
__________________
A voir ! http://physafilm.com/
DAUDET78 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 13h22   #9
ProgElecT
Rédacteur/Modérateur
 
Avatar de ProgElecT
 
Homme Francis MILLET
Inscription : décembre 2004
Messages : 3 199
Détails du profil
Informations personnelles :
Nom : Homme Francis MILLET
Âge : 57
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : décembre 2004
Messages : 3 199
Points : 5 109
Points : 5 109
Envoyer un message via MSN à ProgElecT
Pour enregistrer chaque cellules de ton MSFlexGrid, sépares tes colonnes par Chr(1) plutôt que "|", la lecture avec avec Notepad et/ou Word chr(1) n'est pas visible.
Pour remplir ton MSFlexGrid, tu split chaque ligne avec ce même séparateur.
ProgElecT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 13h25   #10
dmoluc
Nouveau Membre du Club
 
Homme Didier
Enseignant
Inscription : juin 2012
Messages : 154
Détails du profil
Informations personnelles :
Nom : Homme Didier
Localisation : France

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : juin 2012
Messages : 154
Points : 34
Points : 34
J'en suis arrivé à écrire dans le flexgrid, hélas ça ne lis toujours pas le fichier, la variable chaine est désespérément vide donc j'obtiens un beau tableau vierge

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
29
30
31
 
 
Private Sub ouvrir_Click()
 
Dim MonFichier As String
Dim colonne As Integer
Dim Ligne As Integer
Dim cptligne As Integer
Dim cptcolonne As Integer, chaine As String
 
CommonDialog1.ShowOpen
 
MonFichier = CommonDialog1.FileName
 
 Open MonFichier For Input As #1
 
Do While Not EOF(1)    ' Effectue la boucle jusqu'à la fin du fichier.
    Line Input #1, chaine         ' Lit la ligne dans la variable.
 
   colonne = Me.MSFlexGrid1.Cols
Ligne = Me.MSFlexGrid1.Rows
For cptligne = 0 To Ligne - 1
For cptcolonne = 0 To colonne - 1
   Me.MSFlexGrid1.TextMatrix(cptligne, cptcolonne) = chaine
Next cptcolonne
 
Next cptligne
Loop
Close #1
 
End Sub
dmoluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 13h38   #11
dmoluc
Nouveau Membre du Club
 
Homme Didier
Enseignant
Inscription : juin 2012
Messages : 154
Détails du profil
Informations personnelles :
Nom : Homme Didier
Localisation : France

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : juin 2012
Messages : 154
Points : 34
Points : 34
Citation:
Pour enregistrer chaque cellules de ton MSFlexGrid, sépares tes colonnes par Chr(1) plutôt que "|", la lecture avec avec Notepad et/ou Word chr(1) n'est pas visible.
Pour remplir ton MSFlexGrid, tu split chaque ligne avec ce même séparateur.
J'ai suivi ton conseil et maintenant j'obtiens le genre de chose qui est sur l'image ci-jointe .....
Images attachées
Type de fichier : jpg flexgrid.jpg (386,5 Ko, 6 affichages)
dmoluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 14h08   #12
dmoluc
Nouveau Membre du Club
 
Homme Didier
Enseignant
Inscription : juin 2012
Messages : 154
Détails du profil
Informations personnelles :
Nom : Homme Didier
Localisation : France

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : juin 2012
Messages : 154
Points : 34
Points : 34
si je ne met pas de séparateur , j'ai droit à un jolie tableau tout blanc, sinon un truc du genre de l'image jointe tout à l'heure et ça quelque soit le séparateur que j'emplois ( mais je suis loin de tous les connaitres)
j'ai beau exécuter pas à pas le code, je ne vois toujours pas comment incrémenter ma variable chaine avec le texte ; elle n'aime que les séparateurs

s'il y a une âme charitable pour regarder ce qui cloche, je joint le projet au format zip
Fichiers attachés
Type de fichier : zip planning.zip (42,4 Ko, 3 affichages)
dmoluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 14h56   #13
dmoluc
Nouveau Membre du Club
 
Homme Didier
Enseignant
Inscription : juin 2012
Messages : 154
Détails du profil
Informations personnelles :
Nom : Homme Didier
Localisation : France

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : juin 2012
Messages : 154
Points : 34
Points : 34
Je dois avoir des problèmes de syntaxe avec le split des séparateur. Maintenant j'arrive bien à écrire dans le flexgrid mais ça me mets toutes la ligne dans chaque cellule de celle-ci

code modifier de l'enregistrement du fichier

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
29
30
 
Private Sub enregistrer_Click()
 
Dim colonne As Integer
Dim Ligne As Integer
Dim cptligne As Integer
Dim cptcolonne As Integer
Dim chaine As String
Dim emp
 
 
emp = App.Path
 
Open emp + "nomfichier.txt" For Output As #1
colonne = Me.MSFlexGrid1.Cols
Ligne = Me.MSFlexGrid1.Rows
For cptligne = 0 To Ligne - 1
For cptcolonne = 0 To colonne - 1
chaine = chaine & Me.MSFlexGrid1.TextMatrix(cptligne, cptcolonne)
chaine = chaine
Split (chaine & Chr(1)) 'je split sur la colonne
Next cptcolonne
Split (chaine & Chr(1))'je split sur la ligne ( mais sans résultat)
Print #1, chaine
chaine = ""
Next cptligne
 
Close #1
 
End Sub
sinon pour écrire j'en suis arrivé là


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
29
30
31
32
33
 
 
Private Sub ouvrir_Click()
 
Dim MonFichier As String
Dim colonne As Integer
Dim Ligne As Integer
Dim cptligne As Integer
Dim cptcolonne As Integer, chaine As String
 
CommonDialog1.ShowOpen
 
MonFichier = CommonDialog1.FileName
 
 Open MonFichier For Input As #1
 
Do While Not EOF(1)    ' Effectue la boucle jusqu'à la fin du fichier.
 
   colonne = Me.MSFlexGrid1.Cols
Ligne = Me.MSFlexGrid1.Rows
 
For cptligne = 0 To Ligne - 1
Line Input #1, chaine
For cptcolonne = 0 To colonne - 1
   Me.MSFlexGrid1.TextMatrix(cptligne, cptcolonne) = chaine
Next cptcolonne
chaine = ""
Next cptligne
 
Loop
Close #1
 
End Sub

Il ne doit vraiment pas manquer grand chose, mais quoi ?

encore merci pour votre aide....
dmoluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 15h13   #14
DarkVader
Rédacteur
 
Avatar de DarkVader
 
Homme
Développeur informatique
Inscription : mai 2002
Messages : 1 945
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2002
Messages : 1 945
Points : 2 731
Points : 2 731
Bonjour,
J'ai lu (en diagonale) et FlexGrid n'est pas ma tasse de thé, donc pardon si je suis à coté de la plaque
mais, sauf erreur :
1/ il existe la propriété Clear pour vider le FlexGrid
2/ le séparateur de champ est la tabulation et de ligne, vbCrLf
en formattant les données avec ces séparateurs, il est donc possible d'affecter directement les plages de données avec la propriété Clip.
De plus si les fichiers texte formatés ainsi sont directement exploitables tels quels
ils sont aussi beaucoup plus lisibles

Bonne journée.

PS: Ne pas oublier les filtres aux boites de Sélection de fichiers
__________________

Je fournis pelles et pioches mais jamais l'huile de coude.
________________________________________________

« Heureux soient les fêlés, car ils laisseront passer la lumière. »

Pensez aux liens
Rechercher - Google - Google Labs - AllApi
et avant de poster : « A lire » , « Tutoriel sur le déboguage »
DarkVader est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 15h29   #15
dmoluc
Nouveau Membre du Club
 
Homme Didier
Enseignant
Inscription : juin 2012
Messages : 154
Détails du profil
Informations personnelles :
Nom : Homme Didier
Localisation : France

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : juin 2012
Messages : 154
Points : 34
Points : 34
Quel que soit le séparateur de champ, pas de problème avec les ligne, mais ça ne sépare pas les colonnes et persiste à écrire toute la ligne dans chaque cellule.
je commence un peu à désespérer malgré que je sois têtu. Sans enregistrement le programme ne vaut rien et je manque vraiment de connaissances pour trouver seule la solution .....

encore merci
dmoluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 15h43   #16
DarkVader
Rédacteur
 
Avatar de DarkVader
 
Homme
Développeur informatique
Inscription : mai 2002
Messages : 1 945
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2002
Messages : 1 945
Points : 2 731
Points : 2 731
Citation:
Envoyé par dmoluc Voir le message
Quel que soit le séparateur de champ, pas de problème avec les ligne, mais ça ne sépare pas les colonnes et persiste à écrire toute la ligne dans chaque cellule.
Si tu le dis
__________________

Je fournis pelles et pioches mais jamais l'huile de coude.
________________________________________________

« Heureux soient les fêlés, car ils laisseront passer la lumière. »

Pensez aux liens
Rechercher - Google - Google Labs - AllApi
et avant de poster : « A lire » , « Tutoriel sur le déboguage »
DarkVader est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 15h48   #17
ProgElecT
Rédacteur/Modérateur
 
Avatar de ProgElecT
 
Homme Francis MILLET
Inscription : décembre 2004
Messages : 3 199
Détails du profil
Informations personnelles :
Nom : Homme Francis MILLET
Âge : 57
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : décembre 2004
Messages : 3 199
Points : 5 109
Points : 5 109
Envoyer un message via MSN à ProgElecT
Salut DarkVader , et tous les autres

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
29
Private Sub ouvrir_Click()
 
Dim MonFichier As String
Dim colonne As Integer
Dim Ligne As Integer
Dim cptligne As Integer
Dim cptcolonne As Integer, chaine As String
 
Dim TblColonne() As String '<--------------- New -----------------
 
CommonDialog1.ShowOpen
 
MonFichier = CommonDialog1.FileName
 
Open MonFichier For Input As #1
'colonne = Me.MSFlexGrid1.Cols
'Ligne = Me.MSFlexGrid1.Rows
 
Ligne = -1 ' si pas de ligne fixe, sinon Ligne = 0
Do While Not EOF(1)    ' Effectue la boucle jusqu'à la fin du fichier.
    Line Input #1, chaine
    TblColonne = Split(chaine, Chr(1)) '<--------------- New -----------------
    Ligne = Ligne + 1
    For cptcolonne = 0 To colonne - 1
        Me.MSFlexGrid1.TextMatrix(Ligne, cptcolonne) = TblColonne(cptcolonne) '<--------------- New -----------------
    Next cptcolonne
Loop
Close #1
End Sub
ProgElecT est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 15h59   #18
DarkVader
Rédacteur
 
Avatar de DarkVader
 
Homme
Développeur informatique
Inscription : mai 2002
Messages : 1 945
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : mai 2002
Messages : 1 945
Points : 2 731
Points : 2 731
Bonjour ProgElecT,
Je ne comprends pas pourquoi Chr(1) et non vbTab !

Ex
Code :
1
2
3
4
5
6
7
8
9
10
11
contentExemple="ValL1C1"+vbtab+"ValL1C2"+vbtab+"ValL1C3"+vbcrlf
contentExemple=contentExemple+"ValL2C1"+vbtab+"ValL2C2"+vbtab+"ValL2C3"+vbcrlf
contentExemple=contentExemple+"ValL3C1"+vbtab+"ValL3C2"+vbtab+"ValL3C3"+vbcrlf
 
with flex1
  .col=1
  .row=1
  .rowsel=3
  .colsel=3
  .clip=contentExemple
end with
à vérifier
__________________

Je fournis pelles et pioches mais jamais l'huile de coude.
________________________________________________

« Heureux soient les fêlés, car ils laisseront passer la lumière. »

Pensez aux liens
Rechercher - Google - Google Labs - AllApi
et avant de poster : « A lire » , « Tutoriel sur le déboguage »
DarkVader est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 16h35   #19
dmoluc
Nouveau Membre du Club
 
Homme Didier
Enseignant
Inscription : juin 2012
Messages : 154
Détails du profil
Informations personnelles :
Nom : Homme Didier
Localisation : France

Informations professionnelles :
Activité : Enseignant
Secteur : Enseignement

Informations forums :
Inscription : juin 2012
Messages : 154
Points : 34
Points : 34
Maintenant je n'y comprend plus rien si tant soit peu j'y ai compris quelques chose
le code de ProgElecT ne remplis que la première cellule et avec toute la ligne du fichier text après ça bug : TblColonne(colonne) "is out of range"
quand au code de DarkVader j'ai beau l'étudié en long et en large je ne vois pas comment il fonctionne
je crois que je vais aller discuter un peu avec les secrétaires pour voir si en coupant un peu une idée géniale survient, mais je n'y crois pas trop

enfin merci pour votre aide
dmoluc est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 13/12/2012, 18h58   #20
ProgElecT
Rédacteur/Modérateur
 
Avatar de ProgElecT
 
Homme Francis MILLET
Inscription : décembre 2004
Messages : 3 199
Détails du profil
Informations personnelles :
Nom : Homme Francis MILLET
Âge : 57
Localisation : France, Haute Savoie (Rhône Alpes)

Informations professionnelles :
Secteur : Communication - Médias

Informations forums :
Inscription : décembre 2004
Messages : 3 199
Points : 5 109
Points : 5 109
Envoyer un message via MSN à ProgElecT
Bon, je suis chez moi, j'ai donc plus de temps, au boulot, il y a toujours quelqu'un qui vous dérange

A DarkVader
Chr(1) n'est pas visible (équivalent à un espace) dans quasi tous les éditeurs de fichier txt, alors que vbTab suivant l'éditeur, la séparation des données n'est pas toujours des plus claires, je n'ai eu qu'une seul fois à procéder de la sorte.

A dmoluc
Démarres un nouveau projet, dedans tu y places 3 CommandButtons, 1 FlexGrid et 1 CommonDialog.
Le placement, les intitulés sont fait dans le code (Form_Load).
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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
Option Explicit
Dim T As Long, U As Long, NumFich As Integer
Dim MonFichier As String, Chaine As String, TblCol() As String, SeparateuR As String
 
Private Sub Form_Load()
'positionne les éléments
Command1.Move 120, 60, 1035, 315: Command1.Caption = "Ouvrir"
Command2.Move 1200, 60, 1035, 315: Command2.Caption = "Enregistrer"
Command3.Move 120, 420, 2115, 315: Command2.Caption = "Enregistrer"
MSFlexGrid1.Move 0, 780, 5175, 3075
Me.Height = 4425: Me.Width = 5415
MSFlexGrid1.Rows = 10
MSFlexGrid1.FixedRows = 1
MSFlexGrid1.Cols = 5
MSFlexGrid1.FixedCols = 0
 
'Histoire de remplir le grid
MSFlexGrid1.FormatString = "colonne 1|colonne 2|colonne 3 |colonne 4|colonne 5" 'titrage des colonnes
For T = 1 To MSFlexGrid1.Rows - 1
    For U = 0 To MSFlexGrid1.Cols - 1
        MSFlexGrid1.TextMatrix(T, U) = Chr(64 + T + U) 'remplis chaque cellule
    Next U
Next T
SeparateuR = vbTab '<---------- caractère quelconque, celui que tu veux
End Sub
 
Private Sub Command1_Click()
'Ouvrir
MSFlexGrid1.Clear 'vider toutes les cellules du grid
MSFlexGrid1.Rows = 1: MSFlexGrid1.Cols = 1: T = 1
CommonDialog1.ShowOpen
MonFichier = CommonDialog1.FileName
NumFich = FreeFile
Open MonFichier For Input As #NumFich
Do While Not EOF(NumFich)    ' Effectue la boucle jusqu'à la fin du fichier.
    Line Input #NumFich, Chaine ' récupération de la ligne
    TblCol = Split(Chaine, SeparateuR) 'éclate la ligne en colonne
    If T = 1 Then MSFlexGrid1.Cols = UBound(TblCol) + 1 'dimensionne le nombre de colonne du grid (une seule fois)
    MSFlexGrid1.Rows = MSFlexGrid1.Rows + 1 'ajoute une ligne au grid
    For U = 0 To MSFlexGrid1.Cols - 1
        MSFlexGrid1.TextMatrix(T, U) = TblCol(U) 'rempli chaque colonne
    Next U
    T = T + 1 'préparation pour la suite
Loop
Close NumFich
End Sub
Private Sub Command2_Click()
'Enregistrer
CommonDialog1.ShowSave
MonFichier = CommonDialog1.FileName
NumFich = FreeFile
Open MonFichier For Output As #NumFich
For T = 1 To MSFlexGrid1.Rows - 1
    Chaine = ""
    For U = 0 To MSFlexGrid1.Cols - 1
        Chaine = Chaine & MSFlexGrid1.TextMatrix(T, U)
        'pour ne pas ajouter un séparateur à la dernière colonne
        If U <> MSFlexGrid1.Cols - 1 Then Chaine = Chaine & SeparateuR
    Next U
    Print #NumFich, Chaine 'ecrit la ligne
Next T
Close NumFich
End Sub
Private Sub Command3_Click()
'Vider le FlexGrid
MSFlexGrid1.Clear
End Sub
Au premier lancement, enregistre le FlexGrid (bouton Enregistrer)
Puis effaces le contenu du FlexGrid (bouton Vider le FlexGrid)
Toutes les cellules du FlexGrid sont blanche.
Maintenant, charge ton FlexGrid avec le fichier que tu viens de créer (bouton Ouvrir) re

C'est bon ? en tous cas chez moi le FlexGrid est bien remplis, sauf la ligne fixe, mais si tu as besoin de récupérer aussi le titrage de colonne ....on en rediscute la prochaine fois .
ProgElecT est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 10h54.


 
 
 
 
Partenaires

Hébergement Web