TROUVER UNE LETTRE LIBRE POUR UN LECTEUR VERSION 2

jorisstella Messages postés 16 Date d'inscription mardi 1 avril 2003 Statut Membre Dernière intervention 20 juillet 2003 - 3 juin 2003 à 21:12
DeadlyPredator Messages postés 222 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 30 juin 2008 - 18 févr. 2004 à 18:46
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/7324-trouver-une-lettre-libre-pour-un-lecteur-version-2

DeadlyPredator Messages postés 222 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 30 juin 2008
18 févr. 2004 à 18:46
HEY. MEME PAS BESOINS DE DRIVELISTBOX
<
function FindLetter as string
on error resume next
dim fso
set fso=createobject("scripting.filesystemobject")
for i = asc("c") to asc("z")
if fso.getdrive(chr(i) & ":").driveletter=empty then findletter=chr(i):exit for
next
set fso=nothing
end function
>
c pas beau ça?
cs_Darkukai Messages postés 38 Date d'inscription vendredi 27 septembre 2002 Statut Membre Dernière intervention 29 mai 2006
16 juin 2003 à 11:11
Merci de ton aide mauricet
j'aime les commentaires qui ne se contente pas de critiquer :)

je suis de ton avis d'autant plus que pour moi le but n'est pas forcément de trouver une lettre de libre a pouvoir assignée mais de progresser en vb

merci
cs_Mauricet Messages postés 89 Date d'inscription lundi 3 mars 2003 Statut Membre Dernière intervention 28 juillet 2008
9 juin 2003 à 13:13
Bonjour
A mon avis, il ne faut jamais abandonner, bien que le code de Renfield est meilleur, il faut faire aboutir ton idée afin d'en tirer l'expérience.
Je me suis permit de modifier ton code, tout en restant dans ton idée.
Option Explicit
Private Sub Command1_Click()
Dim i As Integer
Dim lettre As String
Dim numlettre As Integer

'rempli list1 du contenu du poste de travail
For i = 0 To 25
List1.AddItem (Drive1.List(i))
If Drive1.List(i) = "" Then Exit For
Next i

i = 1
Do Until lettre = "z"
lettre = Mid$(List1.List(i - 1), 1, 1)
'affecte la valeur ascii de lettre
If lettre <> "" Then numlettre = Asc(lettre)
'vérifie si les lettres se suivent
'If Asc(Mid$(List1.List(i), 1, 1)) <> numlettre Then
If List1.List(i) = "" Then
'elle se suivent pas donc y a une lettre de libre
Text1.Text = Chr(numlettre + 1)
numlettre = Asc(Text1.Text)
List2.AddItem Chr(numlettre)
Form1.Print numlettre
If numlettre 122 Then lettre "z"
End If
i = i + 1
Loop

End Sub
A bientôt
Maurice Thiébaut
cs_Darkukai Messages postés 38 Date d'inscription vendredi 27 septembre 2002 Statut Membre Dernière intervention 29 mai 2006
5 juin 2003 à 09:04
j'ai mis 10 parceque comme je suis un DEBUTANT je connaissais pas la propriété listcount de drivelistbox mais c'est nickel je met la source à jour
merci
au fait pour les plantages moi çà tourne très bien, je suis sous 2000
vous êtes avec quel système ?
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
4 juin 2003 à 22:12
ton programme plante, des que je cliques sur un bouton....
tu m'expliqueras 2 choses , stp :
- pourquoi tu for i = 0 to 10 (pourquoi 10 !!!!!!)
- pourquoi tu places dans list1 les controles presents dans le Drive....

voici mon code , du clic sur le bouton :

Private Sub Command1_Click()
'26 lettres, des Bytes suffisent donc amplement (0->255)
Dim a As Byte, i As Byte, Existe As Boolean
'on vide la liste
List1.Clear
For a = Asc("a") To Asc("z") 'on parcours tout l'alphabet
Existe = False 'flag permettant de savoir si un lecteur possede la lettre en cours
For i = 0 To Drive1.ListCount - 1 'parcours la liste de lecteurs
If Left$(Drive1.List(i), 1) = Chr$(a) Then 'si la lettre du lecteur est celle analysée
Existe = True 'on met le flag a vrai
Exit For 'on ne regarde pas les autres lecteurs
End If
Next i
' si aucun lecteur n'a cette lettre, on l'ajoute dans la liste
If Not Existe Then List1.AddItem Chr$(a)
Next a
End Sub

voila, mais j'imagines que "si tu t'étais un peu pris la tête avec le code tu t'en serais rendu compte :)"
cs_Darkukai Messages postés 38 Date d'inscription vendredi 27 septembre 2002 Statut Membre Dernière intervention 29 mai 2006
4 juin 2003 à 11:08
faut pas toucher au drivelistbox (y devrait être cacher d'ailleurs)
je m'en sert juste pour lister le contenu du poste de travail
si tu t'étais un peu pris la tête avec le code tu t'en serais rendu compte :)
@+
jorisstella Messages postés 16 Date d'inscription mardi 1 avril 2003 Statut Membre Dernière intervention 20 juillet 2003
3 juin 2003 à 21:12
je ne l'ai pas trop regardé, je l'ai juse, lancé, la je suis mort, je vais pas me prendre la tete, avec ton code, je peut selectionner, nimporte kel lettre, lecran de debogage se lance!
Tr
Rejoignez-nous