IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Compter les lignes CSV en VB6


Sujet :

VB 6 et antérieur

  1. #21
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour Nicodiablo,

    Ton code n'est pas bon ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     TmpValeur = (VarTab3VoiesBrutes(1, TmpCompteur) - ZeroV1)
    Erreur de compilation:nombre de dimensions incorrect

    Soit les parenthèses sont mal placées,ou il manque une valeur, ou il manque une virgule.
    Peut-être ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     TmpValeur = VarTab3VoiesBrutes(1, TmpCompteur, ZeroV1)
    'ou
    TmpValeur = VarTab3VoiesBrutes(1, TmpCompteur - ZeroV1, x )
    'ou...

  2. #22
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par iclic Voir le message
    Bonjour Nicodiablo,

    Ton code n'est pas bon ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     TmpValeur = (VarTab3VoiesBrutes(1, TmpCompteur) - ZeroV1)
    Erreur de compilation:nombre de dimensions incorrect

    Soit les parenthèses sont mal placées,ou il manque une valeur, ou il manque une virgule.
    Peut-être ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     TmpValeur = VarTab3VoiesBrutes(1, TmpCompteur, ZeroV1)
    'ou
    TmpValeur = VarTab3VoiesBrutes(1, TmpCompteur - ZeroV1, x )
    'ou...
    Bonjour Iclic,

    le code que j'ai donné fonctionne très bien et me permet de créer mes graphes avec des fichiers de données .mat; Je viens encore d'essayer.

    Aujourd'hui comme je l'ai expliqué mes données m'arrivent en csv, grace à ton aide entre autre j'ai réussi à mettre le csv dans une matrice mais par contre je n'arrive pas à dessiner la courbe avec une variable de type MultipleTableau.

    Mais je t'assure dans le code est avec VarTab3VoiesBrutes en Integer ça marche très bien.

  3. #23
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 191
    Points
    17 191
    Par défaut
    Salut

    iclic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'déclaration d'une variable à 3 index
    Global VarTab3VoiesBrutes (1 to 3, 1 to 3, 1to 120000) as integer
    'utilisation erronée de la variable manque le 3ém index
    MemTmpValeur = (VarTab3VoiesBrutes(1, 1) - ZeroV1) 'zero étant le zéro offset du capteur
    Si tu as un On Error ... dans ta procédure (que tu nous as pas mis dans le code exemple), pas de déclenchement d'erreur, mais exécution incomplète du code.
    Pour moi il faut que tu règles se problème avant de passer à la suite.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #24
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par ProgElecT Voir le message
    Salut

    iclic
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'déclaration d'une variable à 3 index
    Global VarTab3VoiesBrutes (1 to 3, 1 to 3, 1to 120000) as integer
    'utilisation erronée de la variable manque le 3ém index
    MemTmpValeur = (VarTab3VoiesBrutes(1, 1) - ZeroV1) 'zero étant le zéro offset du capteur
    Si tu as un On Error ... dans ta procédure (que tu nous as pas mis dans le code exemple), pas de déclenchement d'erreur, mais exécution incomplète du code.
    Pour moi il faut que tu règles se problème avant de passer à la suite.
    oupoupoup désolé, j'ai mal écris mon code dans le copier/coller.
    Voilà ma déclaration :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MemTmpValeur = F_VoltToG(VarTab3VoiesBrutes(1, 1), ZeroV1, AFF_SENSIT_1)
    AFF_SENSIT_1 étant la sensibilité du capteur pour l'axe 1 !!!

    Méa Culpa

  5. #25
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour ,

    1.Moi ,personnellement je ne mets pas de " on error goto ou resume" dans un programme en test car justement commre le dit Progelect celà empêche de voir
    les erreurs!
    (ou alors il faut mettre un arrêt avec un message ou les mettre en Rem
    pendant les tests)

    2.Qu'appelles-tu une variable de type multipletableau?

    Un tableau a plusieurs indices?

    3.De plus

    ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    MemTmpValeur = F_VoltToG(VarTab3VoiesBrutes(1, 1), ZeroV1, AFF_SENSIT_1)
    'devrait être
    MemTmpValeur = F_VoltToG(VarTab3VoiesBrutes(1,  ZeroV1, AFF_SENSIT_1))

  6. #26
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par iclic Voir le message
    Bonjour ,

    1.Moi ,personnellement je ne mets pas de " on error goto ou resume" dans un programme en test car justement commre le dit Progelect celà empêche de voir
    les erreurs!
    (ou alors il faut mettre un arrêt avec un message ou les mettre en Rem
    pendant les tests)

    2.Qu'appelles-tu une variable de type multipletableau?

    Un tableau a plusieurs indices?
    En fait Iclic j'ai repris le code du message 5 de ce sujet proposé par ProgElect et validé par toi dans la page 1 du sujet.

    Voici le code pour mémoire et on y voit la déclaration de MonTableau comme MultipleTableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Option Explicit
    Private Type MultipleTableau
     LeData() As String
    End Type
     
     
    Private Sub Form_Load()
    Dim MonTableau() As MultipleTableau
    Dim T As Integer, U As Integer
    Dim Msg$
    Dim NbrLgn As Integer, NbrCln As Integer
    Dim NumFich As Integer
    Dim CheminNomFichier As String
     
    CheminNomFichier = "?????????????"
    Msg$ = ""
    NumFich = FreeFile
    Open CheminNomFichier For Input As #NumFich
    Msg$ = Input(FileLen(CheminNomFichier), NumFich)
    Close #NumFich
    If Msg$ = "" Then
     MsgBox "le fichier est vide", vbCritical
     Unload Me
    End If
     
    'variables intermediaires à 1 indice, servant à construire le tableau "MonTableau" a 2 indices
    Dim DecoupeContenuLg() As String
    Dim DecoupeContenuCl() As String
     
    'création du tableau "DecoupeContenuLg", pour 1° indice (Ligne) du tableau "MonTableau"
    DecoupeContenuLg = Split(Msg$, vbCrLf)
    'création du tableau "DecoupeContenuCl", pour 2° indice (colonne, "LeData") du tableau "MonTableau"
    DecoupeContenuCl = Split(DecoupeContenuLg(0), ",")
    'recuperation du Nbr de lignes et Nbr de colonne
    NbrLgn = UBound(DecoupeContenuLg) - 1 '(-1 car le fichier ce termine par une ligne vierge)
    NbrCln = UBound(DecoupeContenuCl)
     
    'maintenant que le Nbr de lignes et le Nbr de colonnes est connu
    'dimensionnement de la variable tableau "MonTableau"
    ReDim MonTableau(NbrLgn)
     
    'remplis le tableau "MonTableau" a 2 dimensions
    For T = 0 To NbrLgn
     'recuperation de chaque ligne
     DecoupeContenuCl = Split(DecoupeContenuLg(T), ",") 'la separation de chaque colonnes est une virgule
     For U = 0 To NbrCln
      ReDim Preserve MonTableau(T).LeData(U)
      MonTableau(T).LeData(U) = DecoupeContenuCl(U)
     Next U
    Next T
     
    'Lecture du tableau "MonTableau" a 2 dimensions
    For T = 0 To NbrLgn
        For U = 0 To NbrCln
            Debug.Print MonTableau(T).LeData(U)
        Next U
    Next T
    End Sub
    Donc MonTableau en fin de code contient les valeurs de mes axes à chaque temps donné et maintenant je voudrais en tracé une courbe pour l'axe 1

    Voilà

  7. #27
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 191
    Points
    17 191
    Par défaut
    Je suis désolé d'avoir induit en erreur par la proposition d'une variable tableau exotique.

    Il y a confusion, une variable tableau standard peut avoir plusieurs index, ici 2
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim MeTableau( 0 to 20, 0 to 3)
    La différence pour le type que j'avais défini, pour un besoin précis de mémorisation de hauteur de neige/24h, via un capteur de construction personnel.
    Le nombre de chute de neige pouvant être différent d'un jour à un autre, MonTableau d'index = numero du jour de l'année, la sous-variable LeData d'index numéro de la chute de neige du jour contenant, l'heure début, heure de fin et hauteur cumulé durant cette période.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'création un type de données défini par l'utilisateur 
    Private Type MultipleTableau
     LeData() As String
    End Type
    Ce type est donc une variable qui contient une sous-variable (LeData) de type tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim MonTableau() As MultipleTableau
    MonTableau devient une variable tableau qui contient une variable tableau.
    MonTableau à un index, la sous-variable (LeData) à un index.

    La sous-variable MonTableau(x).LeData peut avoir un nombre d'indice différent.

    Exemple avec ce
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    Option Explicit
     
    Private Type MultipleTableau
     LeData() As String
    End Type
    Dim MonTableau() As MultipleTableau
     
    Private Sub Form_Load()
    Me.AutoRedraw = True
    Me.Height = 4905: Me.Width = 4725
     
    ReDim MonTableau(1 To 3)
    ReDim MonTableau(1).LeData(1 To 3)
    ReDim MonTableau(2).LeData(1 To 3)
    ReDim MonTableau(3).LeData(1 To 5)
     
    MonTableau(1).LeData(1) = 10
    MonTableau(1).LeData(2) = 20
    MonTableau(1).LeData(3) = 30
     
    MonTableau(2).LeData(1) = 100
    MonTableau(2).LeData(2) = 200
    MonTableau(2).LeData(3) = 300
     
    MonTableau(3).LeData(1) = 1000
    MonTableau(3).LeData(2) = 2000
    MonTableau(3).LeData(3) = 3000
    MonTableau(3).LeData(4) = 4000
    MonTableau(3).LeData(5) = 5000
     
     
    Dim T As Integer, U As Integer
     
    For T = 1 To 3
        Me.Print "MonTableau indice : " & T
        For U = 1 To UBound(MonTableau(T).LeData) ' 3
            Me.Print "      MonTableau(" & T & ").LeData(" & U & ") = " & MonTableau(T).LeData(U)
        Next U
        Me.Print
        Me.Print
    Next T
     
    End Sub
    On peut constater que MonTableau(3) contient la sous-variable tableau LeData d'indice 1 à 5, alors que les autres sous-variable tableau LeData n'ont que 3 indices (1 à 3).

    Citation Envoyé par nicodiablo
    je voudrais en tracé une courbe pour l'axe 1
    Si la récupération a été faite sous le nom de variable MonTableau() déclarer de type MultipleTableau et que l'indice 1 correspond bien à l'axe 1, il faut récupérer pour cet indice 1 tout les indices de la sous-variable LeData

    Finalement, pour ton besoin, si le nombre d'axes est constant et que le nombre de chaque temps données et constant lui aussi, un tableau à 2 dimensions et suffisant, ce qui n'était pas mon cas, d'ou la construction d'un type bien particulié.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  8. #28
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    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 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Citation Envoyé par iclic Voir le message
    Bonjour ,

    1.Moi ,personnellement je ne mets pas de " on error goto ou resume" dans un programme en test car justement commre le dit Progelect celà empêche de voir
    les erreurs!
    (ou alors il faut mettre un arrêt avec un message ou les mettre en Rem
    pendant les tests)

    .../...
    Pas forcément il suffit d'adapter le choix de la sortie dans le gestionnaire d'erreur (Msgbox, clipboard etc)
    et utiliser les numeros de lignes, voir accessoirement y placer un stop.
    Il est même possible de basculer entre 2 types de gestionnaires en utilisant la compilation conditionnelle couplée avec une variable conditionnelle prédéfinie
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    #If GestType=0 then
        ' Ici la spécification en mode test
        msgbox "Error " & Err.Number & " at line " & Erl & " '" & Err.description & ")"
        stop
     
    #Else
        ' Ici en mode final
        '.../...
    #Endif

  9. #29
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Points : 1
    Points
    1
    Par défaut
    Re bonjour,

    après avoir essayé vos recommandations plusieurs fois, je n'ai toujours pas réussi à résoudre mon problème.

    Du coup je n'avance pas trop sur l'exploitation des données de mes patients. Si l'un d'entre vous veut bien continuer à m'aider je suis preneur.

    Pour rappel, j'ai des fichiers CSV que je souhaite lire et stocker dans un tableau. Le nombre de colonne dans mon CSV sera toujours de 4 séparées par des points virgules. Par contre le nombre de ligne varie selon la durée de l'enregistrement du capteur sur les patients.

    Comment pouvoir intégrer ces valeurs dans un tableau ?
    J'avais donnée des explications plus précises un peu plus haut.

    Si vous pouvez m'aider.

  10. #30
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    après diverses tentatives j'ai réussi à intégrer les données provenant de mon fichier .csv dans une MSFlexGrid avec le code suivant en appuyant sur mon bouton start :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    68
    Private Sub Start_Click()
     
        SetGrille           ' Formate le FlexGrid (lignes, colonnes, entêtes...)
        ChargerFichierTxt   ' Charge le fichier .txt dans un tableau
        AfficherDonnees     ' Affiche les données dans le FlexGrid
     
     
    End Sub
     
     
     
    Private Sub SetGrille()
        'Propriétés de la MsFlexGrid
        Dim Rows As Long
        Dim i As Integer
        With mfgGrilleDeDonnees
            .AllowBigSelection = False
            .FixedCols = 1
            .FixedRows = 1
            .Cols = 3
            .Rows = 30000
            .ColWidth(0) = .ColWidth(0) * 1.25
            'For i = 0 To 3
            '.Row = 0: .Col = i
            '.CellFontBold = True
            '.CellAlignment = flexAlignCenterCenter
            '.Row = i: .Col = 0
            '.CellFontBold = True
            'Next
            'For i = 4 To 12
            '.Row = i
            '.CellFontBold = True
            'Next
        End With
    End Sub
     
    Private Sub ChargerFichierTxt()
        Dim numFic As Integer, nomFic As String, i As Integer
        Dim strLigneData As String
        numFic = FreeFile
        nomFic = App.path & "\donnees.txt"
        Open nomFic For Input As #numFic
            i = 0
            Do Until EOF(numFic)
                Line Input #numFic, strLigneData
                tblLigneData() = Split(strLigneData, ",")
                Debug.Print UBound(tblLigneData)
                tblDonnees(i, 0) = tblLigneData(0)
                tblDonnees(i, 1) = tblLigneData(1)
                tblDonnees(i, 2) = tblLigneData(2)
                'tblDonnees(i, 3) = tblLigneData(3)
                i = i + 1
            Loop
        Close #numFic
    End Sub
     
    Private Sub AfficherDonnees()
        Dim i As Integer
        With mfgGrilleDeDonnees
            For i = 0 To 22000
                .TextMatrix(i, 0) = tblDonnees(i, 0)
                .TextMatrix(i, 1) = tblDonnees(i, 1)
                .TextMatrix(i, 2) = tblDonnees(i, 2)
                '.TextMatrix(i, 3) = tblDonnees(i, 3)
            Next
        End With
     
    End Sub
    Ma dernière étape est de tracer le graph courbe de la 1ère colonne, et j'ai vraiment besoin de votre aide.
    J'ai dessiner une PictureBox (car je souhaite que le traçé soit à l'intérieur) que j'ai nommé GraphSignalComplet et je pensais pouvoir faire la courbe en écrivant quelque choses du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GraphSignalComplet.Line (mfgGrilleDeDonnees.TextMatrix(i, 0)
    Mais ça ne marche pas.

    Quelqu'un peut-il m'aider à utiliser cette fonctio "Line" pour tracer ma première colonne.

    Je vous joins ma MSFlexGrid remplie.


    Merci beaucoup

  11. #31
    Modérateur
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 077
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 191
    Points
    17 191
    Par défaut
    Salut

    Bien du progrès

    Pour .Line il faudrait que tu lises bien les explications que tu peux trouver dans MSDN (récupération ICI si tu ne l'as pas encore).
    Il te faut réfléchir à l'unité de tes données et l'unité utiliser dans ton PictureBox (Twips, Pixels, ...) tu dois assurément avoir besoin de convertir tes données brutes.
    Tes données sont exprimées en négatif, pour les récupérer en positif tu peux utiliser la fonction native ABS(-Data) qui te renvoie le data sans le - (moins).

    GraphSignalComplet.Line (mfgGrilleDeDonnees.TextMatrix(i, 0)
    Attention, .Line attend des valeurs en Single non pas du String, CSng(mfgGrilleDeDonnees.TextMatrix(i, 0)),
    Bonne continuation.
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  12. #32
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Points : 1
    Points
    1
    Par défaut
    oui je progresse, mais tellement lentement que s'en est affligeant...

    Bref depuis ce matin j'ai réussi à tracer une droite avec mes deux premiers points, en essayant en dur.

    En faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Const Coul1 = 33 023
    GraphSignalComplet.Line (1, 2)-(4, 2), Coul1
    Puis j'ai progressé en passant par des TextBox


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    Const Coul1 = 33023
        Dim i As Integer
     
        With mfgGrilleDeDonnees
            For i = 0 To 22000
                .TextMatrix(i, 0) = tblDonnees(i, 0)
                .TextMatrix(i, 1) = tblDonnees(i, 1)
                .TextMatrix(i, 2) = tblDonnees(i, 2)
                '.TextMatrix(i, 3) = tblDonnees(i, 3)
                Next
        End With
     Text8.Text = mfgGrilleDeDonnees.TextMatrix(1, 0)
     Text9.Text = mfgGrilleDeDonnees.TextMatrix(1, 1)
     Text10.Text = mfgGrilleDeDonnees.TextMatrix(2, 0)
     Text11.Text = mfgGrilleDeDonnees.TextMatrix(2, 1)
     
     
    GraphSignalComplet.Line ((Text8.Text), (Text9.Text))-((Text10.Text), (Text11.Text)), Coul1
    Ma Courbe s'est bien traçé et je l'ai bien ajusté en définissant par défaut les deux valeurs de GraphSignalComplet.ScaleHeight et GraphSignalComplet.ScaleWidth.


    Maintenant il faut que j'arrive à accrémenter la variable de ligne pour faire tout les couples de points mais je n'y arrive pas. J'ai fait entre autre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mfgGrilleDeDonnees.TextMatrix(i, 0)
    Mais j'y arrive pas à obtenir ma courbe.

  13. #33
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    je reviens vers vous suite à ce topic que j'avais ouvert. Après de nombreuses recherches, votre aide et beaucoup d'essais de ma part j'ai réussi à créer mon programme qui est devenu fonctionnel.

    Je rencontre un dernier souci qui est le suivant : quand j'ai fini de visualiser le résultat graphique d'un fichier et que je désire en sélectionner un autre, j'ai une erreur "Run Time Error '13' Type mismatch"

    Ci joint le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
     
    '*********************************************
    'Chargement du fichier choisi dans mon menu
    '*********************************************
     
    Private Sub FileSaved_Click()
     
     
      Close
      TypeAffichage = "NvFich"   'pour eviter l'evenement ScrollSignal_Change
     
     
     
      '---------------  Effacements  -----------------------------------
      GraphSignalComplet.Picture = LoadPicture()
      GraphEchantillon.Picture = LoadPicture()
      LabelFileName.Caption = "": LabelFileName.refresh
      LabelLengthSignal.Caption = "": LabelLengthSignal.refresh
      Text_Comment1.Text = "": Text_Comment1.refresh
      Text_Comment2.Text = "": Text_Comment2.refresh
     
      '-----  Test si un fichier est sélectionné  -----------------------
      If Len(Trim(FileSaved.FileName)) = 0 Then
        VarFichierSimple = "ERROR"
        Exit Sub
      End If
     
      '---------------  Init Nom Fichier  -------------------------------
      VarFichierSimple = UCase(Trim(FileSaved.FileName))
      If Len(Trim(FileSaved.path)) = 3 Then
        VarFichierComplet = UCase(Trim(FileSaved.path) & Trim(VarFichierSimple))
      Else
        VarFichierComplet = UCase(Trim(FileSaved.path) & "\" & Trim(VarFichierSimple))
      End If
     
      '---------------  TEST Type Fichier=CSV  -----------------------
      If LCase(Right(Trim(VarFichierSimple), 4)) <> ".csv" Then
        VarFichierSimple = "ERROR"
        Exit Sub
      End If
     
    VarNumAxis = 1
      Var_TmpCoul = Coul1
      OptAxeEchantillon(1).Value = True   'enchaine call OptAxeEchantillon_Click
     
     
    ' Lancement des opérations suivantes : calcul et affichage :
     
    mfgGrilleDeDonnees.refresh
     
    SetGrille           ' Formate le FlexGrid (lignes, colonnes, entêtes...)
    ChargerFichierTxt   ' Charge le fichier .txt dans un tableau
    AfficherDonnees     ' Affiche les données dans le FlexGrid
     
    End Sub
     
     
     
    '*****************************************************************
    'formatage flexgrid - chargement fichier - afficher les résultats
    '*****************************************************************
     
    Private Sub SetGrille()
        'Propriétés de la MsFlexGrid
        Dim Rows As Long
        Dim i As Integer
     
        With mfgGrilleDeDonnees
            .AllowBigSelection = False
            .FixedCols = 1
            .FixedRows = 1
            .Cols = 3
            .Rows = 30000
            .ColWidth(0) = .ColWidth(0) * 1.25
        End With
     
    End Sub
     
    Private Sub ChargerFichierTxt()
     
        Dim numFic As Integer, nomFic As String, i As Integer
        Dim strLigneData As String
        numFic = FreeFile
        nomFic = (VarFichierComplet) 'App.path & "\donnees.txt"
     
        mfgGrilleDeDonnees.refresh
     
        Erase tblDonnees
     
        Open nomFic For Input As #numFic
            i = 0
            Do Until EOF(numFic)
     
                Line Input #numFic, strLigneData
                tblLigneData() = Split(strLigneData, ",")
                Debug.Print UBound(tblLigneData)
                tblDonnees(i, 0) = tblLigneData(1)
                tblDonnees(i, 1) = tblLigneData(2)
                tblDonnees(i, 2) = tblLigneData(0)
                'tblDonnees(i, 3) = tblLigneData(3)
                i = i + 1
                nbligne = nbligne + 1
            Loop
        Close #numFic
     
     
    Private Sub AfficherDonnees()
        Const Coul1 = 33023
        Dim i As Integer
        Dim MemTmpValeurB As Double
        Dim TmpValeurB As Double
        Dim QA_AxeY  As Integer
     
     
     
    mfgGrilleDeDonnees.refresh
    mfgGrilleDeDonnees.Clear
     
     
    QA_AxeY = 3
    GraphSignalComplet.ScaleWidth = nbligne - 1
     
    MemTmpValeurB = tblDonnees(1, 0)
     
    With mfgGrilleDeDonnees
            For i = 2 To nbligne - 1
                .TextMatrix(i, 0) = tblDonnees(i, 0)
                '.TextMatrix(i, 1) = tblDonnees(i, 1)
                '.TextMatrix(i, 2) = tblDonnees(i, 2)
                '.TextMatrix(i, 3) = tblDonnees(i, 3)
     
      '******************************************************************
      ' 1) multiplication par -1 pour remettre dans la bonne orientation
      ' 2) soustraction de 1 pour création offset
      '******************************************************************
     
     
            TmpValeurB = ((-1 * tblDonnees(i, 0)) - 1)
            GraphSignalComplet.Line (i - 1, QA_AxeY - TmpValeurB)-(i, QA_AxeY - MemTmpValeurB), Coul1
            MemTmpValeurB = TmpValeurB
           Next i
     
      End With
     
       GraphSignalComplet.refresh
       GraphSignalCompletSaved.Picture = GraphSignalComplet.Image
     
       VarXGraphSignalComplet = 1   '1/1024
     
    End sub
    La fonction "débug" me renvoie à la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TmpValeurB = ((1 * tblDonnees(i, 0))-1)



    Je pense que je n'arrive pas à vider ou ré-initialiser tblDonnees ou TmpValeurB entre le chargement de 2 fichiers.

    Si quelqu'un peu m'aider, car pour le moment, entre chaque patient testé je suis obligé d'éteindre l'appli, et de la ré-ouvrir.

    Merci

  14. #34
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    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 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Bonjour,
    TmpValeurB => double
    tblDonnees => apparemment String !!!

    «Type mismatch» est pourtant sans équivoque.

  15. #35
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Bonjour Nicodiablo,

    D'abord

    1.A mon avis tu aurais dû ouvrir un nouveau post celà aurait été plus clair
    car ton erreur n'a plus rien à voir avec ta première question.

    2 Error Type mismatch"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TmpValeurB = ((1 * tblDonnees(i, 0))-1)
    Tu mets dans TmpValeurB une donnée qui ne correspond pas au Type de variable que tu as donné dans ton programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim TmpValeurB As Double
    Ou bien c"est ton tableau TblDonnées qui provoque l'erreur.
    D'après ce que je vois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tblDonnees(i, 0) = tblLigneData(1)
    tblDonnees(i,0) a une valeur string ,je suppose or tu fais un calcul avec
    une chaîne de caractères.

    Essaie peut-être ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TmpValeurB = ((1 * val(tblDonnees(i, 0)))-1)
    A+

  16. #36
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Points : 1
    Points
    1
    Par défaut
    Ok Darkvader, je te remercie d'avoir soulevé ce problème.

    Juste une question, pourquoi ça marche au chargement du 1er fichier et pourquoi ensuite ça ne fonctionne plus ?

  17. #37
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par iclic Voir le message
    Bonjour Nicodiablo,

    D'abord

    1.A mon avis tu aurais dû ouvrir un nouveau post celà aurait été plus clair
    car ton erreur n'a plus rien à voir avec ta première question.

    2 Error Type mismatch"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TmpValeurB = ((1 * tblDonnees(i, 0))-1)
    Tu mets dans TmpValeurB une donnée qui ne correspond pas au Type de variable que tu as donné dans ton programme
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim TmpValeurB As Double
    Ou bien c"est ton tableau TblDonnées qui provoque l'erreur.
    D'après ce que je vois
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    tblDonnees(i, 0) = tblLigneData(1)
    tblDonnees(i,0) a une valeur string ,je suppose or tu fais un calcul avec
    une chaîne de caractères.

    Essaie peut-être ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TmpValeurB = ((1 * val(tblDonnees(i, 0)))-1)
    A+

    Effectivement j'aurais pu ouvrir un nouveau topic, mais je savais pas comment l'appeler.

    Tu as bien deviné tblDonnees est bien déclaré comme une valeur "string".
    Je vais essayer ta solution, mais le mieux ne serait-il pas de déclarer TmpValeurB comme "string" aussi ??

  18. #38
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Tu charges un fichier .cvs ( qui est en réalité du texte)

    Si le texte est numérique vb fait automatiquement la conversion.

    Ex :dans ton fichier si tu as le nombre '13

    Tldonnee est défini comme string tu auras 2 octets, le premier code ascii(49),
    le second code ascii(51)

    Si Tldonnee est défini comme double ,ce n'est pas la même conversion.

  19. #39
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 25
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par iclic Voir le message
    Tu charges un fichier .cvs ( qui est en réalité du texte)

    Si le texte est numérique vb fait automatiquement la conversion.

    Ex :dans ton fichier si tu as le nombre '13

    Tldonnee est défini comme string tu auras 2 octets, le premier code ascii(49),
    le second code ascii(51)

    Si Tldonnee est défini comme double ,ce n'est pas la même conversion.

    Ok je comprends mieux.
    C'est sans doute pour celà qu'avec ta méthode, j'arrive à passer deux fichiers puis ensuite j'obtiens pour un 3ème fichier un bug type overflow ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    With mfgGrilleDeDonnes
    for i = 2 to nbligne - 1
    y a pas un moyen de réinitialiser comme juste avant le Er fichier sélectionné1

  20. #40
    Membre éclairé
    Inscrit en
    Décembre 2007
    Messages
    512
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 512
    Points : 671
    Points
    671
    Par défaut
    Overflow c'eqt un autre type d'erreur

    1.Quelle est la valeur de nbligne?
    Quel type de variable est nbligne?

    2.Pourquoi nepeux tu pas déclaré le tableau Tldonnee comme Double?

Discussions similaires

  1. Compter les lignes d'un fichier CSV à partir d'une ligne
    Par miniRoshan dans le forum Général Java
    Réponses: 6
    Dernier message: 03/06/2010, 11h16
  2. Réponses: 4
    Dernier message: 02/06/2010, 17h23
  3. Compter les lignes du fichier CSV
    Par miniRoshan dans le forum Général Java
    Réponses: 5
    Dernier message: 28/05/2010, 11h37
  4. [CSV] Compter les lignes d’un fichier csv
    Par sam01 dans le forum Langage
    Réponses: 3
    Dernier message: 24/01/2007, 11h16
  5. [C#] Compter les lignes d'un DataSet
    Par alexischmit dans le forum ASP.NET
    Réponses: 13
    Dernier message: 26/04/2004, 15h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo