Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionb (a 5 And c = 5) If (a 5 And c 5) Then b = True Else b = False1.357 x fois plus rapide avec If
a IIf(j 5, 1, 2) If j 5 Then a 1 Else a = 265 x fois plus rapide avec If
Private Sub testTYPE() Dim a As String lblINFO(1).Caption "a Left(""Test de type"", 5)" For i = 1 To nTESTS Call QueryPerformanceCounter(ticDEB) For j = 1 To nFOIS a = Left("Test de type", 5) Next j Call QueryPerformanceCounter(ticFIN) temps(1, i) = (ticFIN - ticDEB) / ticFRQ Next i lblINFO(2).Caption "a Left$(""Test de type"", 5)" For i = 1 To nTESTS Call QueryPerformanceCounter(ticDEB) For j = 1 To nFOIS a = Left$("Test de type", 5) Next j Call QueryPerformanceCounter(ticFIN) temps(2, i) = (ticFIN - ticDEB) / ticFRQ Next i End Sub
a = "TEST" MsgBox Mid$("TEST", 2, 2) ' = ES Mid$(a, 2, 2) = "XX" MsgBox a ' = TXXT
For j = 1 To nFOIS t() = Split(a, "<test>") b = Split(t(1), "</test")(0) Next j
For j = 1 To nFOIS strDEB = "<test>" strFIN = "</test" nDEB = InStr(1, a, strDEB) nFIN = InStr(nDEB, a, strFIN) b = Mid$(a, nDEB + Len(strDEB), nFIN - nDEB - Len(strDEB)) Next j
J'ai cependant une petite idée derrière la tête sur la cause réelle (qui serait légèrement ailleurs) et vais faire un autre test après dîner.
J'ai un vague souvenir que dans les (très) anciennes versions de VB il fallait déclarer les variables avec un $ pour lui dire que c'est une chaîne de caractères, mais bon... ça remonte.
pour compléter la conclusion finale de ucfoutu, une fois que la variable a été définie comme du type string, la conversion n'a lieu qu'une seule fois.