Comparaison de valeur

Résolu
hidozo
Messages postés
56
Date d'inscription
samedi 24 mai 2008
Statut
Membre
Dernière intervention
6 novembre 2010
- 9 juin 2009 à 00:16
cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
- 9 juin 2009 à 01:05
bonjour,

j'ai 2 textbox (T1 et T2), la soustraction des deux se met dans une textbox (T3)

Je souhaite rechercher dans une plage de cellules (où il y a des nombres) si la valeur T3 se retouve.

Si c'est le cas, je veux afficher dans une textbox (T4) le contenu de la cells(row de la cellule trouvée, colonne 1) + (row de la cellule trouvée, colonne 2).

Cela me permettrait de faire faire en automatique un travail qui me prendrait 2 jours en intégrant un pré tri manuel.

J'ai réussi à automatiser le pré tri qui ne me prend plus que 5 min.

j'ai testé pour la recherche la formule suivante avec la comparaison avec une seule cellule D6 :

if abs(T2.value-T1.value)= cells(6,4).value then T4.value=cells(row de la cellule trouvée, 1) + cells(row de la cellule trouvée,2)

Ca ne marche pas. PAR CONTRE, si je remplace la référence cells(6,4) par la valeur de la cellule : "234" par exemple et bien cela fonctionne :

if abs(T2.value-T1.value)= "234" then T4.value=cells(row de la cellule trouvée, 1) + cells(row de la cellule trouvée,2)

Le problème de faire référence àa la valuer, c'est que pour les mises à jours tous les ans (les valeurs de références changent ) ce ne sera pas évident de changer tous les codes, alors que si je fais référence à la cellule, je ne touche plus le code.

Enfin, là pour l'exemple, je fait référence à une seule cellule, alor que je dois rechercher la comparaison dans une plage : G6:K56.

Merci de votre aide.

Cordialement

Hidozo

<!-- / message -->

1 réponse

cs_Jack
Messages postés
14007
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
80
9 juin 2009 à 01:05
Salut
Si tu travailles avec des chiffres, ne mets pas tes valeurs entre ", c'est réservé aux chaines.
VBA n'est pas bête et fait la traduction, mais un jour tu te feras avoir.

Qu'y a t-il dans la cellule 6,4 ?
Juste un chiffre   234  ou bien un    '234  ou encore   "234"   ?
Dans ce dernier cas, la cellule n'est pas un chiffre, d'où le problème de comparaison.
Ajoute ceci pour le vérifier :
   MsgBox ">" & Cells(6, 4).Value & "<"
Tu connaitra exactement ce qu'il y a dans cette cellule, peut-être quelque chose te sautera aux yeux.
Eventuellement, fais le test avec
   Val(Cells(6, 4).Value)
mais Val("234") donnera 0
Dans ce cas, il faut comparer     "monCalcul" avec "234"
   If """" & CStr(Abs(T2.value-T1.value)) & """" = "234" then 
Quatre " sui se suivent est une chaine équivalente à un simple ", en fait, il suffit de mettre 2 " dans une chaine pour obtenir ce simple ", auquels il faut ajouter le " de début et de fin.
CStr est la fonction de conversion d'un chiffre en chaine

Pour ta recherche dans une plage, enregistre une macro puis sélectionne une plage et lance une recherche --> Tu auras le code tout fait. Tu n'auras plus qu'à le paramétrer.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

<hr />Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3