OVH Cloud OVH Cloud

Excel et VBa

5 réponses
Avatar
phil.aline.naudin
Bonsoir,

Juste des Questions sur l'utilisation de VBA dans Excel .
Je m'explique, depuis 3 jours j'ai décidé de découvrir "la langue de VBA
!!!". Je m'aide d'une revue nommée "Compétence_Micro".

Je tourne la page 19 et j'ai déjà des interrogations :

Comment faite vous pour choisir si vos codes seront "Direct" ou "Indirect"
???
Utilisez-vous dans vos codes le numéro de ligne, Style:
10 Sub votre_nom
20 nom= Intput ...
Il ya un petit chapitre sur une commande nommée "Static" que fait-elle
exactement ???

Je vous remercie de me lire et bien-sûr de me répondre

@+

5 réponses

Avatar
JB
Bonjour,

-Il y a bien longtemps que les nos de lignes ne sont plus utilisés en
Basic. En théorie, on peut utiliser des étiquettes ( monEtiq: e.g.
et les référencer avec Goto MonEtiq) . Dans la pratique, on évite de
les utiliser (mauvaise lisibilité du programme).

-Les variables Static conservent leur valeur lorsqu'une procédure par
exemple est appelée plusieurs fois.

Sub essai()
essai2
essai2
End Sub

Sub essai2()
Static m As Integer
m = m + 1
MsgBox m
End Sub

Pour obtenir de l'aide sur un mot clé VBA, le sélectionner puis F1.

sur http://www.excelabo.net , il y a un chapitre d'initiation au VBA.

Cordialement JB
Avatar
Clément Marcotte
Bonjour,

Comment faite vous pour choisir si vos codes seront "Direct" ou "Indirect"
???


Comme je n'ai pas la revue en question, je ne sais pas à quoi ils font
référence.

Utilisez-vous dans vos codes le numéro de ligne, Style:
10 Sub votre_nom
20 nom= Intput ...


Les numéros de lignes sont complètement inutiles en "bonne programmation en
VBA" sauf pour indiquer la place où se trouve le gestionnaire d'erreur.
Encore qu'une étiquette puisse très bien remplacer les chiffres.

Il ya un petit chapitre sur une commande nommée "Static" que fait-elle
exactement ???



Les valeurs des variables sont remises par défaut à zéro entre chaque
exécution d'une procédure. Si une variable est afflubée de l'instruction
Static, la variable en question conserve sa valeur entre deux appels de la
procédure. (À manier avec précautions.)

Avatar
phil.aline.naudin
Merci pour vos réponses,
Pour Direct ou Indirect l'auteur précise que VBA nous donne la possibilité
de déclarer une variable de façon "Direct" ou "Indirect". Il précise par
ailleurs que les vrais Programmeurs n'utilisent que la méthode "Direct".
Elle est moins gourmande, oblige une vraie réflexion avant la saisie du code
sur le robot, ...
Si j'ai bien compris cette façon utilise la commande "DIM"
En espérant être plus clair sur mes interrogations.4

Merci
"Clément Marcotte" a écrit dans le message
de news:
Bonjour,

Comment faite vous pour choisir si vos codes seront "Direct" ou
"Indirect" ???


Comme je n'ai pas la revue en question, je ne sais pas à quoi ils font
référence.

Utilisez-vous dans vos codes le numéro de ligne, Style:
10 Sub votre_nom
20 nom= Intput ...


Les numéros de lignes sont complètement inutiles en "bonne programmation
en VBA" sauf pour indiquer la place où se trouve le gestionnaire d'erreur.
Encore qu'une étiquette puisse très bien remplacer les chiffres.

Il ya un petit chapitre sur une commande nommée "Static" que fait-elle
exactement ???



Les valeurs des variables sont remises par défaut à zéro entre chaque
exécution d'une procédure. Si une variable est afflubée de l'instruction
Static, la variable en question conserve sa valeur entre deux appels de la
procédure. (À manier avec précautions.)








Avatar
Clément Marcotte
Bonjour

O.K.

