Les "variables" , C'est quoi???

  • Initiateur de la discussion Jean-Michel
  • Date de début
J

Jean-Michel

Guest
Bonjour le forum,

Je recherche des informations sur "les variables".

Concrètement c'est quoi??? et à quoi ça sert, si ce n'est à troubler mon esprit. lol.

Explications avec des mots pour novice svp.

Dans les codes vba on voit quelques fois des explications déposées par des "pros" pour des "pros" du VBA sur les variables et pour moi c'est extremement flou dans un monde embrumer.
Avec un peu de concret peut-être que je pourrai saisir à quoi ça sert et comment ça marche.( enfin j'espère )

Merci par avance à qui se risquera pour m'expliquer ce qui est pour vous du langage courrant!!!

Salutations
Jean-Michel
 
M

michel

Guest
bonjour Jean Michel

Je ne suis pas un spécialiste de ce sujet et la pedagogie n'est pas la premiere de mes qualités , mais j'espere tout de meme que les informations ci dessous pourront t'aider .


Les variables servent à enregistrer temporairement des données dans une macro .
par exemple affecter un texte (coucou le forum xld ! ) à une variable(MaVariable) , et l'afficher dans un Msgbox
Option Explicit
Sub AfficherMessage()
Dim MaVariable As String
MaVariable = "coucou le forum xld ! "
MsgBox MaVariable
End Sub

Ces données peuvent etre modifiées en cours d'execution de la macro .
par exemple affecter un nombre à une variable , l'afficher dans une Msgbox , ajouter la valeur de la cellule A1 à cette variable , puis afficher le nouveau resultat
Sub AfficherValeur()
Dim MaVariable As Integer
MaVariable = 10
MsgBox MaVariable
MaVariable = 10 + Range("A1")
MsgBox MaVariable
End Sub

Une variable possede :
un nom qui permet d'acceder aux donnees qu'elle contient :"MaVariable"
et un type de données qu'elle contient : String et Integer dans les exemples ci dessus
Le type de données doit etre défini en fonction de la valeur prise par la variable .
Chaque type de donnée utilise un espace mémoire ( de 1 octet pour les types de données Byte jusqu'à 22 octets et plus , pour les types de données Variant . Il est donc important de définir le bon type de données pour libérer de l'espace mémoire et ne pas ralentir inutilement le traitement de la macro .


Les types de données ( informations issues de l'aide en ligne Excel )

Byte :
utilisé pour stocker des nombres entiers positifs compris entre 0 et 255.
Les variables de type Byte sont stockées sous la forme de nombres uniques codés sur 8 bits (1 octet), sans signe .

Boolean :
données pouvant prendre exclusivement les valeurs True (-1) et False (0).
Les variables Boolean sont stockées sous la forme de nombres codés sur 16 bits (2 octets).

Integer :
données contenant des nombres entiers stockés sous forme d'entiers de 2 octets compris entre -32 768 et 32 767.
Le type de données Integer permet également de représenter des valeurs énumérées. Dans Visual Basic, le signe % est le caractère de déclaration du type Integer .

Long :
Nombre entier codé sur 4 octets(32 bits) et dont la valeur est comprise entre -2 147 483 648 et 2 147 483 647.
Dans Visual Basic, le signe et commercial (&) est le caractère de déclaration du type Long.

Currency :
données stockées sous la forme de nombres de 64 bits (8 octets) au format entier, dont la plage de valeurs s'étend de -922 337 203 685 477,5808 à 922 337 203 685 477,5807.
Ce type de données est utilisé dans les calculs monétaires ou dans les calculs à virgule fixe pour lesquels une grande précision est requise. Le signe @ est le caractère de déclaration du type Currency.

Single :
Type de données qui regroupe des variables à virgule flottante en simple précision
sous forme de nombres à virgule flottante codés sur 32 bits (4 octets),dont la valeur est comprise entre -3,402823E38 et -1,401298E-45 pour les valeurs négatives ,et entre 1,401298E-45 et 3,402823E38 pour les valeurs positives.
Dans Visual Basic, le point d'exclamation (!) est le caractère de déclaration du type Single.

Double :
Type de données stockant sur 64 bits les nombres à virgule flottante en double précision compris entre -1,79769313486231E308 et -4,94065645841247E-324 pour les valeurs négatives, et entre 4,94065645841247E-324 et 1,79769313486232E308 pour les valeurs positives.
Dans Visual Basic, le signe dièse (#) est le caractère de déclaration du type Double.

Date :
Type de données utilisé pour stocker les dates et les heures sous la forme d'un nombre réel codé sur 64 bits (8 octets). La partie située à gauche du séparateur décimal représente la date, et la partie droite l'heure.

String :
Type de données composé d'une séquence de caractères contigus interprétés en tant que caractères et non en tant que valeurs numériques.
Une donnée de type String peut inclure lettres, nombres, espaces et signes de ponctuation.
Le type de données String peut stocker des chaînes de longueur fixe dont la longueur est comprise entre 0 et environ 63 Ko de caractères et des chaînes dynamiques dont la longueur est comprise entre 0 et environ 2 milliards de caractères.
Dans Visual Basic, le signe dollar ($) est le caractère de déclaration du type String.

Object :
Type de données représentant toute référence Object. Les variables Object sont stockées sous forme d'adresses codées sur 32 bits (4 octets) faisant référence à des objets.

Variant :
Type de données particulier pouvant contenir des données numériques, des chaînes ou des dates, des types définis par l'utilisateur ainsi que les valeurs spéciales Empty et Null.
Le type de données Variant est doté d'une taille de stockage numérique de 16 octets et peut contenir la même plage de données que le type Decimal, ou d'une taille de stockage de caractère de 22 octets (plus la longueur de la chaîne) ; dans ce dernier cas, il peut stocker tout texte.



IMPORTANT :
Toutes les variables sont converties en type Variant si aucun autre type de données n'est explicitement déclaré.


TRES IMPORTANT :
En cas de déclaration de plusieurs variables avec le meme Dim , il faut indiquer le type de donnee pour chaque variable .
Si pour definir les variables Xld1 , Xld2 et Xld3 vous écrivez par exemple :
Dim Xld1 , Xld2 , Xld3 As String
Dans ce cas Xld1 et Xld2 seront de type Variant . Pour y remédier Il faut écrire :
Dim Xld1 As String , Xld2 As String , Xld3 As String



Option Explicit

Inserez l'instruction Option Explicit en tout début de procédure .
Grâce à cette instruction, vous aurez un message d’erreur pour toute variable non définie, ou mal orthographiée.
Il est conseillé d'avoir une majuscule dans la variable déclarée : Ensuite lors de la saisie de la variable dans la macro , celle-ci reprendra automatiquement la majuscule : cela permet de vérifier les fautes d'orthographe éventuelles .
Pour qu'Option Explicit s'insère automatiquement dans chaque nouveau classeur :
Aller dans visual Basic Editor
Menu Outils
Options
Dans l'onglet Editeur , cocher l'option "Déclaration Explicite des variables"



Les niveaux de variables

Une Variable déclarée à l'interieur d'une macro ne sera utilisable qu'à l'interieur de celle-ci :
Sub Test()
Dim Xld As String
Xld= "Coucou ! "
Msgbox Xld
End Sub

Pour que la variable soit utilisable dans toutes macros du module ,
celle-ci doit etre déclaréee avant le Sub :
Dim Xld As String
Sub Test()

End Sub

Pour que la variable soit utilisable pour toutes les macros du projet il faut utiliser l'instruction Public :
Public Xld As String
Sub Test()

End Sub



Les fonctions de conversion de types de données

CBool(expression)
CByte(expression)
CCur(expression)
CDate(expression)
CDbl(expression)
CDec(expression)
CInt(expression)
CLng(expression)
CSng(expression)
CStr(expression)
CVar(expression)
Consulter l'aide en ligne Excel pour obtenir plus d'informations sur chacune de ces fonctions .


tu peux retrouver ces informations en suivant le lien ci dessous :
Wiki Page 3
( il faut relancer deux fois le lien pour aceder à la page )


bonne journée
michel
 
J

Jean-Michel

Guest
Salut Michel, Le forum,

Wahou, c'est super,

Merci pour ce message dépouvu de confusion.

Tu me parles à un endroit dans ton message d'un lien "aide de excel en ligne".

Comment dois-je faire pour m'y rendre????

Salutations et merci encore.

Jean-Michel
 
M

Michel_M

Guest
Bonjour Jean Michel, Michel et...le forum des Michel

Félicitations à toi, Michel, pour tes explications exhaustives sur les variables

Je me permets de venir dans ce fil pour signaler à Jean Michel qu'il existe un site, suisse(...), super pédagogique ( à mon avis, bien sûr):
www.info-3000.com

Quant à l'aide en ligne, quand tu es dans VBE, tu cliques sur F1 ou sur l'outil "point d'interrogation" et tu écris le nom de ce que tu cherches à éclaircir.

Bon dimanche
Michel
 
J

Jean-Michel

Guest
Salut Michel, Michel et les autres bien sure,

Super ce site suisse,
et pour un suisse qui habite en suisse et en plus à Genève, lieu du site en question, je suis un peu honteux de ne pas l'avoir déjà découvert.
Quelques fois on cherche des choses que l'on a à côté de soi. lol

En fait ça ne fait pas trés longtemps que j'essaie de comprendre un peu le fonctionnement complexe du VBA. Je suis un peu novice et je "rame" beaucoup.

Sincères remerciements pour l'info

bon week

Jean-Michel
 
M

Michel_M

Guest
Re,

Magie ou hasard du net mondial!

Une fois ca m'est arrivé de discuter sur un autre forum avec un gars habitant 2 étages au dessus de mon clapier....

maintenant je monte les étages pour discuter avec lui.

Amicalement
Michel
 
C

chris

Guest
Bonjour
Juste un petit grain de sel après la brillante explication de Michel :
Dans Excel on manipule des variables sans le savoir comme M. Jourdain et la prose : quand dans une formule tu utilises A2 au lieu de son contenu, on peut considérer qu'A2 est le nom de la variable qui contient une valeur (ou formule).
En VBA tu n'as pas de petites cellules toutes prêtes donc tu les fariques à travers la notion de variable puis tu t'en sers comme tu te sert du contenu des cellules pour aboutir à toutes sortes de calculs ou autres.
Bon Dimanche à tous.

Chris
 
M

Marie

Guest
Bonjour à tous,

Après lecture de ces supers explications, j'ai un souci par rapport à plusieurs (2 variables de types strings et une de type integer)
C'est pas évident à expliquer, voici mes lignes de codes:
***************************************************
Sub test()

Dim cpt As String, onglet As String
Dim ligne6, cptariba As Integer

Cptariba = 10

cpt = "cpt"
onglet = "ariba"


ligne6 = CInt(cpt + onglet)
'et je souhaite que ligne6 soit égal à 10 ! mais ça ne fonctionne pas
il prend et me renvoi la chaine "cptariba" au lieu de 10.

End Sub
*************************************************
Si vous avez une idée, cela me permettra de paramétrer ma variable
onglet pour n'avoir qu'une boucle quelque soit son nom.


J'espère que c'est réalisable, si vous pouvez m'aider, j'ai cherché
dans les forums et aucune astuce possible.

MERCI, Marie
 
L

LaurentTBT

Guest
Bonjour, Marie, les *Michel*, Chris, et tout le forum

Si je comprends bien, Marie, tu voudrais que le nom d'une variable soit lui même variable! Non, je ne pense pas que cela soit possible. Enfin, j'ai peut-être pas tout compris!

Tes variables Cpt et Onglet sont de type string, donc (Cpt + onglet) est aussi un string, sois ici "Cptariba" (NB: tu peux mettre Cpt & Onglet , plutôt que le +, pour concatener 2 chaînes de caractères)

Mais pour vba, "Cptariba", en tant que string, n'a rien à voir avec Cptariba, ta variable de type integer qui contient 10.

En fait, Cint( cpt + ariba) signifie, pour VBA: Cint("Cptariba"), ce qui est différent de Cint(cptariba) sans guillemets qui lui, signifie Cint(10).
On ne peut pas demander à VBA, à ma connaissance, de rapporter le contenu d'une variable dont le nom serait lui-même contenu dans une autre variable.

Maintenant, il doit y avoir moyen de faire autrement dans ton cas. Mais il faudrait savoir pourquoi tu veux passer par ces variables cpt et ariba intermédiaires, et pourquoi tu ne peux pas mettre directement Cint(cptariba).

Un petit détail, mais quand tu écris:
Dim ligne6, cptariba As Integer,
ligne 6 est de type variant. On s'est tous fait avoir, mais VBA permet de ne pas répèter le mot Dim. En revanche, le type de variable doit être lui répèté pour chacune des définitions de variables, donc, si tu veux que ligne6 soit aussi de type integer, il faut mettre:
Dim ligne6 As Integer, cptariba As Integer


Bon courage.

Laurent.
 

Discussions similaires

Statistiques des forums

Discussions
312 502
Messages
2 089 047
Membres
104 011
dernier inscrit
dfr