les variables vba

D

dIDIER 2

Guest
bonjour le forum

J'ai un petit probleme dans ma plantation,
les formules xl ne poussent pas ,
j'ai essayé vba ,
mais vba pas poussé....
j'ai un petit probleme dans ma plantation
les variable ne poussent pas,
j'ai essayé Dim
mais Dim pas poussé

a completer

.........................!!!!!!!!!!!!!!!!!!!!!!!!!

Tréve de plaisanterie pour un question serieuse :
A quoi cela sert-il de déclarer les variables en vba puisque de toutes façon elle sont reconnu automatiquement ?

Merci

cordialement
Didier2
 
V

Valérie

Guest
Slt Didier2,

Tout d'abord merci pour ta chanson!!

Lorsque tu déclares ta variable tu détermines aussi
son type : ce que tu vas y mettre dedans (date, texte, nombre mais aussi cellules, feuilles...) ce qui permet de ne pas réserver de la place unutile car chaque type aura une place bien définie,
sa portée (oh hisse...) en 2 mots sa durée de vie et son lieu de vie,

Si tu ne la déclares pas elle sera par défaut de type VARIANT et n'aura de portée que ta procédure (temps et espace)

Ce ne sont que des généralités mais j'espère que cela t'aidera un peu..

Bonne Journée
Valérie
 
@

@+Thierry

Guest
VBA Variables => Tableau des Différents Types de Déclaration

Salut Didier et le Forum

Si tu ne déclares pas tes variables... C'est simple elles sont toutes reconnues automatiquement "As Variant" qui est une sorte de "fourre tout" pour tout type de données.... Selon le type de Données c'est du gaspillage d'espace mémoire... Et tu fais travailler ton PC pour rien...

Exemple

Sub Toto_Gourmand ()
Dim i
Dim N

i = 25

For N = 1 to 25
DoSomething...
Cells(i, 0) = Something
i = i + 1
Next N

Ton i et ton N vont être considérés "As Variant" et vont occuper chacun 16 bytes en mémoire soit 32 Bytes...
Alors que dans ce dans ce cas une déclaration "As Byte" aurait amplement suffit... :

Dim i As Byte
Dim N As Byte
et ton i et ton N occupent chacun 1 byte donc 2 Bytes au total...

Sur un macro comme çà, ceci n'a pas vraiment d'incidence persceptible à l'usage... Mais sur des Variables Publics résidentes tout au long de l'ouverture du classeur c'est Primordial !! Surtout si il y en a plusieurs !

Ci-joint un PDF avec un tableau de toutes les Variables, leur Taille et leur Couverture (où tu verras bien que Byte peut convenir dans ce cas là puisque une Variable de ce type peut "Couvrir" des valeurs numériques entières de 0 à 255...)

Sorry that doc is in English... Mais il existe en Français dans l'aide VBA mais il faut chercher...

Bonne Journée Didier et bonne découverte
Ici Beau Temps, quoique qu'un peu Variable à l'horizon !!

@+Thierry
 

Pièces jointes

  • Variable.zip
    5 KB · Affichages: 73
  • Variable.zip
    5 KB · Affichages: 70
  • Variable.zip
    5 KB · Affichages: 70
@

@+Thierry

Guest
VBA Variables => Portée : Différents Types d'emplacement de Déclaration

Oups Bonjour Valérie,

Je ne t'avais encore point vue pendant la rédaction de mon Post...
Oui nous sommes dacodac...
J'ai voulu être détaillé pour Didier qui souhaite toujours avoir plein d'explication...(je ne l'en blame pas, c'est bien de vouloir apprendre)

Donc je pense que pour la partie Type c'est détaillé ...

Comme tu parles de Portée... Pour Didier il faut comprendre où est-ce que tu fais la déclaration...

