VBA organisation projet

Bonjour au Forum,

Je suis sur un fichier assez important (400Ko avec une vingtaine de macros) et je commence à avoir du mal à m'y retrouvé !

Mes questions sont d'ordre général.

Quelle est la différence entre "Feuille Code" et "Module Code"

Qu'est-ce-que le ThisWorkbook et à quoi çà sert ? ; peut-on y mettre des fonctions ?

Quel est l'intérêt des "PrivateSub" , "Function" plutot que Sub ; quand les employés , et ou

les placés dans le projet ?

Quelles sont les erreurs d'organisation à éviter ?

Enfin, qulques conseils de base seraient les bienvenus.

Cordialement.

Claude.

Bonsoir,

pas mal d'explications à te donner là.

  • MODULE CODE -> doit contenir uniquement des macros SUB ou PUBLIC SUB ou FUNCTION
  • FEUILLE CODE -> contient des macros de type PRIVATE SUB
  • THISWORKBOOK -> permet d'exécuter des macros concernant l'ensemble des feuilles du classeur, des macros à l'ouverture ou la fermeture du classeur.

Tu peux appeler une macro SUB depuis une macro PRIVATE SUB ou l'exécuter par un bouton de commande ou un raccourci clavier.

Les PRIVATE SUB et FUNCTION sont des macros évenementielles qui réagissent sur des actions que tu effectues sur ta feuille.

Les macros de type FUNCTION peuvent remplacer des fonctions excel de type SOMME par exemple et ce, quand elles ne sont pas disponibles dans les fonctions standard. Exemple, faire la somme des couleurs sur une feuille.

Pour ce qui de l'organisation, évite d'avoir des codes trop long ou des codes identiques dans des macros. Exemple si tu dois faire appel à un message d'alerte, fais une macro séparée que tu appelles chaque fois que cela est nécessaire. Même chose si tu dois formater des cellules de la même manière dans plusieurs codes.

Voilà quelques indications mais comme chaque appli est particulière, ce n'est pas évident de te donner un règle stricte à suivre.

Amicalement

Dan

Bonjour à tous,

Dan, merci pour toutes tes explications. C'est bon à savoir.

Je crois que je vais en resté aux "modules" !

car j'ai essayé de mettre dans "ThisWorkbook" les Sub auto_open et Sub auto_close,

mais çà ne marche pas....Peut-tu m'expliquer pourquoi ?

autre question : j'ai des "Dim" qui se répète dans plusieurs macros, faut-il vraiment les

répéter ?

Finalement, avec pas mal de ménage et un peu de bon sens, on arrive à s'y retrouvé.

Amicalement.......Claude.

Re,

1. Les macros auto open et auto close, c'est l'antiquité excel (à éviter!!) et surtout ne pas mettre cela dans THISWORKBOOK puisque tu peux les obtenir directement de la manière décrite ci-après :

  • vas dans VBA puis clique sur THISWORKBOOK
  • A droite tu as une fenêtre avec au dessus deux listes déroulantes (générale et déclarations)
  • dans celle de gauche, choisis THISWORKBOOK
  • dans celle de droite, choisis OPEN

cela te donne ceci dans ta fenêtre ->

Private Sub Workbook_Open()
.... ton code....
End Sub

2. Pour les DIM tu dois les mettre dans chaque macro mais si elles peuvent être utilisées pour plusieurs macros différentes on peut les rendre PUBLIC. Dans ce cas, on déclare la variable avant toutes les macros du module.

ex : DIM Cel as RANGE ou PUBLIC Cel as RANGE

Amicalement

Dan

re,

L'ancêtre c'était auto_ouvrir !!! . Bon j'ai vu, c'est OK

pour les "Dim" ils se répète qu'une fois et dans des modules différents ;je laisse donc

comme çà, mais pour ma gouverne, çà aurait donner quoi dans mon cas ?

Dim DateEntrer As Date
Dim StrDateBrut, StrMois, StrAnnee, strFinal As String

Pour terminer mon fichier il ne manque plus que le code qui vide le presse-papier (annule.copie).

Nota : ce fichier en Excel4 faisait 400Ko , en VBA il pèse 450 Ko. mais enfin je suis

satisfait du résultat . Cà tourne !!

Dernière question :

J' ai un fichier pratiquement identique ; Crois-tu que je puisse copié les codes sans créer

de liaisons ?

Encore merci Dan, et au Forum . J'y vois + clair .

Salutations.

Claude.

Re,

Pour la déclaration de variables. Attention que si tu écris -->

Dim StrDateBrut, StrMois, StrAnnee, strFinal As String

StrDateBrut, StrMois, StrAnnee sont de type VARIANT. Seule strfinal sera STRING.

Si tu veux qu'elles soient de type STRING, ils faut l'indiquer chaque fois.

Code pour vider le presse papier --> APPLICATION.CUTCOPYMODE= FALSE

Si tu copies les codes, il ne doit pas avoir de liaison. Ce n'est pas basé sur le principe du copier-coller une fomule.

Dan

Bonjour,

Merci Dan,

Tu m'a bien aidé sur ce coup là .

à bientôt sur un autre post .

Claude.

Rechercher des sujets similaires à "vba organisation projet"