Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Pourquoi ajouter un $ derrière une fonction VBA

Jilde

XLDnaute Occasionnel
Bonjour aux forumeuses zé aux forumeurs !

Bah j'crois que tout est dans l'titre hein ...

En fait voilà, j'ai récupéré du code VBA dans un fichier que je suis en train de décortiquer pour le modifier et le compléter.
Et dans ce code, je trouve plein de dollars "$" !
Y'en a derrière les noms de variables (Champ$, Valeur$) mais aussi derrière des fonctions VBA (Trim$, Left$).

Et j'voudrais bien connaitre leur signification ... Nom de nom !!

Donc si y'en a qui savent ;o) !!

Merci et bonne fin de journée à tous !!
 

Minick

XLDnaute Impliqué
Re : Pourquoi ajouter un $ derrière une fonction VBA

$ est le caractere de declaration d'un String pour une variable
donc
Code:
Dim MaChaine as String
equivaut a
Code:
Dim MaChaine$

Pour les fonctions c'est un peu plus subtil:
Left par exemple retourne un variant de type String
alors que Left$ retourne un String
Ce qui permet de gagner un peu au niveau memoire
 

Jilde

XLDnaute Occasionnel
Re : Pourquoi ajouter un $ derrière une fonction VBA

Merci pour ta rapidité Minick !!

Bon, pour la déclaration de variable, c'est ok, j'ai pigé.

Mais ... pour les fonctions ...
C'est quoi la différence entre "un variant de type String" et un "String" ?

;o)
 

ROGER2327

XLDnaute Barbatruc
Re : Pourquoi ajouter un $ derrière une fonction VBA

Re...
Dans l'aide de VBA, on trouve des choses qu'il serait trop long de recopier ici.
Juste un extrait (Remarques accompagnant l'article Dim, instruction) : C'est un bon début pour comprendre...​
Bon courage !


ROGER2327
#3413


16 Floréal An CCXVIII
2010-W18-3T15:50:34Z
 

Minick

XLDnaute Impliqué
Re : Pourquoi ajouter un $ derrière une fonction VBA

Comme dit plus haut c'est une question de memoire utilisee

Un string occupe 10 octets en memoire + la longueur de la chaine
alors qu'un variant de type string occupe 22 octets en memoire + la longueur de la chaine

Est-ce plus clair?

Mais bon l'interet de distinguer les 2 dans vba n'est pas flagrant, l'auteur
a du l'utiliser par habitude sur d'autres langages
 

Jilde

XLDnaute Occasionnel
Re : Pourquoi ajouter un $ derrière une fonction VBA

Merci à tous pour vos explications !

Je crois avoir mieux saisi le pourquoi du comment du parce que bon ...

Bonne soirée , je m'en vais potasser ça dans le RER ...
 

ROGER2327

XLDnaute Barbatruc
Re : Pourquoi ajouter un $ derrière une fonction VBA

Bonjour Minick
Je suis d'accord avec vous, on ne voit souvent pas grande différence à l'exécution entre une procédure dans laquelle les variables sont typées et une autre où elles ne le sont pas.
Mais je préfère, autant que faire se peut, déclarer et typer strictement les variables : cela oblige à la rigueur et évite des surprises. On est ainsi certain de manipuler des variables dont on sait exactement ce qu'elles représentent. Savoir ce qu'on manipule sans s'en remettre au hasard ou à la chance est un gage de réussite et le temps apparemment perdu dans la conception des procédures se trouve largement compensé par la facilité de détection des erreurs et de la maintenance.

Mais ce n'est qu'une opinion, un point de vue. On peut très bien en avoir d'autres...
ROGER2327
#3414


16 Floréal An CCXVIII
2010-W18-3T16:09:50Z
 

Minick

XLDnaute Impliqué
Re : Pourquoi ajouter un $ derrière une fonction VBA

Bonjour ROGER2327,

Je suis tout a fait d'accord.
Je "type" toujours mes variables (cf les quelques bouts de codes
que j'ai pu commettre ici entre autre)

J'emets juste un doute entre utiliser par exemple Left$ plutot que Left
comme preciser plus haut dans vba.
Dans d'autres langages c'est une autre histoire.

On est bien sur la meme longueur d'onde
 

ROGER2327

XLDnaute Barbatruc
Re : Pourquoi ajouter un $ derrière une fonction VBA

Re...
Parfaitement sur la même longueur d'onde. Et j'ai la même opinion que vous en ce qui concerne Left() et Left$() pour lesquels je n'ai jamais été capable de voir ce qui les distingue. J'en profite pour demander à qui passe par ici de dire s'il voit quelque différence.​
Bonne soirée.
ROGER2327
#3415


16 Floréal An CCXVIII
2010-W18-3T17:04:16Z
 

MJ13

XLDnaute Barbatruc
Re : Pourquoi ajouter un $ derrière une fonction VBA

Bonjour à tous

Vous pouvez toujours tester cette macro:

Code:
Sub test_left()
a = Left("aaaa", 1)
b = Left$("aaaa", 1)
Cells(1, 1) = a
Cells(2, 1) = b
End Sub

Ou faire de la formule1 .
 

ROGER2327

XLDnaute Barbatruc
Re : Pourquoi ajouter un $ derrière une fonction VBA

Re...
Bonjour à tous

Vous pouvez toujours tester cette macro:

Code:
Sub test_left()
a = Left("aaaa", 1)
b = Left$("aaaa", 1)
Cells(1, 1) = a
Cells(2, 1) = b
End Sub

Ou faire de la formule1 .
Bon sang, mais c'est bien sûr ! Votre message fait remonter deux souvenirs à ma vieille cervelle :
  1. Left$() est au moins deux fois plus rapide que Left$() comme le montre ce test :
    Code:
    [COLOR="DarkSlateGray"][B]Sub tata()
    Dim t As Single, i&, y$
       t = Timer
       For i = 1 To 10000000
          y = Left("azertyuiop", 3)
       Next i
       [A1] = Timer - t
       t = Timer
       For i = 1 To 10000000
          y = Left$("azertyuiop", 3)
       Next i
       [A2] = Timer - t
    End Sub[/B][/COLOR]
  2. Comme disait ce cher Georges :
    Quand ils sont tout neufs
    Qu'ils sortent de l'œuf
    Du cocon
    Tous les jeunes blancs-becs
    Prennent les vieux mecs
    Pour des cons
    Quand ils sont d'venus
    Des têtes chenues
    Des grisons
    Tous les vieux fourneaux
    Prennent les jeunots
    Pour des cons
    Moi, qui balance entre deux âges
    J'leur adresse à tous un message

    Refrain
    Le temps ne fait rien à l'affaire
    Quand on est con, on est con
    Qu'on ait vingt ans, qu'on soit grand-père
    Quand on est con, on est con
    Entre vous, plus de controverses
    Cons caducs ou cons débutants
    Petits cons d'la dernière averse
    Vieux cons des neiges d'antan

    Vous, les cons naissants
    Les cons innocents
    Les jeun's cons
    Qui n'le niez pas
    Prenez les papas
    Pour des cons
    Vous, les cons âgés
    Les cons usagés
    Les vieux cons
    Qui, confessez-le
    Prenez les p'tits bleus
    Pour des cons
    Méditez l'impartial message
    D'un type qui balance entre deux âges

    (Refrain)
Merci, MJ13 !​
ROGER2327
#3416


16 Floréal An CCXVIII
2010-W18-3T20:07:06Z
 

MJ13

XLDnaute Barbatruc
Re : Pourquoi ajouter un $ derrière une fonction VBA

Bonjour à tous

Merci Roger, je savais que je pouvais compter sur toi .

Je serais un peu moins c.. ce soir .
 

ROGER2327

XLDnaute Barbatruc
Re : Pourquoi ajouter un $ derrière une fonction VBA

Re...
Bonjour à tous

Merci Roger, je savais que je pouvais compter sur toi .

Je serais un peu moins c.. ce soir .
Eh oui, mon cher, c'est ça l'entraide !
Bon, plaisanterie mise à part, c'est bien votre intervention qui m'a fait me souvenir qu'il y a une vraie différence entre Left() et Left$(). Par conséquent, moi aussi "Je serais un peu moins c.. ce soir".
Du moins je l'espère...
Bonne journée !
ROGER2327
#3423


17 Floréal An CCXVIII
2010-W18-4T10:54:08Z
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…