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 :

Caption checkbox feuille dans variable public [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Caption checkbox feuille dans variable public
    Bonsoir,

    J'ai 45 checkbox sur une feuille (checkbox activex), je voudrai récupérer le caption dans une variable public à réutiliser dans une autre macro.

    Voici le code d'une seule checkbox sur la feuille (le code est le même pour les 45 checkboxs)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim App, etat
     
    Private Sub Chk17_Click()
    etat = Chk17.Value
    App = Chk17.Caption
    If etat = True Then
    MsgBox App & " est en service"
    testOn
    ElseIf etat = False Then
    MsgBox App & " est hors-service"
    testOff
    End If
    End Sub
    Je parviens pas à récupérer le caption pour executer la macro ci-dessous
    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 App
    Sub testOn()
    Dim myRange As Range, myCell As Range
    MsgBox App
    With Sheets("bd")
       'aa = "tt16"
      Set myRange = Columns(7).Find(App, lookat:=xlPart)
      If Not myRange Is Nothing Then
        Set myCell = myRange
         Do
           myRange.Offset(, 5).Value = "En Service"
          Set myRange = Columns(7).FindNext(myRange)
        Loop Until myRange.Address = myCell.Address
      End If
      End With
      MsgBox "terminé!"
    End Sub
    En vous remerciant par avance, par la même occasion est-il possible d'avoir un seul code pour les 45 checkbox_clic?

    Cordialement,

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Enlève Dim App du module de la feuille

    Module de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Chk17_Click()
     
    App = Chk17.Caption
    If Chk17.Value Then
        MsgBox App & " est en service"
        TestOn
    Else
        MsgBox App & " est hors-service"
        TestOff
    End If
    End Sub
    Module standard
    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
    Option Explicit
     
    Public App As String
     
    Sub TestOn()
    Dim myRange As Range, myCell As Range
     
    MsgBox App
    With Worksheets("bd")
        'aa = "tt16"
        Set myRange = .Columns(7).Find(App, lookat:=xlPart)
        If Not myRange Is Nothing Then
            Set myCell = myRange
            Do
                myRange.Offset(, 5).Value = "En Service"
                Set myRange = .Columns(7).FindNext(myRange)
            Loop Until myRange.Address = myCell.Address
            Set myCell = Nothing
        End If
        Set myRange = Nothing
    End With
    MsgBox "Terminé!"
    End Sub

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonsoir Mercatog,

    Toujours aussi efficace. Entre nous, je t'envie un peu. Je te remercie beaucoup. J'ai beaucoup appris de toi. Merci.

    Je suis à la recherche d'une solution à mon problème actuel. J'ai pensé à la fonction find et c'est pour cette raison que j'ai ouvert cette discussion.

    les 45 checkboxs que j'ai mis sur la feuille représentent des appareils (répartis le long de lignes électriques, si tu t'en souviens),
    je voudrai suivant le cas en service ou hors service reporter ou effacer le nom (caption) sur des lignes.

    Les noms sont en colonne G et sont déjà mis pour toutes cellules=ps ou ps/ji ou cps de la colonne F.
    Je voulais avec find récupérer le numero de ligne, puis récupérer n=cells(ligne,3)&cells(ligne,4)&(int(cells(ligne,5)
    et utiliser une autre fois find pour trouver n et si cells(ligne,6)= ji ou adf reporter ou effacer le nom.
    Je doute d'y parvenir ainsi car j'ai effectué des tests et find ne fait aucune différence entre PS, PS/JI, CPS et JI.
    C'est pour cela que j'ai rajouter en colonne L, les mots en service et hors service, pour essayer de trouver une solution.

    Je t'avoue que j'ai essayé ta fonction mais sans y parvenir. Si tu veux bien jeter un coup sur mon fichier j'ai mis un cas concret.

    Je te suis déjà très reconnaissant. Merci beaucoup.

    Bonne fin de soirée.

    http://cjoint.com/?0Dma7Zmlodd

    Cordialement

  4. #4
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour cathodique

    Citation Envoyé par cathodique Voir le message
    Je doute d'y parvenir ainsi car j'ai effectué des tests et find ne fait aucune différence entre PS, PS/JI, CPS et JI.
    C'est pour cela que j'ai rajouter en colonne L, les mots en service et hors service, pour essayer de trouver une solution.
    N'oublie pas le point devant Columns(7).

    La commande FIND n'est pas simple à utiliser, loin de là. Si tu ne la connais pas à fond, mieux vaut s'en tenir à une itération pour faire la recherche.

    Pour faire la différence entre PS, PS/JI, CPS et JI, remplace xlPart par xlWhole.

    Si la valeur recherchée n'est pas le résultat d'une formule, je te conseille d'ajouter LookIn:=xlFormulas, pour maximiser les chances que la recherche donne un résultat.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Set myRange = .Columns(7).Find(App, LookIn:=xlFormulas, Lookat:=xlWhole)

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour Docmarti,

    Je te remercie pour tes conseils. En effet, je ne connais pas à fond la fonction FIND.

    En réalité, je ne suis pas très fort en VBA, je suis constamment soit fourré dans mes fichiers exemples ou sur le net.

    Donc j'abandonne en partie FIND.

    Maintenant, que j'ai mis en colonne L, "en service" et "hors-service", je voudrai parcourir les lignes de cette colonne et récupérer dans une variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cells(Lig,3)&cells(Lig,4)&(int(Lig,5)
    Et pour les lignes répondant à ces critères, si c'est "en service", reporter valeur cellule correspondante colonne G, si c'est "hors-service" effacer les valeurs.

    Je ne sais pas si j'ai été clair, car bien souvent quand je cherche obstinément une solution tout s'embrouille dans ma petite tête.

    Bon week-end.

    Cordialement,
    Dernière modification par AlainTech ; 26/04/2014 à 16h22. Motif: Balises [code]

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Je pourrai te dire si tu as été clair quand je saurai ce que tu veux comme résultat final.

    Alors donne-moi un exemple concret:
    1) l'état de la ligne avant
    2) l'état de la ligne après.

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

Discussions similaires

  1. [XL-2007] Variable public dans UF
    Par bigboy dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/08/2009, 16h23
  2. [PHP 5.3] Récupérer les checkbox cochées dans une variable
    Par Invité dans le forum Langage
    Réponses: 6
    Dernier message: 01/06/2009, 12h25
  3. Rendre une variable public dans mon main
    Par djorfe dans le forum Débuter avec Java
    Réponses: 5
    Dernier message: 13/06/2008, 10h49
  4. création dynamique checkbox caption plage feuille cachée
    Par Xiombarg2911 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 06/05/2008, 11h36
  5. Réponses: 1
    Dernier message: 27/02/2007, 11h28

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