Publicité
+ Répondre à la discussion
Page 1 sur 2 12 DernièreDernière
Affichage des résultats 1 à 20 sur 35
  1. #1
    Membre du Club
    Homme Profil pro Didier
    Enseignant
    Inscrit en
    juin 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2012
    Messages : 191
    Points : 49
    Points
    49

    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

  2. #2
    Membre émérite Avatar de DAUDET78
    Homme Profil pro Alphonse Daudet
    retraité
    Inscrit en
    janvier 2008
    Messages
    487
    Détails du profil
    Informations personnelles :
    Nom : Homme Alphonse Daudet
    Âge : 71
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2008
    Messages : 487
    Points : 816
    Points
    816

    Par défaut

    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

  3. #3
    Membre du Club
    Homme Profil pro Didier
    Enseignant
    Inscrit en
    juin 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2012
    Messages : 191
    Points : 49
    Points
    49

    Par défaut

    merci c'est déjà ça : à force de piquer des codes à droites à gauche sans les comprendres totalement, je fais des bétises

  4. #4
    Membre du Club
    Homme Profil pro Didier
    Enseignant
    Inscrit en
    juin 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2012
    Messages : 191
    Points : 49
    Points
    49

    Par défaut

    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

  5. #5
    Membre émérite Avatar de DAUDET78
    Homme Profil pro Alphonse Daudet
    retraité
    Inscrit en
    janvier 2008
    Messages
    487
    Détails du profil
    Informations personnelles :
    Nom : Homme Alphonse Daudet
    Âge : 71
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2008
    Messages : 487
    Points : 816
    Points
    816

    Par défaut

    Peut être
    Code :
    Open MonFichier.text For Input As #1

  6. #6
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro Francis MILLET
    Inscrit en
    décembre 2004
    Messages
    3 495
    Détails du profil
    Informations personnelles :
    Nom : Homme Francis MILLET
    Âge : 58
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 495
    Points : 6 372
    Points
    6 372

    Par défaut

    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.

  7. #7
    Membre expérimenté
    Inscrit en
    décembre 2007
    Messages
    471
    Détails du profil
    Informations forums :
    Inscription : décembre 2007
    Messages : 471
    Points : 564
    Points
    564

    Par défaut

    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

  8. #8
    Membre émérite Avatar de DAUDET78
    Homme Profil pro Alphonse Daudet
    retraité
    Inscrit en
    janvier 2008
    Messages
    487
    Détails du profil
    Informations personnelles :
    Nom : Homme Alphonse Daudet
    Âge : 71
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité
    Secteur : Industrie

    Informations forums :
    Inscription : janvier 2008
    Messages : 487
    Points : 816
    Points
    816

    Par défaut

    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

  9. #9
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro Francis MILLET
    Inscrit en
    décembre 2004
    Messages
    3 495
    Détails du profil
    Informations personnelles :
    Nom : Homme Francis MILLET
    Âge : 58
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 495
    Points : 6 372
    Points
    6 372

    Par défaut

    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.

  10. #10
    Membre du Club
    Homme Profil pro Didier
    Enseignant
    Inscrit en
    juin 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2012
    Messages : 191
    Points : 49
    Points
    49

    Par défaut

    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

  11. #11
    Membre du Club
    Homme Profil pro Didier
    Enseignant
    Inscrit en
    juin 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2012
    Messages : 191
    Points : 49
    Points
    49

    Par défaut

    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 Images attachées

  12. #12
    Membre du Club
    Homme Profil pro Didier
    Enseignant
    Inscrit en
    juin 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2012
    Messages : 191
    Points : 49
    Points
    49

    Par défaut

    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 Fichiers attachés

  13. #13
    Membre du Club
    Homme Profil pro Didier
    Enseignant
    Inscrit en
    juin 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2012
    Messages : 191
    Points : 49
    Points
    49

    Par défaut

    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....

  14. #14
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2002
    Messages
    2 025
    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 : 2 025
    Points : 2 781
    Points
    2 781

    Par défaut

    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 »

  15. #15
    Membre du Club
    Homme Profil pro Didier
    Enseignant
    Inscrit en
    juin 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2012
    Messages : 191
    Points : 49
    Points
    49

    Par défaut

    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

  16. #16
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2002
    Messages
    2 025
    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 : 2 025
    Points : 2 781
    Points
    2 781

    Par défaut

    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 »

  17. #17
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro Francis MILLET
    Inscrit en
    décembre 2004
    Messages
    3 495
    Détails du profil
    Informations personnelles :
    Nom : Homme Francis MILLET
    Âge : 58
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 495
    Points : 6 372
    Points
    6 372

    Par défaut

    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

  18. #18
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    mai 2002
    Messages
    2 025
    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 : 2 025
    Points : 2 781
    Points
    2 781

    Par défaut

    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 »

  19. #19
    Membre du Club
    Homme Profil pro Didier
    Enseignant
    Inscrit en
    juin 2012
    Messages
    191
    Détails du profil
    Informations personnelles :
    Nom : Homme Didier
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : juin 2012
    Messages : 191
    Points : 49
    Points
    49

    Par défaut

    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

  20. #20
    Rédacteur/Modérateur
    Avatar de ProgElecT
    Homme Profil pro Francis MILLET
    Inscrit en
    décembre 2004
    Messages
    3 495
    Détails du profil
    Informations personnelles :
    Nom : Homme Francis MILLET
    Âge : 58
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Secteur : Communication - Médias

    Informations forums :
    Inscription : décembre 2004
    Messages : 3 495
    Points : 6 372
    Points
    6 372

    Par défaut

    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 .

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •