Dichotomie dans excell et petite question stupide...
cs_Sell
Messages postés2Date d'inscriptionmardi 6 septembre 2005StatutMembreDernière intervention26 octobre 2005
-
26 oct. 2005 à 13:58
cs_bayosky
Messages postés17Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention23 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)?
PCPT
Messages postés13278Date d'inscriptionlundi 13 décembre 2004StatutMembreDernière intervention 3 février 201848 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
Molenn
Messages postés797Date d'inscriptionmardi 7 juin 2005StatutMembreDernière intervention23 février 20117 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
Baguauda
Messages postés219Date d'inscriptionmercredi 31 août 2005StatutMembreDernière intervention28 novembre 20082 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.
cs_bayosky
Messages postés17Date d'inscriptionsamedi 5 avril 2003StatutMembreDernière intervention23 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...