Soyez le premier à donner votre avis sur cette source.
Snippet vu 10 737 fois - Téléchargée 68 fois
'La fonction Val arrête la lecture de la chaîne au premier caractère ne faisant apparemment 'pas partie d'un nombre. Les symboles et caractères fréquemment associés aux valeurs numériques, 'comme le signe $ et les virgules ne sont pas reconnus. En revanche, la fonction reconnaît les 'préfixes &O (pour octal) et &H (pour hexadécimal). Les espaces, les tabulations et les 'caractères de saut de ligne ne sont pas pris en compte dans l'argument. 'Dans l'exemple suivant, la fonction renvoie la valeur 161517 : 'Val(" 1615 17e siècle") 'La fonction Valeur ci dessous permet de convertir en nombre des chaines sous la forme 'Valeur(" - 1615.36 e +17 Siecle") = -1615,36E17 'Elle reconnait également le séparateur décimal défini dans le panneau de configuration Public Function Valeur(ByVal Nombre As Variant) As Double Dim NombreNegatif, NombreDefini As Boolean Dim MantisseNegative, MantisseDefinie As Boolean Dim Resultat As String Dim Mantisse As String Dim Chiffre As String Dim Position As Integer Dim SeparateurDecimal As String Dim NombreDecimal As Single If IsNumeric(Nombre) Then Valeur = Nombre: Exit Function If Nombre = "" Then Valeur = 0: Exit Function 'Definition du séparateur décimal défini dans le panneau de configuration NombreDecimal = Val("1.1") SeparateurDecimal = Mid(NombreDecimal, 2, 1) Resultat = "" Mantisse = "" NombreNegatif = False Position = 1 Chiffre = Mid(Nombre, Position, 1) Do While InChaine("0123456789.,-+E " & SeparateurDecimal, Chiffre) Select Case Chiffre Case "." If InChaine(Resultat, SeparateurDecimal) Then Exit Do ElseIf InChaine(Resultat, "E") Then Exit Do Else Resultat = Resultat & SeparateurDecimal End If Case "," If InChaine(Resultat, SeparateurDecimal) Then Exit Do ElseIf InChaine(Resultat, "E") Then Exit Do Else Resultat = Resultat & SeparateurDecimal End If Case "E", "e" If InChaine(Resultat, "E") Then Exit Do Else Resultat = Resultat & "E" MantisseNegative = False MantisseDefinie = False End If Case "+" If InChaine(Resultat, "E") Then If MantisseDefinie Then Exit Do Else If NombreDefini Then Exit Do End If Case "-" If InChaine(Resultat, "E") Then If MantisseDefinie Then Exit Do Else MantisseNegative = Not MantisseNegative End If Else If NombreDefini Then Exit Do Else NombreNegatif = Not NombreNegatif End If End If Case "0" To "9" If InChaine(Resultat, "E") Then MantisseDefinie = True Mantisse = Mantisse & Chiffre Else NombreDefini = True Resultat = Resultat & Chiffre End If End Select If Position = Len(Nombre) Then Exit Do Else Position = Position + 1 Chiffre = Mid(Nombre, Position, 1) End If Loop If Resultat = "" Then Valeur = 0: Exit Function If NombreDefini Then If MantisseDefinie Then If MantisseNegative Then Mantisse = "-" & Mantisse Resultat = Resultat & Mantisse ElseIf InChaine(Resultat, "E") Then Resultat = Left(Resultat, Len(Resultat) - 1) End If If NombreNegatif Then Resultat = "-" & Resultat Valeur = Resultat Else Valeur = 0 End If End Function Public Function InChaine(ByVal ChaineContenante As String, ByVal Chaine As String) _ As Boolean If InStrC(ChaineContenante, Chaine) <> 0 Then InChaine = True Else InChaine = False End If End Function
Erreur 2: 'Public Property Left() As Integer' n'a aucun paramètre et son type de retour ne peut pas être indexé.
Vous n'êtes pas encore membre ?
inscrivez-vous, c'est gratuit et ça prend moins d'une minute !
Les membres obtiennent plus de réponses que les utilisateurs anonymes.
Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.
Le fait d'être membre vous permet d'avoir des options supplémentaires.