cs_David57600
Messages postés3Date d'inscriptionvendredi 28 septembre 2007StatutMembreDernière intervention28 septembre 2007
-
28 sept. 2007 à 15:04
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019
-
29 sept. 2007 à 10:19
Bonjour tous le monde,
Je suis étudiant en licence pro métiers des services et des telecoms et nous avons commencer par avoir des cours sur visuals basic.
J'ai un petit TD ( pas noté biensur c'est juste pour de l'entrainement) qui me demande d'écrire un petit programme qui me perméttrait de vérifier le nombre de lettre "e" taper dans une textbox toutes les 500ms.
Le petit problème c'est que je n'arrive pas. On me demande d'utiliser la variable String mais je bloque.
Une personne pourrait t'elle m'aider s'il vous plait.
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 28 sept. 2007 à 16:47
Bonjour;
Je n'aime en général pas utiliser la fonction Split, que j'évite le plus souvent possible
Elle me parait pourtant cette fois-ci intéressante, non ? (un bon split sur le "e"). surtout si le texte est long !.
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_David57600
Messages postés3Date d'inscriptionvendredi 28 septembre 2007StatutMembreDernière intervention28 septembre 2007 28 sept. 2007 à 18:33
Merci NHenry le programme fonctionne bien. Enfait moi je n'utilisé que la commande Len et pas la commande Mid. Je ne suis encore qu'un débutant. Merci encore pour ton aide ;-)
cs_casy
Messages postés7741Date d'inscriptionmercredi 1 septembre 2004StatutMembreDernière intervention24 septembre 201440 28 sept. 2007 à 18:40
ben je sais pas, j'execute ce code :
chaine = "eaaaaeaaaaeaaaaeaaae"
Table = Split("e" & chaine & "e", "e")
MsgBox UBound(Table) - 1
Je compte 5 e et la messagebox me donne 6
pour celui-ci
chaine = "aaaaaaaaaaaaaaaaaaaa"
Table = Split("e" & chaine & "e", "e")
MsgBox UBound(Table) - 1
elle me donne 1
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 28 sept. 2007 à 18:54
Alors :
Je viens de voir ma fonction de substitution...
Et comme je crois bien que celle déposée est à peu de choses près la même, je suggère que la même correction soit apportée ...pour que la substitution et VB6 soient en harmonie
Voilà la fonction (le rouge est ce qu'il y avait et le bleu la correction.
Public Function Split(ByVal MyString As String, ByVal Separator As String) As Variant
Dim iPosit As Long
Dim Table() As String
' <strike> ReDim Table(0)
</strike> ReDim Table(1)
iPosit = InStr(MyString, Separator)
If iPosit = 1 Then
MyString = Mid$(MyString, Len(Separator) + 1)
iPosit = InStr(MyString, Separator)
End If
While iPosit > 0
Table(UBound(Table)) = Left(MyString, iPosit - 1)
MyString = Mid$(MyString, iPosit + Len(Separator))
ReDim Preserve Table(UBound(Table) + 1)
iPosit = InStr(MyString, Separator)
Wend
Table(UBound(Table)) = MyString
Split = Table
End Function
A tout hasard, je poste ma méthode :
Dim i As Long, l As Long, nb As Long
i = 0
nb = 0
l = Len(chaine)
While (i < l)
i = InStr(i + 1, chaine, "e")
If i > 0 Then nb = nb + 1 Else Exit For
Wend, ----
(Coloration syntaxique automatique par Kenji)
BruNews
Messages postés21040Date d'inscriptionjeudi 23 janvier 2003StatutModérateurDernière intervention21 août 2019 29 sept. 2007 à 10:19
Charles Racaud en donne la meilleure approche.
Economisons qlqs cycles:
Sub tester()
Dim i As Long, nb As Long
Dim chaine As String
chaine = "il est dans le métro à cette heure"
nb = 0
Do
i = InStr(i + 1, chaine, "e")
If i = 0 Then Exit Do
nb = nb + 1
Loop
Debug.Print nb
End Sub