Pour Direct ou Indirect l'auteur précise que VBA nous donne la possibilité
de déclarer une variable de façon "Direct" ou "Indirect".
L'ensemble de la communauté des programmeurs VB utilisent le expressions

explicite et implicite à la place de ces mots barbares.

Quand une variable est déclarée de façon implicite, elle est créée au moment
de son utilisation. L'avantage, si on peut dire, c'est la souplesse de
programmation. L'inconvénient étant le risque de créer des horreurs
difficiles à dépister, du genre

sien = 15
sein = sien + 1

Au lieu d'avoir une variable sien égale à 16 on se retrouve avec deux
variables différentes, et c'est la mauvaise qui vaut 16. Ceci sans compter
que chaque variable de type Variant bouffe un minimum de 20 octets de
mémoire et ralentit l'exécution du programme.

Si on opte pour la déclaration explicite des variables, le programme va
planter dès qu'il va trouver une variable non déclarée. Cela oblige donc à
décider si cela prend vraiment 2 variables et à déclarer les deux, ou s'il
faut juste corriger l'orthographe...

Il précise par ailleurs que les vrais Programmeurs n'utilisent que la
méthode "Direct". Elle est moins gourmande, oblige une vraie réflexion
avant la saisie du code sur le robot, ...


Ça c'est vrai en partie. Une variable, non explicitement déclarée, prend le
type Variant (minimum de 20 octets), par défaut. Ceci dit, en héritage du
BASIC d'origine, on peut, mais pas dans tous les cas, et même en déclaration
implite, définir le type de données.

Par exemple, sans dim:

jps = 34. (Dans ce cas, jps est de type variant)
jps% = 34 (Dans ce cas jps est de type Integer (nombres entiers seulement)
jps& = 34 (Dans ce cas jps est de type Long (un autre type de nombres
entiers)
jps$ = "Vin" (Dans ce cas jps est une chaîne de caractères)


Mais dans les faits, on peu aussi avoir

dim jps, jps%,jps&,jps$ et les avoir déclarés quand même déclarés
explicitement.

Cela fait donc que l'affirmation du magazine reste un peu de type"Broche à
foin"

Avatar
Clément Marcotte
Voir aussi, pour les types de données:

http://groups.google.com/group/microsoft.public.fr.excel/browse_thread/thread/1fd8bf366f3e976b/3c4705dd64ae3457?lnk=st&q=%22virgule+flottante%22+group%3Amicrosoft.public.fr.excel+author%3Aclement.marcotte%40sympatico.ca&rnum=1&hl=fr#3c4705dd64ae3457


"phil.aline.naudin" a écrit dans le message
de news: 43ee418a$0$29181$
Merci pour vos réponses,
Pour Direct ou Indirect l'auteur précise que VBA nous donne la possibilité
de déclarer une variable de façon "Direct" ou "Indirect". Il précise par
ailleurs que les vrais Programmeurs n'utilisent que la méthode "Direct".
Elle est moins gourmande, oblige une vraie réflexion avant la saisie du
code sur le robot, ...
Si j'ai bien compris cette façon utilise la commande "DIM"
En espérant être plus clair sur mes interrogations.4

Merci
"Clément Marcotte" a écrit dans le message
de news:
Bonjour,

Comment faite vous pour choisir si vos codes seront "Direct" ou
"Indirect" ???


Comme je n'ai pas la revue en question, je ne sais pas à quoi ils font
référence.

Utilisez-vous dans vos codes le numéro de ligne, Style:
10 Sub votre_nom
20 nom= Intput ...


Les numéros de lignes sont complètement inutiles en "bonne programmation
en VBA" sauf pour indiquer la place où se trouve le gestionnaire
d'erreur. Encore qu'une étiquette puisse très bien remplacer les
chiffres.

Il ya un petit chapitre sur une commande nommée "Static" que fait-elle
exactement ???



Les valeurs des variables sont remises par défaut à zéro entre chaque
exécution d'une procédure. Si une variable est afflubée de l'instruction
Static, la variable en question conserve sa valeur entre deux appels de
la procédure. (À manier avec précautions.)