IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

trop de Variables globales donc enums ou autre


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti

    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 36
    Par défaut trop de Variables globales donc enums ou autre
    Bonjour,

    je suis en train de créer un fichier qui gère des commandes.
    chaque commande est sur un onglet et on peut générer un onglet bilan pour récapituler toutes ces commandes (et plein d'autres trucs ... je rentre pas dans les détails)

    mon classeur fonctionne mais je voudrais rendre mon code plus propre afin de pouvoir, par exemple, modifier la position d'un champ en ne modifiant qu'une variable et non partout dans le code ... genre, faire des variables globales ...

    seulement, j'ai beaucoup de champ à mémoriser ...

    par exemple, j'ai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    champ_bilan_total_commandes = Worksheets("BILAN").Range("B4")
    champ_bilan_date = Worksheets("BILAN").Range("B3")
    ...
    J'ai pensé une énumération, mais ça ne prend pas les Range (erreur compilation)

    et je trouve bizarre de faire des getChamp... ou des setChamp... pour tout ...

    vous auriez une idée ou une piste que je pourrai suivre ???

    Merci par avance...

    ...Milie...

  2. #2
    Membre émérite
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Par défaut
    Bonjour à tous
    Bonjour mimi

    Je ne sais pas si j'ai bien compris, mais une idée :

    Faire référence à une cellule nommée dans une feuille, dans laquelle il serait saisie "BILAN" par exemple, mais si j'ai bien compris....

    Eric

  3. #3
    Membre averti

    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 36
    Par défaut
    merci edelweisseric

    mon classeur contient avant toute modification un onglet avec la commande du client principal, et à partir de celui-ci je peut créer un bilan ou d'autres commandes annexes. la mise en page de ces annexes se base sur des champs de la commande principale (champ nom client principal, champs en-tête de commande, ...) et le bilan va chercher des infos dans chaque commande (principale ou annexe).

    si je référence tout, mon problème sera le même, il faudrait savoir quelle cellule contient la référence qui m'intéresse ...

  4. #4
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    si tu veux enumerer les cellules dans une plage tu dois faire comme ceci

    a peu de chose pres!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    dim C as range
    dim Plage as range
     
    set plage=range("B3:C10")
    for each c in plage
        debug.print c.address
    next c

  5. #5
    Membre averti

    Profil pro
    Étudiant
    Inscrit en
    Mai 2006
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2006
    Messages : 36
    Par défaut
    en fait je voudrais pouvoir faire toutes mes fonctions de cette façon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    'pour toutes les feuilles de nbFeuilles I_NB_FEUIL_FIXES, on ajoute le total au total de toutes les commandes
            Do Until i = NB_FEUIL_FIXES
                If Worksheets(i).Name <> "Cadeaux" Then
                    CHAMP_TOTAL_ATELIER.Value = CHAMP_TOTAL_ATELIER.Value _
                        + Worksheets(i).Range(CHAMP_TOTAL_CMDE).Value
                End If
                i = i - 1
            Loop
    mais comment definir CHAMP_TOTAL_ATELIER ??? c'est de type range mais je vois pas trop comment faire...

  6. #6
    Membre Expert Avatar de mayekeul
    Inscrit en
    Août 2005
    Messages
    1 369
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 1 369
    Par défaut
    bonjour,

    de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DIM CHAMP_TOTAL_ATELIER as range
    ...
    SET CHAMP_TOTAL_ATELIER = RANGE("A1")
    ...

Discussions similaires

  1. Réponses: 7
    Dernier message: 14/05/2009, 16h22
  2. [PHP 5.0] appel d'une variable global dans un autre fichier à partir d'une classe
    Par andry.aime dans le forum Langage
    Réponses: 1
    Dernier message: 13/01/2009, 09h31
  3. Variable globale d'une feuille à l'autre
    Par gazavous dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 09/10/2008, 13h24
  4. passer des variables globales d'un form a un autre
    Par Zenerox dans le forum Général VBA
    Réponses: 2
    Dernier message: 07/02/2008, 12h34
  5. Réponses: 4
    Dernier message: 14/05/2007, 13h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo