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 :

compare alphanumerique d'un tableau


Sujet :

VB 6 et antérieur

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 7
    Points
    7
    Par défaut comparaison alphanumérique d'un tableau
    Salut a tous

    voici un fichier sous la de :
    NC10-F01 2990 23300 11222
    NC10-F01 2333 22333 11133
    NC10-01 1223 11223 11223
    NC10-01 11122 11223 1123
    NC01-01 1223 11223 11232
    NC10-D05 78733 29994 22333
    NC10-D05 8996 2334 22239

    Mon probleme ,je dois faire un test sur la premiere colonne
    si c'est different ,je fais un calcul a partir des autres colonnes qui sont
    numeriques.
    je ne sais pas faire la comparaison des valeurs de la premiere colonne
    qui est de format mixte.
    Merci

  2. #2
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    B'soir,

    tu peu utiliser la fonction split pour "séparer" tes colonnes si c'est cela ton probléme .

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    merci
    mon probleme ,comment faire un test sur la valeur de la premiere colonne pour faire la suite du programme

  4. #4
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    essai ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    dim stDim st1 As String
    Dim Tb
    st1 = "NC10-F01 2990 23300 11222"
    Tb = Split(st1, " ")
    MsgBox Tb(0)
     
    st = "NC10-F01 2990 23300 11222"

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Citation Envoyé par djilali22 Voir le message
    merci
    mon probleme ,comment faire un test sur la valeur de la premiere colonne pour faire la suite du programme
    Bonjour,
    bbil t'ayant répondu en ce qui concerne l'éclatement de tes colonnes, je suppose que tuy es déjà parvenu à isoler la 1ère (celle sur laquelle tu compares en vue de tes éventuels calculs ...)
    Si tes données sont triées (ce qui semble être le cas), il te suffit de passer de l'une à l'autre par une boucle For .... et de comparer ...
    La comparaison d'une chaine de caractères se fait avec les mêmes opérateurs (=, >, <, >=, <= et <>) que ceux utilisés pour la comparaison de numériques ...
    quel est donc ton problème ?
    Se résoudrait-il à faire une boucle de comparaison sur un tableau contenant :

    NC10-F01
    NC10-F01
    NC10-01
    NC10-01
    NC01-01
    NC10-D05
    NC10-D05

    en vue de savoir si un de ses éléments est ou non différent de l'élément suivant ?????

  6. #6
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Quand je fais la comparaison entre par exemple
    VAL(NC10-F01) et VAL( NC10-01) ME DONNE ZERO alors que c'est different

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Citation Envoyé par djilali22 Voir le message
    Quand je fais la comparaison entre par exemple
    VAL(NC10-F01) et VAL( NC10-01) ME DONNE ZERO alors que c'est different
    Et qui t'a demandé d'utiliser Val ????
    Je n'ai parlé que d'opérateurs !!!!
    Ouvre donc ton aide en ligne sur le mot Val et lis, s'il te plait ...(tu y découvriras pourquoi val(toto) = 0 et que val("titi") = 0 également, bien évidemment !!!

  8. #8
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Merci pour les reponses
    j'ai essaye tous les trucs concernant les strings , ca ne marche pas
    Ne me traite pas toutes les lignes .
    voici mon 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
    Private Sub command1_Click()
    Dim dx As Single
    Dim dy As Single
    Dim da As Single
    Dim db As Single
    Dim t As Single
    Dim s As Single
    Dim t1() As String
    Dim ligne() As String
    
       CommonDialog1.ShowOpen
       Label1.Caption = CommonDialog1.FileName
     
       filin = Mid(Label1.Caption, 1, Len(Label1.Caption)) & ".INT"
     
       
       Open filin For Output As #2
       Open Label1.Caption For Input As #1
       i = 1
           While Not EOF(1)
             ReDim Preserve t1(i)
             ReDim Preserve ligne(i)
             Line Input #1, t1(i)
             ligne(i) = Mid$(t1(i), 9, 3)
             
             i = i + 1
         Wend
         
        For i = LBound(t1) To UBound(t1)
          For j = UBound(t1()) To i + 2 Step -1
             If ligne(i) <> ligne(j) Then
         '  resultat = StrComp(ligne(i), ligne(j))
         '  If resultat <> 0 Then
        X1 = Val(Mid$(t1(i), 47, 9))
        Y1 = Val(Mid$(t1(i), 57, 9))
        X2 = Val(Mid$(t1(i + 1), 47, 9))
        Y2 = Val(Mid$(t1(i + 1), 57, 9))
        A1 = Val(Mid$(t1(j - 1), 47, 9))
        B1 = Val(Mid$(t1(j - 1), 57, 9))
        A2 = Val(Mid$(t1(j), 47, 9))
        B2 = Val(Mid$(t1(j), 57, 9))
        dx = X2 - X1
        dy = Y2 - Y1
        da = A2 - A1
        db = B2 - B1
        DIST = Abs(Sqr(Abs((dx * dx + dy * dy))) - Sqr(Abs((da * da + db * db))))
                  
        '   End If
        
        If (da * dy - db * dx) = 0 Then
        '   Debug.Print , " The segments are parallel."
              Exit Sub
              
        End If
       
        s = (dx * (B1 - Y1) + dy * (X1 - A1)) / (da * dy - db * dx)
        t = (da * (Y1 - B1) + db * (A1 - X1)) / (db * dx - da * dy)
        
              If (s >= 0# And s <= 1# And t >= 0# And t <= 1#) And DIST <= 200 Then
              'And DIST <= 200
                                Print #2, t1(i); t1(j), "    ", Mid$(t1(i), 67, 5) - Mid$(t1(j), 67, 5)
                ' print#2,mid$(t1(i),1,13)
            
                  End If
                  End If
            Next
         Next
      
      Close
      End
     End Sub

    ca traite que les lignes de meme genre exemple NC10-F01 NC10-F02 mais pasde comparaison avec ligne genre NC10-01 ET NC10-02

  9. #9
    Membre expert Avatar de OhMonBato
    Homme Profil pro
    Inscrit en
    Mars 2007
    Messages
    2 660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 660
    Points : 3 685
    Points
    3 685
    Par défaut
    Comme il t'a déjà été plus haut, tu fais un split sur ta chaine pour séparer les différents champs en prenant l'espace comme séparateur, et ensuite tu compares avec "=" ou "<>" les premiers champs de chaque chaine, c'est aussi simple que ça.
    Pour VB6 : N'oubliez pas d'aller voir la FAQ et les Tutoriels
    Vous trouvez une reponse particulierement utile ? Votez pour !

  10. #10
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    je m'excuse de ce contre-temps mon probleme se trouve dans la formulation de lignes de codes qui sont en rouge

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     ligne(i) = Mid$(t1(i), 9, 3)
             
             i = i + 1
         Wend
         
        For i = LBound(t1) To UBound(t1)
          For j = UBound(t1()) To i + 2 Step -1
             If ligne(i) <> ligne(j) Then

  11. #11
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    b'sr..

    en prenant une ligne après l'autre :

    qu'espère tu obtenir dans ligne(i) avec cela ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ligne(i) = Mid$(t1(i), 9, 3)

  12. #12
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    bonjour
    j'espere obtenir un parametre qui me permet de comparer les elements de la premiere colonne. Merci

  13. #13
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par djilali22 Voir le message
    bonjour
    j'espere obtenir un parametre qui me permet de comparer les elements de la premiere colonne. Merci
    un exemple ?.

    donne nous un (ou plusieurs ) exemple du contenu de t(i) et du contenu désiré dans ligne(i)

  14. #14
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 16
    Points : 7
    Points
    7
    Par défaut
    Merci Bbil
    voici un exemple de l'information que je veux traiter :
    ADX7-82-14 2.01 297737.00 531921.00 542.0
    ADX7-82-14 3.01 297793.54 531888.70 542.0
    ADX7-82-14 4.01 297850.08 531856.41 542.0
    ADX7-82-14 5.01 297906.62 531824.11 542.0
    ADX7-82-D03 267.01 302395.17 508435.71 500.0
    ADX7-82-D03 268.01 302352.05 508387.21 499.0
    ADX7-82-D03 269.01 302308.92 508338.70 499.0
    ADX7-82-D03 270.01 302265.79 508290.20 498.0
    ADX7-82-D03 271.01 302222.67 508241.70 498.0
    ADX7-82-D03 272.01 302179.54 508193.20 498.0
    ADX7-82-D03 273.01 302136.41 508144.70 498.0
    ADX7-82-D03 274.01 302093.29 508096.20 498.0
    ADX7-82-D03 275.01 302050.16 508047.70 498.0
    ADX7-82-D04 10.01 298403.99 515549.91 513.0
    ADX7-82-D04 11.01 298463.37 515520.53 514.0
    ADX7-82-D04 12.01 298522.74 515491.14 514.0
    ADX7-82-D04 13.01 298582.11 515461.76 514.0
    ADX7-82-D04 14.01 298641.49 515432.37 514.0
    ADX7-82-D04 15.01 298700.86 515402.99 514.0
    ADX7-82-D04 16.01 298760.24 515373.60 514.0
    ADX7-82-D04 17.01 298819.61 515344.22 514.0
    ADX7-82-F04 467.01 253673.95 530717.41 370.0
    ADX7-82-F04 468.01 253615.07 530744.70 370.0
    ADX7-82-F04 469.01 253556.18 530771.99 370.0
    ADX7-82-F04 470.01 253497.30 530799.27 371.0
    ADX7-82-F04 471.01 253438.42 530826.56 373.0
    ADX7-82-F04 472.01 253379.53 530853.85 375.0
    ADX7-82-F04 473.01 253320.65 530881.14 376.0
    ADX7-82-F04 474.01 253261.77 530908.42 376.0
    ADX7-82-F04 475.01 253202.88 530935.71 379.0
    ADX7-86-01 500.01 260163.00 518769.00 422.0
    ADX7-86-01 501.01 260188.88 518753.92 422.0
    ADX7-86-01 502.01 260214.75 518738.83 422.0
    ADX7-86-01 503.01 260240.63 518723.75 422.0
    ADX7-86-01 504.01 260266.50 518708.67 422.0
    ADX7-86-01 505.01 260292.38 518693.58 423.0
    ADX7-86-01 506.01 260318.25 518678.50 424.0
    ADX7-86-01 507.01 260344.13 518663.42 425.0
    ADX7-86-01 508.01 260370.01 518648.33 427.0
    si la valeur de la premiere colonne est la meme ,je saute sinon je fais un calcul en utilisant les autres colonnes.

  15. #15
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Citation Envoyé par bbil Voir le message
    b'sr..

    en prenant une ligne après l'autre :

    qu'espère tu obtenir dans ligne(i) avec cela ? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     ligne(i) = Mid$(t1(i), 9, 3)
    et donc ... ? tu as quoi dans t(i) et tu veux quoi dans ligne(i) ?

Discussions similaires

  1. [XL-2007] Comparer une plage à un tableau
    Par apt dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 30/04/2012, 08h30
  2. comparer 2 tableau de int avec marge d erreur
    Par jerome86600 dans le forum Algorithmes et structures de données
    Réponses: 8
    Dernier message: 17/07/2006, 14h31
  3. comparer 2 tableau de int avec marge d erreur
    Par jerome86600 dans le forum Visual C++
    Réponses: 0
    Dernier message: 14/07/2006, 13h02
  4. [Tableaux] Comparer les lignes d'un même tableau
    Par derfatypik dans le forum Langage
    Réponses: 5
    Dernier message: 06/01/2006, 12h14
  5. comparer les valeurs d'un tableau
    Par nicerico dans le forum ASP
    Réponses: 4
    Dernier message: 19/08/2004, 11h20

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