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 :

Copier la valeur de chaque label pour chaque CheckBox validée [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2019
    Messages : 6
    Par défaut Copier la valeur de chaque label pour chaque CheckBox validée
    Bonjour à tous,

    Débutant en VBA, je pense arriver aux limites de mes compétences actuelles et je n'arrive plus à avancer pour finaliser mon fichier.

    Voici mon problème et objectif, j'ai actuellement des CheckBox (43 pour être précis) chacune associée à un Label (Checkbox1 correspond à Label1, etc), je cherche donc à copier, dans la colonne adjacente de la cellule actuelle, les valeurs des Label si les CheckBox sont validées en cliquant sur un bouton "Valider". Exemple : 3 CheckBox cochées, je clique sur "Valider" et actuellement en A5, les 3 Label associé seront insérés respectivement en B5, B6 et B7.

    En espérant être assez précis.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    SI!!! tes checkboxs ont bien leur nom d'origine a la creation !!!!!!?????
    boucle sur les checkbox et replace "CheckBox" par "Label" et voila

    exemple 1
    sans distinction(inclut tout les checkboxs du userform)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    for each ctrl in me.controls
    if typename(ctrl)="CheckBox" then 
    if ctrl.value=true then 
    texte=texte & me.controls(replace(ctrl.name,"CheckBox","Label").caption & vbcrlf
    end if 
    end if
    next
    msgbox texte
    exemple 2
    on limite les checkbox du 1 au 10
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i= 1 to 10
    if me.controls("CheckBox" & i).value=true then texte=texte & me.controls("Label" & i).caption & vbcrlf 
    next
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2019
    Messages : 6
    Par défaut
    Je viens de vérifier le nom de mes CheckBox et Label, tout est OK.
    Je viens d'essayer l'exemple 2, et ça ne fonctionne pas. Je ne comprends pas la partie du code "Texte = Texte", pourquoi est-elle là? Le .Caption n'est pas suffisant pour remplir la cellule?

    Edit : Je viens de corriger mon fichier, en alimentant mes CheckBox directement et non plus les Label, mais j'ai toujours le même soucis : aucune cellule vient se remplir.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Ancien Etudiant
    Inscrit en
    Janvier 2019
    Messages
    152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations professionnelles :
    Activité : Ancien Etudiant

    Informations forums :
    Inscription : Janvier 2019
    Messages : 152
    Par défaut
    Bonjour à tous,

    Pas tout compris

    les checkbox et label sont où ? sur une feuille , dans un Userform ?


    Exemple : 3 CheckBox cochées, je clique sur "Valider" et actuellement en A5, les 3 Label associé seront insérés respectivement en B5, B6 et B7.
    que signifie : et actuellement en A5 . je l'ai interprété comme : après coche des checkbox, je sélectionne A5

    si activeX sur feuille:

    créer une bouton de commande (CommandButton)
    avec son code:

    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 CommandButton1_Click()
    Dim i As Integer, Lig As Integer
     
    Lig = ActiveCell.Row - 1
    With Worksheets("Feuil1") ' adapter le nom de la feuille
    For i = 1 To 43
        If .OLEObjects("CheckBox" & i).Object.Value Then 'si checkbox coché
                Lig = Lig + 1
                donnée = .OLEObjects("Label" & i).Object.Caption
                .Cells(Lig, 2) = donnée
        End If
    Next
    End With
    End Sub

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Mars 2019
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : Bâtiment

    Informations forums :
    Inscription : Mars 2019
    Messages : 6
    Par défaut
    Pardon pour cette réponse réponse tardive, je n'ai pas accès au fichier et à excel le week-end.

    Je pense avoir mal exprimé ma demande, je me rends compte que c'est vraiment compliqué d'expliquer sa problématique. Je vais essayer d'être le plus précis possible.
    Je réalise actuellement un Userform qui s'actualise en fonction du nom de la feuille sélectionnée, les données de cette feuille remplissent directement les Checkbox de cet Userform.
    Je bloque donc à l'étape la plus importante : qui est de copier les Checkbox validées de l'Userform pour les insérer dans la cellule de droite de la cellule actuelle (exemple : cellule actuelle A5, insertion des valeurs des Checkbox à partir de la cellule B5).

    En espérant être assez précis.

  6. #6
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut
    Bonjour,

    A tester (pour 10 cas ou plus)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For I = 1 To 10
      If Me("CheckBox" & I) Then ActiveCell(1, I + 1) = Me("Label" & I).Caption
    Next
    Nota : plus il y a de contrôles plus la programmation est longue.
    On peux remplacer une quantité importante de conrôles "CheckBox" associés à autant de contrôles "Label" par un simple contrôle liste ("ComboBox" ou "Listbox") à 2 colonnes en ListOption et Multiselect

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

Discussions similaires

  1. [Toutes versions] Modifier la valeur d'une propriété pour chaque formulaire
    Par adama13 dans le forum VBA Access
    Réponses: 4
    Dernier message: 11/02/2018, 16h53
  2. Réponses: 2
    Dernier message: 28/09/2015, 21h07
  3. Réponses: 1
    Dernier message: 13/06/2012, 08h11
  4. Réponses: 3
    Dernier message: 09/01/2012, 14h08
  5. Réponses: 3
    Dernier message: 03/05/2011, 12h03

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