Recherche de donnée dans MSFlexGrid

Résolu
Malokoxis Messages postés 83 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 22 février 2021 - Modifié par Malokoxis le 4/02/2014 à 20:48
Malokoxis Messages postés 83 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 22 février 2021 - 5 févr. 2014 à 21:17
Bonsoir à tous,

Je viens de pondre un code pour rechercher des données dans un MSFlexGrid.
Dans ce tableau il y à 6 colonnes qui sont remplies depuis un fichier Excel.
Je souhaite cherche une valeur du type "deux ou trois chiffres avant la virgule, entre 0 et 5 chiffres après" au maximum :
donc entre ##,# et ###,##### (le # remplace un chiffre).

Le début de ma colonne est remplie par des valeurs du type 82.5 classée de la plus petite à la plus grande et lorsque je fait une rechercher une valeur et que cette valeur comprend deux chiffres avant la virgule, pas de soucis, le résultat est trouvé, par contre dès qu'il y à trois chiffres avant la virgule, rien n'est trouvé, alors que le tableau en contient.

Auriez vous une idée ?


Voici mon code :
La valeur que je recherche est dans valeur1.text
Je la recherche dans MSFlexgrid1, d'abord dans la colonne 1 puis dans la colonne 2. Et j'enregistre à quelle ligne elle est dans la colonne 1 dans la variable Ligne1 et à quelle ligne elle est dans la variable Ligne2.

With FichierExcel 'nom de la feuille
    .MSFlexGrid1.Row = 1
    .MSFlexGrid1.Col = 1

    For i = 1 To .MSFlexGrid1.Rows - 1
        If Valeur1.Text < .MSFlexGrid1.Text Then
            Ligne1 = .MSFlexGrid1.Row - 1
            Exit For
        End If
        .MSFlexGrid1.Row = i
    Next i
    
    .MSFlexGrid1.Col = 2

    For i = 1 To .MSFlexGrid1.Rows - 1
        If Valeur1.Text < .MSFlexGrid1.Text Then
            Ligne2 = .MSFlexGrid1.Row - 1
            Exit For
        End If
        .MSFlexGrid1.Row = i
    Next i
End With

7 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 févr. 2014 à 23:41
Bon ...
De toutes manières et de manière générale :
les chaînes de caractères ne sont pas des numériques, même si leur contenu est le texte d'un nombre.
Ainsi : "321" est plus petit que que "4" alors que 321 est plus grand que 4.
Pour faire des opérations de comparaisons ou autres sur des nombres exprimés en chaînes de caractères, il est impératif de transposer ces dernières en type numérique.
Existent pour cela les fonctions Cint, Csng, Cdbl ... de VB. Elles sont à étudier dans ton aide VB6 puis à utiliser.
1
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 févr. 2014 à 20:54
Bonjour,
difficile de te répondre avec précision sans savoir ce qu'est la variable valeur1.
Tu dis vouloir chercher les nombres dont les entiers pourraient être des dizaines ou des centaines, mais montres un code qui compare des valeurs par rapport à une valeur critère.
Essaye d'expliquer plus techniquement ce que tu cherches à faire, mais également de quoi tu "pars"
0
Malokoxis Messages postés 83 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 22 février 2021 2
4 févr. 2014 à 21:07
Bonsoir UCFOUTU,
merci de ta réponse,

Je pars d'un tableau contenant deux colonnes qui m'intéresse. Ces colonne contiennent des plages de valeurs. Donc ligne 1 plage entre 34,9 et 36,25, ligne 2 : entre 36,25 et 39,4, ...
La première valeur de la plage est contenu dans la colonne 1, la dernière dans la colonne 2.

Je souhaite savoir dans quel plage de valeurs se situe le chiffre taper par l'utilisateur. Ce chiffre peu être un chiffre compris entre 0 et 999, avec de 0 à 5 chiffres après la virgule.

mais montres un code qui compare des valeurs par rapport à une valeur critère. 
Qu'appelle tu valeur et valeur critère ?

merci
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 4/02/2014 à 21:21
1) Tu n'as pas répondu à ma première question.
2) "Qu'appelle tu valeur et valeur critère ? "
dans :
 If Valeur1.Text < .MSFlexGrid1.Text
valeur.text est un critère, que tu compares à une valeur de ta grille !

________________________
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'interviend
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Malokoxis Messages postés 83 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 22 février 2021 2
Modifié par Malokoxis le 4/02/2014 à 22:25
1) Tu n'as pas répondu à ma première question.
difficile de te répondre avec précision sans savoir ce qu'est la variable valeur1. 
réponse :
le chiffre taper par l'utilisateur. Ce chiffre peu être un chiffre compris entre 0 et 999, avec de 0 à 5 chiffres après la virgule. 
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 févr. 2014 à 22:53
Valeur1.text est en effet sans aucun doute une valeur de type string. Ce n'est pas ce que je t'ai demandé, mais ===>>>
"ce qu'est la variable valeur1"
qui est probablement un objet et non une chaîne de caractères
0
Malokoxis Messages postés 83 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 22 février 2021 2
5 févr. 2014 à 20:12
super, je vais essayer ça

merci beaucoup
0
Malokoxis Messages postés 83 Date d'inscription lundi 3 janvier 2011 Statut Membre Dernière intervention 22 février 2021 2
5 févr. 2014 à 21:17
Cint marche très bien, merci beaucoup UCFOUTU.
Que serai le forum sans toi ?!
0
Rejoignez-nous