Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Contribuez
Contribuez Placez ici vos codes, sources, trucs et astuces que vous souhaitez partager avec les membres du club.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/09/2007, 13h21   #1
Membre régulier
 
Inscription : août 2007
Messages : 95
Détails du profil
Informations personnelles :
Âge : 28

Informations forums :
Inscription : août 2007
Messages : 95
Points : 75
Points : 75
Salut,

ci-joint un bout de code qui fait de la recherche dichotomique. J'ai testé rapidos, ça a l'air de marche pas trop mal.

Au passage, la recherche dichotomique est la recherche la plus rapide qui soit pour peu que ton tableau soit suffisamment important pour que ça vaille le coup de la mettre en place (quelques opérations de calcul, un peu de raisonnement sur les conditions de fin, les conditions initiales...)

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
 
Public Sub tri()
Dim premligne, derligne, lireligne As Double
Dim valeurcherchee As Double
 
premligne = 1
derligne = 65536
 
valeurcherchee = InputBox("valeur cherchée")
 
If Range("A1").Value > valeurcherchee Then
    MsgBox ("Pas trouvée")
    Exit Sub
End If
 
If Range("A" & derligne).Value < valeurcherchee Then
    MsgBox ("Pas trouvée")
    Exit Sub
End If
 
While premligne <> derligne - 1
    lireligne = Int((premligne + derligne) / 2)
    Range("A" & lireligne).Select
    If Selection = valeurcherchee Then
        MsgBox ("trouvee en " + CStr(lireligne))
        Exit Sub
        Else
        If Selection > valeurcherchee Then
            derligne = lireligne
            Else
            premligne = lireligne
        End If
    End If
Wend
 
If Range("A" & premligne).Value = valeurcherchee Then
    MsgBox ("trouvé en " + premligne)
    Else
    If Range("A" & derligne).Value = valeurcherchee Then
        MsgBox ("trouvé en " + derligne)
        Else
        MsgBox ("Non trouvé")
    End If
End If
End Sub
Voilà

Code issu de la discussion http://www.developpez.net/forums/sho...t=dichotomique
grrimag est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 15h57.


 
 
 
 
Partenaires

Hébergement Web