La caractère $

Résolu
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 - 15 août 2007 à 19:50
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 - 16 août 2007 à 08:54
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

mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
15 août 2007 à 20:08
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>
3
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
15 août 2007 à 20: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>
3
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
15 août 2007 à 20:41
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
3
Kristof_Koder Messages postés 918 Date d'inscription vendredi 3 août 2007 Statut Membre Dernière intervention 27 octobre 2008 10
16 août 2007 à 08:54
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 !
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
vbnino Messages postés 218 Date d'inscription jeudi 13 juillet 2006 Statut Membre Dernière intervention 11 juillet 2010
15 août 2007 à 19:59
Salut!

 -Je crois qu'avec $ et plus rapide que sans.
0
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
15 août 2007 à 20:06
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>
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
15 août 2007 à 20:16
Bien joué Mortalino Je vais renoncer à te ramener à Fox River !
0
cs_Chatbour Messages postés 764 Date d'inscription jeudi 27 juillet 2006 Statut Membre Dernière intervention 6 septembre 2010 19
15 août 2007 à 20:50
Merci pour l'explication Casy
0
Rejoignez-nous