hidozo
Messages postés56Date d'inscriptionsamedi 24 mai 2008StatutMembreDernière intervention 6 novembre 2010
-
9 juin 2009 à 00:16
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 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.
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 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)