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 :

Créer des noms de variables


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
    Inscrit en
    Mars 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 57
    Par défaut Créer des noms de variables
    Bonjour à tous,

    je suis en train d'optimiser la gestion des raccourcis d'une petite application réalisée sous Excel/VBA.

    C'est simple, lorsque l'utilisateur appuie sur CTRL + touche du pavé numérique de 0 --> 9, le n° correspondant à la courbe s'affiche ou non dans un graphique.

    Ctrl + 1 => courbe n°1 affichée ou désactivée.

    Pour alléger mon code je voudrais passer en paramètre le n° de courbe/touche appuyé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dans THIS WORKBOOK / OPEN
    Application.OnKey "^{96}", "ctrl_pavenum(0)"
    Application.OnKey "^{97}", "ctrl_pavenum(1)"
    Application.OnKey "^{98}", "ctrl_pavenum(2)"
    Application.OnKey "^{99}", "ctrl_pavenum(3)"
    ...
    Application.OnKey "^{106}", "ctrl_pavenum(9)"
    Dans mon module :
    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
    20
     
    Public Sub ctrl_pavenum(lng) ' Paramètre passé : lng
     
    Select Case lng
        Case 0: val_bool_chk = Feuil2.chk_s0.Value
        Case 1: val_bool_chk = Feuil2.chk_s1.Value
        Case 2: val_bool_chk = Feuil2.chk_s2.Value
        Case 3: val_bool_chk = Feuil2.chk_s3.Value
        Case 4: val_bool_chk = Feuil2.chk_s4.Value
        Case 5: val_bool_chk = Feuil2.chk_s5.Value
        Case 6: val_bool_chk = Feuil2.chk_s6.Value
        Case 7: val_bool_chk = Feuil2.chk_s7.Value
        Case 8: val_bool_chk = Feuil2.chk_s8.Value
        Case 9: val_bool_chk = Feuil2.chk_s9.Value
    End Select
     
    Select Case val_bool_chk
        Case True: val_bool_chk = False
        Case False: val_bool_chk = True
    End Select
    Cependant, celà ne fonctionne pas car j'obtiens le message "Impossible de trouver la macro 'ctrl_pavenum(1)'. Peut-être est-ce tout simplement pas possible ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 29
    Par défaut
    Hello,

    Je n'ai pas regardé le code, mais ne manquerait-il pas :


    A placer à la fin.

  3. #3
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Les codes pour 0 a 9 ne sont-ils pas ceux-ci

    48 0
    49 1
    50 2
    51 3
    52 4
    53 5
    54 6
    55 7
    56 8
    57 9


    Pour le moment, je n'arrive pas a passer le paramètre à la fonction.
    En attendant, j'ai essayé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Workbook_Open()
    Application.OnKey "^{48}", "ctrl_pavenum"
    Application.OnKey "^{49}", "ctrl_pavenum"
    Application.OnKey "^{50}", "ctrl_pavenum"
    Application.OnKey "^{51}", "ctrl_pavenum"
     
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub ctrl_pavenum()
     
      MsgBox "c'est ca"
     
    End Sub
    Il reste donc a passer le paramètre, je regarde et je reviens.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 57
    Par défaut
    Bonjour aalex_38, effectivement j'ai oublié de copier le End Sub dans le message, mais il est bien dans mon code. Donc le soucis, n'est pas à ce niveau là.

  5. #5
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    As-tu vraiment lu mon message ?

    Bon toujours pas de paramètre mais une solution de contournement :

    Pourquoi ne pas faire une macro par touche CTRL

    Avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Workbook_Open()
    Dim j As Integer
     
    For I = 0 To 9
        j = 48 + I
        Application.OnKey "^{" & j & "}", "ctrl_pavenum" & I
    Next
    End Sub
    Et dans ton module, les macros correspondantes :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub ctrl_pavenum0()
    MsgBox "ca marche"
    End Sub
     
    Sub ctrl_pavenum1()
    MsgBox "ca marche aussi"
    End Sub
    .
    .
    .

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 57
    Par défaut
    Bonjour aalex_38, effectivement je n'avais pas vu que tu n'étais pas l'auteur de la première réponse ;-)

    J'ai adopté le code que tu as proposé, ce qui me fait l'économie de plusieurs lignes, merci. J'aurais vraiment souhaité passé des paramètres à la procédure, mais visiblement ce n'est pas possible ?

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 02/04/2007, 09h56
  2. Créer des noms de variables dynamiquement avec JSP
    Par Zakapatul dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 26/02/2007, 14h24
  3. [Stratégie] Générer des noms de variables
    Par Rekiem dans le forum Général Java
    Réponses: 31
    Dernier message: 09/01/2006, 10h23
  4. [Convention]Préfixage des noms de variables
    Par javaSudOuest dans le forum Langage
    Réponses: 5
    Dernier message: 18/11/2005, 15h52
  5. Generer des noms de variables avec une boucle
    Par moutanakid dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 28/07/2004, 17h45

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