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 :

variable public depuis bouton option [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Homme Profil pro
    association sportive
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : association sportive

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Points : 6
    Points
    6
    Par défaut variable public depuis bouton option
    Bonjour,
    j'ai créé 4 boutons radios (que je n'ai pas groupés, peut-être le faut-il ?) dans Mafeuille
    les macros commandant chaque bouton se trouve DONC dans VBA projet\microsoft excel objet\feuil1.
    j'ai défini la variable numcolonne comme public, comme vu ci dessous ET en tête de module ( bien à l'extérieur d'une macro )


    Je souhaite en fait que lorsque je clique sur un bouton se trouvant dans feuil1(MAfeuille), la macro se trouvant elle dans un module s'éxécute avec la variable numcolonne.
    2 ème question , comment récupérer la valeur de la cellule se trouvant sur la ligne 3 mais avec un index de colonne variable(numcolonne) ? range(numcolonne & "3")

    code se trouvant dans VBA projet\microsoft excel objet\feuil1 :
    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
    21
    22
    23
    24
    25
    26
    Public numcolonne As Integer
     
    Sub OptionButton1_Click()
    If OptionButton1.Value = True Then  ' l'age choisi est 3-6 ans
          numcolonne = 19
    End If
     
    End Sub
    Private Sub OptionButton2_Click()
    If OptionButton2.Value = True Then  ' l'age choisi est 3-6 ans
          numcolonne = 20
    End If
     
    End Sub
    Private Sub OptionButton3_Click()
    If OptionButton3.Value = True Then  ' l'age choisi est 3-6 ans
          numcolonne = 21
    End If
     
    End Sub
    Private Sub OptionButton4_Click()
    If OptionButton4.Value = True Then  ' l'age choisi est 3-6 ans
          numcolonne = 22
    End If
     
    End Sub
    merci

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par zek474 Voir le message
    Bonjour,

    Pour vous répondre, quel est le code de votre procédure dans le module standard que les clics vont exécuter ?

  3. #3
    Futur Membre du Club
    Homme Profil pro
    association sportive
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : association sportive

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Bonjour,

    Pour vous répondre, quel est le code de votre procédure dans le module standard que les clics vont exécuter ?
    voici, Merci .

    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
    21
    22
    23
     For ligne = 8 To 11
    aliment_A_Chercher = Sheets("GRAMMAGE").Range("H" & ligne).Value
     
        'Critere
    Sheets("données").Range("J3").Value = aliment_A_Chercher
     
                Sheets("données").Select
                Range("A1:G1000").AdvancedFilter _
                         Action:=xlFilterCopy, _
                         CriteriaRange:=Range("H2:N3"), _
                         CopyToRange:=Range("P2:V2"), _
                         Unique:=False
     
               gram = Cells(3, numcolonne).Value
     
     
     
        Sheets("GRAMMAGE").Select
        Sheets("GRAMMAGE").Range("H" & ligne).Offset(0, 1).Select
        Selection.Value = gram
        'ligne = ligne + 1
     
                Next

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par zek474 Voir le message
    Comment s'appelle votre procédure ?

  5. #5
    Futur Membre du Club
    Homme Profil pro
    association sportive
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : association sportive

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Comment s'appelle votre procédure ?

    elle s'appelle grammage.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public numcolonne As Integer
     
    Sub grammage(age)
    Dim gram As Single
    Dim aliment_A_Chercher As String
    Dim Critere As String
     
    Application.ScreenUpdating = False
                For ligne = 8 To 11
    aliment_A_Chercher = Sheets("GRAMMAGE").Range("H" & ligne).Value
     
        'Critere
    Sheets("données").Range("J3").Value = aliment_A_Chercher

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par zek474 Voir le message
    Vous pouvez déjà supprimer la déclaration de numcolonne dans votre module d'onglet (cf ligne 1 de votre code en # 1)

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par zek474 Voir le message
    Dans le module de votre onglet :

    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
     
    Option Explicit
     
     
    Private Sub OptionButton1_Click()
     
        If OptionButton1.Value = True Then Grammage 19  ' l'age choisi est 3-6 ans
     
    End Sub
    Private Sub OptionButton2_Click()
       If OptionButton2.Value = True Then Grammage 20 ' l'age choisi est 3-6 ans
     End Sub
     
    Private Sub OptionButton3_Click()
       If OptionButton3.Value = True Then Grammage 21  ' l'age choisi est 3-6 ans
    End Sub
     
    Private Sub OptionButton4_Click()
       If OptionButton4.Value = True Then Grammage 21  ' l'age choisi est 3-6 ans
    End Sub
    Dans votre module standard :
    Nb : Il n'y a plus de déclaration Publique à faire pour numcolonne, car la valeur est passée par paramètres dans votre procédure Grammage.

    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
     
    Option Explicit
     
    Sub Grammage(ByVal NumColonne As Integer)
     
    Dim Ligne As Integer
    Dim ShGrammage As Worksheet, ShDonnees As Worksheet
     
        Set ShGrammage = Sheets("GRAMMAGE"): Set ShDonnees = Sheets("données")
        For Ligne = 8 To 11
            With ShDonnees
                 .Range("J3") = ShGrammage.Range("H" & Ligne)
                 .Range("A1:G1000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range("H2:N3"), CopyToRange:=.Range("P2:V2"), Unique:=False
                 ShGrammage.Range("H" & Ligne).Offset(0, 1) = .Cells(3, NumColonne).Value
            End With
        Next
       Set ShGrammage = Nothing:  Set ShDonnees = Sheets("données")
     
    End Sub
    Pas testée, possible qu'il y ait une erreur.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    association sportive
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : association sportive

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    je ne vois pas comment affecter chaque bouton radio à sa macro ex: Private Sub OptionButton1_Click()

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par zek474 Voir le message
    Vos macros sont lancées avec le code que je vous ai indiqué dans mon dernier mail. Ex: Si clic sur OptionButton1 alors la macro Grammage est lancée avec la valeur 19.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     Option Explicit
     
    Private Sub OptionButton1_Click()
     
        If OptionButton1.Value = True Then Grammage 19 
     
    End Sub

  10. #10
    Futur Membre du Club
    Homme Profil pro
    association sportive
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : association sportive

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    Nom : Image 001.png
Affichages : 176
Taille : 82,3 Ko

    un clic droit dans le bouton radio active X \ visualiser le code vous permet de controler que j'ai bien mis votre code dans la page grammage( là ou le clic droit du bouton radio me renvoie )

  11. #11
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par zek474 Voir le message
    Quel est le problème ?
    Si vous avez une valeur d'erreur, indiquez là.

  12. #12
    Futur Membre du Club
    Homme Profil pro
    association sportive
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : association sportive

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    euh attendez laissez moi un moment, j'ai déplacé des cellules (design!) , il faut que j'adapte votre code,
    je reviens vers vous pour vous dire si le code marche, merci

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par zek474 Voir le message
    Changez le nom de la macro GRAMMAGE en raison de l'homonymie avec le nom de l'onglet.
    Si vous avez toujours de problèmes, mettez en ligne une version non confidentielle de votre fichier, je regarderai demain.

  14. #14
    Futur Membre du Club
    Homme Profil pro
    association sportive
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : association sportive

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    alors :

    si vous me permettez, je vous joins mon tableau CPQ.xlsm

    le menu déroulant de recherche "semi-automatique" d'un aliment permet de choisir un aliment dont on veut connaitre le grammage en fonction de son utilisation (HorsOeuvre ou plat par ex) mais aussi en fonction de la tranche d'age a laquelle il s'adresse.

    ce menu déroulant fonctionne bien ( il permet le choix de l'aliment qui s'inscrit dans le tableau) mais une erreur ).Nom : Image 002.png
