[VBA] Les variables numeriques

Bonjour le forum,

Je suis relativement debutant sur VBA et je me posais une question pour une meuilleure comprehension du logiciel.

Si on dit qu'une variable est "Long", sa plage sera de - 2 147 483 648 à 2 147 483 647. Si que c'est un "Integrer", elle sera de -32 768 à 32 767.

Pourquoi ne pas mettre toutes les variables numeriques directement en "Long". Est-ce parce que cela demande plus de calculs (et donc de ressources) ?

En vous remerciant par avance

Bonjour,

C'est une ancienne habitude qui a la vie dure... mais il n'y a aucune bonne raison d'utiliser encore des variables de type integer sur les ordinateurs modernes. En effet selon certains auteurs, il semble qu'Excel convertisse automatiquement en interne toutes les variables integer en Long !

Aussi vous pouvez parfaitement décider de n'utiliser que des variables de type Long ce qui vous évitera surement de nombreux messages d'erreurs inutiles...

A+

Bonjour et merci Galopin (cette situation me rappelle quelque chose...)

J'ai une deuxieme question sans grand lien avec la precedente.

En terme d'optimisation de ressources, il faut mieux avoir plusieurs UserForm ou un seul ?

Vaste question ! Ce qui me gêne un peu c'est l'aspect optimisation des ressources.

En général on regarde plutôt le coté pratique de la chose. Les ressources, aujourd'hui les bécanes modernes n'en manquent pas... et un UserForm à des exigences plutôt négligeables. (Quand c'est bien code, et bien optimisé...)

La meilleure méthode est celle qu'on maîtrise le mieux.

La plupart des débutants se jette sur le UserForm comme si c'était le Graal !

Mais un excellent UserForm c'est déjà bien compliqué et un UserForm polyvalent c'est un truc de pro...

On peut considérer que si tu poses la question c'est que plusieurs userForm c'est plus pratique.

Il reste que si plusieurs UserForm doivent interagir entre eux c'est pas non plus simple à gérer...

Je serai donc tenté de répondre que c'est plutôt une question de préférence et de compétence personnelle qui doit guider ton choix.

A+

Les moderateurs vont me taper sur les doigts car je me sers de ce sujet comme un petit fourre tout.

Actuellement je possede un UserForm d'un peu plus de 5 000 lignes de codes, avec une trentaine de fonction dedans. La plupart des ces fonctions agissent sur 3 memes pages.

Je commence donc chaque code par

Dim ws1 as worksheet
Set ws1 = ThisWorkbook.Worksheets("xxxxx")
'...

Je voudrais donc savoir s'il est possible de faire des variables publics (c'est bien comme ca que cela s'appelle ?) pour ne les declarer qu'une fois. Si j'ai correctement compris, on ne peut pas le faire directement sur l'UserForm, il faut passer par un module. Mais ma comprehension s'arrete la.

PS : J'ai commence le code sur VBA il y a environ 2/3 semaines, j'ai donc une connaissance tres superficielle. Mais j'aimerai etudier plus profondement ce langage. Je me sers un epu de ce sujet fourre tout car ca serait un peu idiot d'ouvrir un sujet a chaque fois :/ (a moins qu'il existe deja un sujet fourre tout, dans ce cas, desole)

PPS : Desole pour les accents...

Bonjour,

Il faut voir sur pièce : Il n'y a pas de solution miracle.

La plupart des UserForm sont adaptés à leur propre feuille.

Si le tien est adapté à plusieurs feuille c'est qu'elles sont identiques : C'est donc une erreur de conception initiale car si tu as plusieurs feuille à structures identiques c'est que tu aurais pu tout mettre sur la même feuille...

Mébon on peut très bien imaginer que dans certains cas...

Quoi qu'il en soit on peut quand même imaginer qu'on fasse ce que tu as fait.

Une solution possible est de passer en paramètre à ton Usf le nom de la feuille cible.

Ensuite tu utilises le tag comme une variable publique pour toutes tes proc.

cf exemple joint.

A+

11usfmulticible.xlsm (17.66 Ko)

5000 lignes c'est déjà beaucoup !

Tu devrais peut-être déjà me montrer ton projet (au besoin par mail privé) avant de broder tout un roman.

On ne compte plus les exemples d'optimisation ou les tentatives de codage sur 2000 lignes peuvent se résumer en une vingtaine...

A+

Bonjour galopin,

Je te remercie de t'interesser a mon cas, mais mon fichier est strictement confidentiel.

Sinon, pour le contextualiser un peu, il permet de fabriquer des documents techniques. Si je travaille sur 3 feuilles, c'est parce qu'il y en a une qui sert de Database, une autre qui est temporaire, et une 3eme qui est celle ou se trouve le fichier final (avant d'etre exporte en PDF).

S'il y a autant de lignes, c'est parce qu'il y a beaucoup de commandes differentes dans l'UserForm. De plus, le fichier pouvant changer de main, j'ai explique la plupart des lignes de code.

Je pense que je me suis mal exprime auparavant et tu m'as mal compris.

(Toujours autant desole pour les accents....)

Bonjour,

J'irai dans le même sens que Galopin. J'ai monté de grosses applications Excel et n'ai jamais atteint 5000 lignes de code pour une raison simple car c'est parfaitement ingérable en maintenance.

La conception de ton application est à revoir.

Tu devrais fournir à Galopin un exemple non confidentiel de ton sujet car il saura te recommander une solution beaucoup plus modulaire qui réduira considérablement tes lignes de code.

Merci beaucoup, mais j'ai signe une clause de confidentialite.

Je pourrai modifier en effet le fichier mais meme les documents que je sauvegarde sont confidentiels. Au final, il faudrait que je fasse aussi des modifications dans le code, mais on perdrait l'interet original.

Sinon, sinon enleve les commentaires et les sauts de pages, on doit pouvoir diviser par deux le nombre de lignes de code si ca peut vous rassurer.

bonjour,

Le principal inconvénient de cette logorrhée programmatique est que commenté ou pas ton travail ne sera jamais récupéré par quiconque. Un programmeur sérieux comprendra au premier cou d'oeil que son intérêt est de repartir à zéro !

Je suis aujourd'hui à la retraite, mais je travaillais dans une grande banque nationale pour laquelle j'avais également une obligation de discrétion rigoureuse d'autant que je travaillai sur des sujets ultra sensibles notamment lors du passage à l'Euro...

Ça ne m'a jamais empêché de donner des exemples de ma programmation.

J'ai également travaillé sur de nombreux sujets sensibles (métro, hélico, centrale nucléaire, transport de fond...)

En aucun cas nous n'avons enfreins ce genre d'obligation et pourtant la plupart de ces classeurs se baladent toujours sur internet...

A+

Rechercher des sujets similaires à "vba variables numeriques"