Remplir Flexgrid avec données formatées [Résolu]

Malokoxis 69 Messages postés lundi 3 janvier 2011Date d'inscription 8 février 2018 Dernière intervention - 4 oct. 2013 à 17:01 - Dernière réponse : Malokoxis 69 Messages postés lundi 3 janvier 2011Date d'inscription 8 février 2018 Dernière intervention
- 8 oct. 2013 à 20:23
Bonjour,

Je souhaite intégrer un MSFlexGrid dans une application.
La liste des données à remplir existe déjà sous forme de texte : 150 lignes, 2 colonnes espacées par des tabulations et les ligne par des retours à la ligne.

Comment puis-je remplir mon flexgrid directement depuis ce format de tableau?

Merci de votre aide.

Malo
Afficher la suite 

Votre réponse

11 réponses

ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 4 oct. 2013 à 22:49
0
Merci
Bonjour,
Tu ne nous dis rien sur l'origine/emplacement du texte en cause.
Or, la réponse dépend de cette précision.
Commenter la réponse de ucfoutu
Malokoxis 69 Messages postés lundi 3 janvier 2011Date d'inscription 8 février 2018 Dernière intervention - 4 oct. 2013 à 22:56
0
Merci
bonsoir
merci pour ta réponse,

Le texte est dans un fichier texte.
Commenter la réponse de Malokoxis
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 4/10/2013 à 23:08
0
Merci
Bien,
Il te faut donc commencer par apprendre (avant même de penser à ajouter à une grille) à lire, ligne par ligne, le fichier en cause.
Il te faut pour cela l'ouvrir (instruction Open, en mode lecture (for Input) ligne par ligne (Line Input)
Si tu ne sais pas encore faire cela, ouvre ton aide VB6 sur chacun des mots que j'ai soulignés et lis, ainsi que les exemples d'accompagnement. Cet aspect est par ailleurs l'un des plus récurrents sur ce forum, qui dispose d'un moteur de recherche qui te conduira à un nombre impressionnant de discussions résolues et de codes déposés.
Si tu as déjà passé ce "cap" : il te faudra, pour chaque ligne lue, distinguer les mots séparés par une tabulation. La fonction Split (à lire dans ton aide VB6) est là pour cela et est fort bien exposée dans ton aide.
Si tu rencontres encore une difficulté après ces lectures, reviens nous l'exposer, accompagnée du code tenté pour la résoudre.

Nous ne parlerons du reste (écriture dans la grille) qu'ensuite.
Bonne étude

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
Commenter la réponse de ucfoutu
Malokoxis 69 Messages postés lundi 3 janvier 2011Date d'inscription 8 février 2018 Dernière intervention - 5 oct. 2013 à 20:02
0
Merci
Bonsoir

Merci

J'utilise ce code pour ouvrir le fichier :

Dim Chaine As String
Open FichierBalise For Input As #1
Fichier.Text = ""
Do While Not EOF(1)
Line Input #1, Chaine
Fichier.Text = Fichier.Text & vbCrLf & Chaine
Loop
Close #1


Je n'ai pas encore réussi à utiliser la fonction Split pour résoudre mon problème, malgré l'aide VB6 et la lecture de plusieurs sujets.

J'imagine qu'il faudrait faire un boucle pour rechercher les tabulations et à chaque fois qu'on en trouve une, mettre le texte qui la précède dans le colonne 1 et lae texte qui la suit dans la colonne 2 ?
Commenter la réponse de Malokoxis
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 5/10/2013 à 20:24
0
Merci
te rends-tu compte, ai moins, de ce que cette ligne de code :
Fichier.Text = Fichier.Text & vbCrLf & Chaine

te ramène à la case départ ?
Le split est à faire sur chaque ligne, donc chaque variable chaine !
Relis-moi donc ... J'avais pourtant dit clairement :
"il te faudra, pour chaque ligne lue, distinguer les mots séparés par une tabulation" (le split, sur tabulation)
"Je n'ai pas encore réussi à utiliser la fonction Split pour résoudre mon problème, malgré l'aide VB6 et la lecture de plusieurs sujets "
l'aide VB6 suffit pourtant très largement ...
Montre au moins ce que tu en as fait.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 5 oct. 2013 à 20:57
Pour être encore plus clair :
A chaque ligne (chaine) lue :
"éclater" cette chaine sur la tabulation (par split) ===>> tu obtiens les deux valeurs à insérer dans ta grille
comment les insérer est un second aspect, que nous verrons ensuite.
écris pour l'instant le code qui :
- ouvre le fichier
- lit une ligne à la fois
a) --- pour cette ligne : lit la valeur valeura et la valeur valeurb obtenues par split
b) --- affiche par msgbox chacune de ces 2 valeurs
- passe à la ligne suivante, etc ...
Passé ce cap, nous verrons comment, en lieu et place du msgbox, écrire dans la grille valeura et valeurb
car, tu le vois bien, tu as dans cette discussion deux difficultés :
- savoir lire et traiter ligne par ligne
- savoir ajouter des valeurs (quelle qu'en soit le mode d'obtention ou l'origine) dans ta grille
DEUX questions, donc, dans cette discussion...
En d'autrres termes :
- savoir extraire ce que tu veux ajouter à ta grille est UN problème
- savoir ajouter à ta grille en est un AUTRE
Commenter la réponse de ucfoutu
Malokoxis 69 Messages postés lundi 3 janvier 2011Date d'inscription 8 février 2018 Dernière intervention - Modifié par Malokoxis le 6/10/2013 à 15:51
0
Merci
Quand on cherche : on trouve !
Merci UCFOUTU

   
    Dim pos As Integer
    Dim entry() As String
    Dim entry2() As String

    entry = Split(Fichier.Text, vbCrLf, , vbTextCompare)
    
    For i = 0 To UBound(entry)
        entry2 = Split(entry(i), vbTab, , vbTextCompare)
        
        With MSFlexGrid1
            .Col = 0
            .Row = i + 1
            .Text = entry2(1)
            
            .Col = 1
            .Row = i + 1
            .Text = entry2(0)
        End With
    Next
Commenter la réponse de Malokoxis
lermite222 8728 Messages postés dimanche 8 avril 2007Date d'inscriptionContributeurStatut 27 janvier 2014 Dernière intervention - 6 oct. 2013 à 16:09
0
Merci
Bonjour,
Cela fait un certain temps que je n'ai plus travaillé sur un FlexGrid mais il me semble qu'avec les renseignements que tu donne sur ton fichier texte ce serait possible de simplifier avec la fonction Clip.
A voir.
A+
Commenter la réponse de lermite222
Malokoxis 69 Messages postés lundi 3 janvier 2011Date d'inscription 8 février 2018 Dernière intervention - 8 oct. 2013 à 18:55
0
Merci
Bonsoir lermitte222,

Merci pour l'astuce mais tout marche très bien avec ce code.
Quel sera les avantages de ta solution ?
Commenter la réponse de Malokoxis
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 8 oct. 2013 à 19:16
0
Merci
La solution de lermitte222 te permet d'insérer directement (sans boucle) le texte lu dans le fichier. Les tab et les vbcrlf provoqueront spontanément la répartitions entre cellyulmes et lignes de ta grille.

N'oublie pas de clore et ainsi libérer ce sujet (tag "résolu")
Commenter la réponse de ucfoutu
Malokoxis 69 Messages postés lundi 3 janvier 2011Date d'inscription 8 février 2018 Dernière intervention - 8 oct. 2013 à 20:23
0
Merci
merci pour cette réponse ucfoutu
Commenter la réponse de Malokoxis

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.