Dichotomie dans excell et petite question stupide...

cs_Sell Messages postés 2 Date d'inscription mardi 6 septembre 2005 Statut Membre Dernière intervention 26 octobre 2005 - 26 oct. 2005 à 13:58
cs_bayosky Messages postés 17 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 23 juillet 2007 - 26 oct. 2005 à 16:26
1- J'utilise un petit soft qui recherche des infos dans Excell, pour l'instant je réalise ces recherches ligne par ligne...quelqu'un aurait-il déja eu l'occasion d'utiliser un code de recherche par dichotomie avec Excell ou une autre méthode?

2- lorsque j'introduis par exemple dans un texte box 3 ou 30, quel pourrait être le code pour me renvoyer 003 ou 030 (càd 3 charactères dans tous les cas)?

Merci d'avance pour vos réponses....

Sell

8 réponses

Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
26 oct. 2005 à 14:15
Pour ta question 2 :
Tu peux faire un truc du style ...

If len(TxtBox.Text)= 2 then
TxtBox.Text = "0" & TxtBox.Text
End If
If len(TxtBox.Text)= 1 then
TxtBox.Text = "00" & TxtBox.Text
End If

Molenn
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 oct. 2005 à 14:20
salut
[VB6]


Option Explicit
'
'
Private Sub Command1_Click()
MsgBox Set3Carac(30)
End Sub
'
'
Private Function Set3Carac(ByVal iVal As Integer) As String
Select Case iVal
Case Is < 0: Set3Carac = "000"
Case Is < 10: Set3Carac = "00" & CStr (iVal)
Case Is < 100: Set3Carac = "0" & CStr(iVal)
Case Else: Set3Carac = CStr(iVal)
End Select
End Function


<SMALL> Coloration syntaxique automatique [AFCK]</SMALL>


++
PCPT [AFCK]
0
Molenn Messages postés 797 Date d'inscription mardi 7 juin 2005 Statut Membre Dernière intervention 23 février 2011 7
26 oct. 2005 à 14:31
Ca ne pose pas un pb ton bout de code là ?
Case Is < 0: Set3Carac = "000"
Case Is < 10: Set3Carac = "00" & CStr(iVal)
Case Is < 100: Set3Carac = "0" & CStr(iVal)
Case Else: Set3Carac = CStr(iVal)

Parce que si ta première condition est respectée, les 2 autres le sont aussi, et si la 2ème est respecéte, la 3ème l'est aussi :

Par ex., si le chiffre est égal à 9, il est à la fois inférieur à 10 et inférieur à 100
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 oct. 2005 à 14:49
essaie tu verras
0

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

Posez votre question
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
26 oct. 2005 à 14:50
c'est un des intérêts entre le SELECT et le IF....
0
Baguauda Messages postés 219 Date d'inscription mercredi 31 août 2005 Statut Membre Dernière intervention 28 novembre 2008 1
26 oct. 2005 à 15:36
en vb oui essaye en java

pour la dichotomie c'est quoi qui t'interesse exactement j'en est fait une il y a peu ca donne a peu pres ca.


Private
Function dichotomie(
ByVal code
As
Long,
ByVal binf
As
Integer,
ByVal bSup
As
Integer)
As element



Dim cinf, cSup, cMil
As
Long



Dim bMil
As
Integer


bMil = (bSup - binf) \ 2



'tout les champs de la liste sont remplil on recupère les valueurs pour les comparaison


cinf =
liste_All_Articles(binf).getCode)


cSup =
liste_All_Articles(bSup).getCode)


cMil =
liste_All_Articles(bMil).getCode)



' cas ou on est pas dans l'interval



If cinf > code
Then
Return
-1

If cSup < code
Then
Return
-1



'cas ou on a le code qui existe deja



If cinf = code
Then
Return
binf



If cSup = code
Then
Return
bsup

If cMil = code
Then
Return
bMil

'cas interval trop peit le nombre n'est pas present



If bSup - binf < 2
Then
Return -1



'Recurcive



If code < cMil
Then
Return dichotomie(code, binf + 1, bMil - 1)



If code > cMil
Then
Return dichotomie(code, bMil + 1, bSup - 1)



End
Function

Bon c'est refait un peut a l'arrache car ma dichotomie n'avais pas le meme but donc j'ai enlever ce qui pouvais etre inutile.
Au lieu d'utiliser l'index d'une liste tu peut utiliser un numéro de ligne.

J'espere que ca repond a peut pres a ta question.
0
cs_Sell Messages postés 2 Date d'inscription mardi 6 septembre 2005 Statut Membre Dernière intervention 26 octobre 2005
26 oct. 2005 à 16:01
Merci à tous...

Sell
0
cs_bayosky Messages postés 17 Date d'inscription samedi 5 avril 2003 Statut Membre Dernière intervention 23 juillet 2007
26 oct. 2005 à 16:26
Salut,

Pour ton bout de code avec 3 chiffres
un truc du type

right("000" & cstr(valeur) ;3)

me semble suffisant

En ce qui concerne la recherche dans une feuille excel, le plus simple et le plus performant est sans doute d'utiliser les "fonctions de feuille de calcul" en faisant bosser excel.
Les fonctions déjà prètes sont nombreuses et particulièrement optimisées ...
( plus que la dichotomie ... )
On doit pouvoir facilement lancer une macro du classeur ou une opération sur une feuille à partir d'un programme extérieur...

Humberto Bayosky
0
Rejoignez-nous