Voici "grosso modo" les bases de base... (on peut faire plus mais pour un début c'est déjà pas mal)

Dans une Sub...:
Sub Toto ()
Dim i as Byte
Dim N as Byte
... La Macro se met à chanter lol....
End Sub
Elles ne vivront que dans cette Sub....


En haut du module en Dehors de la Sub
Dim i as Byte
Sub Toto ()
Dim N as Byte
... La Macro chanson du Second refrain lol !!...
End Sub
Ton "i", une fois initialisé, est récupérable dans tous les Macros du même module

Et enfin dans un Module Standard toujours tout en haut...
Public i as Byte
Ton "i" une fois qui l'aura été initialisé par une macro.... Restera disponible à toutes les Macro du projets et tous les Controls ActiveX...

Voilà pour le deuxième chapitre Variable / Mode d'Emploi...

PS qu'en j'emploie le terme "initialiser" une variable , c'est donc après l'avoir "Déclarée" il faut lui donner une valeur...
i = 25 est donc l'initialisation...

Variable, vous avez dit variable... Comme c'est bizarre !! (lol)
Have a nice day
@+Thierry
 
D

dIDIER 2

Guest
Un grand merci pour vos réponses qui se completent, et mon permis de me faire une opinion un peu plus précise sur le sujet.

pour résumé:
on peut déclarer une variable pour pouvoir l'utiliser dans plusieurs macro (en dehor des sub) mais dans le même module. En fait on ecrit les macro sur un seul et même module et on ne déclare qu'une fois les variables qui feront réferences a ces macro .

On déclare les variables pour un gain de place mémoire et pour permetre au applications de tourner plus vite

On déclare les variables pour connaitres les données qui peuvent ce ratacher a celle la......numérique.....alphabetique.......alpha numerique.....négatif positif.....valeur absolue etc

Ai je bien compris ?



j'ai d'autre questions en perspective
a bientôt

sur le forum

cordialement
Didier
 
@

@+Thierry

Guest
Re Didier,

Je te corrige vite fait pour que tu ne t'orientes pas sur de mauvaises bases (je fais vite car j'ai du taff à finir) :

NON => "En fait on ecrit les macro sur un seul et même module"
On peut (et on doit, selon les cas) écrire les macros dans des modules Différents
Exemple les Private Modules avec des Macro évènementielles!
D'où l'intérêt des "Public" variables comme décrites dans mon post précédent...

NON => "On déclare les variables pour connaitres les données qui peuvent se rattacher à celle là"
On doit connaître avant le type de données que le veut renvoyer dans la variable en question... L'inverse provoque une erreur, où alors il faut jouer au Loto plus souvent !!!

Voilà Didier, pour ne pas faire fausse route dès le départ.

Bon fin de journée
@+Thierry
 
M

Malte

Guest
demande aide

salut, je sui un étudiant de 16 ans, et je débute en excel. Je dois faire une macro et je sais tout juste ce que c'est. Je voudrais savoir comment faire une macro. tout ce que j'ai trouver sur le net, c'est des truc payants à télécharger, mais y a-t-il pas un site où je pourrais trouver des cours sans payer ni télécharger? Merci de m'aider
 
B

bapman

Guest
Re: demande aide

Je ne suis en rien un expert d'excel mais si tu veux faire une macro affiche tout d'abord sa barre d'outil. Ensuite lorsque tu veux réaliser une suite d'opération appuis sur enregistrer et effectue des opérations les unes a la suite des autres. Pour terminer l'enregistrement de la macro tu n'as plus qu'a cliquer sur fin de l'enrgistrement. Voila.
Souvent on souhaite que les macro s'effectue apres un click sur un bouton. Pour cela il faut creer un bouton puis associer la macro qu'on souhaite qu'il execute.
 
R

Raf

Guest
Variables tableau dans Excel...

Salut vous autres.

Je debute dans la programmation de macros sous excel, et j ai qq connaissance en algorithmie, mais ca ne m aide pas vraiment...

Exemple, dans une de mes macros je desire utiliser une variable tableau afin de recuperer chacun des element par l intermediare d une boucle for (L indice d incrementation "i" de la boucle me permet de recuperer l element "i" du tableau. Jusque la ca va je m en sors. Mais, car il z a toujours un mais, Excel semble ne pas aimer du tout ce type de variable. J ai essaye de declarer tant bien que mal ma variable de cette facon:

Dim Mom_Tab(10) 'par exemple,

mais lorsque que je veux assigner une constante tableau en utilisant la fonction array:

Mon_Tab = array(1,2,...,9,10)

Eh ben y veut pas!!!! Si je ne le declare pas, mais il en resulte un nombre incalculable de bug, et meme lorsque ca marche impossible de predire avec precision ce qui va se passer!!!!

Alors please, si qq un voit de quoi je parle et si il a une idee faites moi signe!!!!

Tcho

Raph, le paume en info...
 
M

Michel_M

Guest
Bonsoir à tous,

Pour apprendre VBA les sites gratuits ne manquent pas; le meilleur pour moi reste www.info-3000.com...

En bas de ce forum notre webmestre David a installé des liens dont "se former"

Bonne soirée
Michel
 

Statistiques des forums

Discussions
312 309
Messages
2 087 106
Membres
103 469
dernier inscrit
Thibz