La caractère $ [Résolu]

Signaler
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
-
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
-
Salut à tous,

Dans beaucoup de codes, je vois le caractère $ attaché à des fonctions qui surtout manipulent les chaines de caractères (ex: trim&(maChaine)).. à quoi sert-il ?

Et pourquoi le code marche encore quand je le supprime (bon, dans ce que j'ai essayé) ?

Merci d'avance..

8 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
c'est bien ça^^

Function Trim(String)
    Membre de VBA.Strings

Function Trim$(String As String) As String
    Membre de VBA.Strings

@++

<hr width="100%" size="2" />( Nouveau forum : Exclusivement Office & VBA/STRONG>
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Tu peux m'y emmener, mais faut s'accrocher à la poche 
Bonne continuation

@++

<hr width="100%" size="2" />( Nouveau forum : Exclusivement Office & VBA/STRONG>
Messages postés
7741
Date d'inscription
mercredi 1 septembre 2004
Statut
Membre
Dernière intervention
24 septembre 2014
37
Comme le dit Mortalino, c'est un problème de type de variable.

Prennons la fonction Left (pour l'exemple), celle-ci traite des variants représentant des chaines de caractères.
Donc quand tu lui passe une chaine, celle ci est tout d'abords convertie en variant puis passée à la fonction. La fonction fait son traitement (après avoir convertie en string, peut-etre je sais pas comme ça marche en interne) puis renvoie le résultat sous forme de variant (avec donc peut-etre éventuellement une convertion préalable). Ce résultat est converti en string pour etre stocké dans ta variable.

La fonction Left$ fait la même chose mais en traitant directement des chaines, donc pas de convertion au assage du paramètre ni au retour du résultat. Tu gagne déjà ces 2 étapes (après ce qui est fait en interne, idem, je ne sais pas, mais si le traitement est en string tu gagne aussi les 2 conversions internes).

Il faut garder à l'esprit que les traitement des types variants sont toujours plus en VB6, hors le variant est le type par défaut lorsque la variable n'est pas déclaré ou que le type n'est pas spécifé à la déclaration.
C'est pour cela qu'il toujours très important de correctement déclarer les variables.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #    http://aide-office-vba.monforum.com/index.php
Messages postés
918
Date d'inscription
vendredi 3 août 2007
Statut
Membre
Dernière intervention
27 octobre 2008
10
Ceci est donc valable pour toutes les fonctions qui peuvent retourner une string : mid, left,right, command, dir, etc ....
Seule la fonction CStr() n'est pas concernée ! Elle converti en chaine, donc forcément, elle retourne une chaine, pas besoin de $ pour elle !
Par expérience personnelle, après des tests fait sur la fonction left dans une boucle de 10 000 tours, le résultat est franchement impressionnant ! Outre le fait que les conversions string>variant>string prennent du temps, le traitement par VB6 d'une valeur de type variant est bcp plus long qu'une valeur typée !
Messages postés
218
Date d'inscription
jeudi 13 juillet 2006
Statut
Membre
Dernière intervention
11 juillet 2010

Salut!

 -Je crois qu'avec $ et plus rapide que sans.
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut,

c'est pour forcer le type String, sinon il me semble que ça te retourne un variant

@++

<hr width="100%" size="2" />( Nouveau forum : Exclusivement Office & VBA/STRONG>
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
18
Bien joué Mortalino Je vais renoncer à te ramener à Fox River !
Messages postés
764
Date d'inscription
jeudi 27 juillet 2006
Statut
Membre
Dernière intervention
6 septembre 2010
18
Merci pour l'explication Casy