Affichages : 158
Taille : 54,3 Ko sur la ligne coin haut gauche de la fenêtre erreur

    en revanche , quand on interrompt la macro et que l'on teste les boutons radios, les boutons renvoient bien les bonnes valeurs .
    Fichiers attachés Fichiers attachés

  15. #15
    Futur Membre du Club
    Homme Profil pro
    association sportive
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : association sportive

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    peut être une piste :

    mon bouton aliment recherché lance la macro grammage:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub ComboBox1_click()
     
    'ActiveSheet.Unprotect
       ActiveCell = Me.ComboBox1
       Unload Me
    'ActiveSheet.Protect
    Grammage (age)
    End Sub

    dans la macro grammage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShGrammage.Range("E" & Ligne).Offset(0, 1) = .Cells(3, numcolonne).Value
    Numcolonne =0 !!

    quand on remplace Numcolonne par 19 par ex, la macro fonctionne, la variable Numcolonne n'est pas reconnue?

  16. #16
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    Puisque tu travailles avec les radio box qui sont exclusifs dont un seul est a la valeur True tu peux utiliser if else et lire l'age directement dans la fonction Grammage ...


    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
    21
    22
    23
    24
    25
    Sub Grammage()
     
    Dim Ligne As Integer, numcolonne As Integer
    Dim ShGrammage As Worksheet, ShDonnees As Worksheet
        If Feuil1.OptionButton1 Then
          numcolonne = 19
        ElseIf Feuil1.OptionButton2 Then
          numcolonne = 20
        ElseIf Feuil1.OptionButton3 Then
          numcolonne = 21
        Else  ' par defaut
          numcolonne = 22
        End If
        Set ShGrammage = Sheets("GRAMMAGE"): Set ShDonnees = Sheets("données") 'affecte les variables worsheet
        For Ligne = 8 To 11
            With ShDonnees
                 .Range("J3") = ShGrammage.Range("E" & Ligne)
                 .Range("A1:G1000").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=.Range("H2:N3"), CopyToRange:=.Range("P2:V2"), Unique:=False
     
                 ShGrammage.Range("E" & Ligne).Offset(0, 1) = .Cells(3, numcolonne).Value
            End With
        Next
       Set ShGrammage = Nothing:  Set ShDonnees = Sheets("données")  ' là je comprends pas
     
    End Sub
    Ajuste le code des boutons ..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub OptionButton1_Click()
        Grammage   ' l'age choisi est 3-6 ans
    End Sub
    Private Sub OptionButton2_Click()
        Grammage
    End Sub
     
    Private Sub OptionButton3_Click()
        Grammage   ' l'age choisi est 14-16 ans
    End Sub
     
    Private Sub OptionButton4_Click()
       Grammage  ' l'age choisi est 15-17 ans
    End Sub
    ..

  17. #17
    Futur Membre du Club
    Homme Profil pro
    association sportive
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : association sportive

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    votre code pour les boutons radio m’intéresse vraiment beaucoup mais toujours un problème quand on veut changer d'aliment

    RAPPEL, mon bouton aliment recherché lance in fine la macro ( que j'ai renommer Grammer)

    ci joint le fichier adapté ( NB la macro grammer se trouve dans le module 3)Nom : Image 003.png
Affichages : 147
Taille : 97,3 Ko



    je vous remercie beaucoup pour votre aide
    Fichiers attachés Fichiers attachés

  18. #18
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut
    Enlève les crochets apres la fonction ou placer le mot call avant
    Soit
    Grammage
    Ou
    Call Grammage()

  19. #19
    Futur Membre du Club
    Homme Profil pro
    association sportive
    Inscrit en
    Novembre 2018
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : association sportive

    Informations forums :
    Inscription : Novembre 2018
    Messages : 15
    Points : 6
    Points
    6
    Par défaut
    SUPER,

    sans les (),

    NB: grand merci à Vous.

    je clos cette discussion

  20. #20
    Membre actif
    Homme Profil pro
    libre
    Inscrit en
    Juin 2019
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : libre

    Informations forums :
    Inscription : Juin 2019
    Messages : 205
    Points : 292
    Points
    292
    Par défaut


    content pour toi !

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 10/05/2010, 09h40
  2. Réponses: 2
    Dernier message: 11/05/2009, 15h25
  3. mettre 1 variable ds lien lors cliq sur bouton option
    Par zorba49 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 13/06/2006, 14h39
  4. [VBA] taille max d'une variable public
    Par gigs dans le forum Général VBA
    Réponses: 9
    Dernier message: 23/11/2005, 15h27
  5. déclaration de variable public
    Par mathieu57 dans le forum MFC
    Réponses: 5
    Dernier message: 15/09/2005, 17h36

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