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 :

Mise en place d'une constante


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Par défaut Mise en place d'une constante
    Bonjour,

    J'essaie de lancer une macro sur plusieurs onglets. Mon problème, c'est qu'au début de la macro, l'utilisateur doit spécifier la période concernée. Voici le code, je continie avec les explications après:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    Public Sub feuille()
     
    Const Period = InputBox("Saisissez la période à consolider")
     
    On Error Resume Next
    Sheets("MOA").Select
    If Err = 0 Then mise_en_forme
     
    Sheets("MOE").Select
    If Err = 0 Then mise_en_forme
     
    Sheets("Opérations").Select
    If Err = 0 Then mise_en_forme
     
    MsgBox "Terminé", vbInformation
     
    End Sub
    Si je met la inputbox dans la macro mise_en_forme elle va apparaître sur chaque onglet, puis après sur chaque fichier (environ 80). Je souhaite la mettre au début et que dans mon code mise_en_forme, en évoquant Period, la periode remplit la cellule voulue. Mais tel que je l'ai fait ça ne marche pas.
    SVP quelqu'un peut me donner un coup de main?

  2. #2
    Membre émérite

    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Ardèche (Rhône Alpes)

    Informations forums :
    Inscription : Octobre 2006
    Messages : 652
    Par défaut
    Bonjour,

    Délare ta variable public

    public period as...

    a insérer dans un module standard en première ligne au dessus des macros

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Par défaut
    Ca ne marche pas, je ne peux pas déclarer la constante en public...Par contre il me dit qu'il y a une erreur de compilation et qu'une constante est requise...

  4. #4
    Membre éclairé Avatar de marsupilami34
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 576
    Par défaut
    et pourquoi tu ne mettrait pas ta variable constante en parametre de ta procédure mise_en_forme du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    mise_en_forme(Period)

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Par défaut
    NIET, nada, walou Quand je lance le débogage (pas à pas détailllé) ça ne fait rien. En fait, j'ai une solution mais c'est pas terrible...Ca serait d'enregistrer la réponse de l'inputbox dans une cellule du premier fichier à consolider...mais après ça devra faire appel à cette cellule pour les autres fichiers...Je me demande si on ne peut pas "stocker" la réponse à l'intérieur du programme?!?

  6. #6
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Par défaut
    a y est j'ai trouvé! Michel t'avais la bonne intuition! Il faut faire une petite supercherie dont je suis pas sûr que les gars de Microsoft veulent qu'on fasse...
    Donc déclarer mise_en_forme non en tant que sub mais function
    public function mise_en_forme(Period)
    dans le code feuille:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Public Sub feuille()
     
    Dim strPeriod, strJunk As String
     
    strPeriod = InputBox("Saisissez la période à consolider")
     
    On Error Resume Next
    Sheets("MOA").Select
    If Err = 0 Then strJunk = mise_en_forme(strPeriod)
     
    Sheets("MOE").Select
    If Err = 0 Then strJunk = mise_en_forme(strPeriod)
     
    Sheets("Opérations").Select
    If Err = 0 Then strJunk = mise_en_forme(strPeriod)
     
    MsgBox "Terminé", vbInformation
     
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 05/04/2006, 12h43
  2. [Apache] Mise en place d'une page de maintenance
    Par divail dans le forum Apache
    Réponses: 5
    Dernier message: 02/02/2006, 10h58
  3. Réponses: 2
    Dernier message: 06/10/2005, 17h10
  4. Mise en place d'une solution Data Guard 9i R2
    Par user_oracle dans le forum Oracle
    Réponses: 4
    Dernier message: 16/02/2005, 11h12
  5. [VB.NET] Mise en place d'une progress bar
    Par Hoegaarden dans le forum Windows Forms
    Réponses: 14
    Dernier message: 19/10/2004, 10h23

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