boucle for avec checkbox

Lili17

XLDnaute Nouveau
Bonjour à tous,

Dans un userform, j'ai plusieurs checkbox (de 1 à 79).
J'ai également plusieurs champs textes (de 1 à 79).
voici ce que je recherche à faire :
si la checkbox est cochée, je veux afficher en A1 "commentaire" + valeur du champs texte
si la checkbox n'est pas cochée, je veux afficher en A1 valeur du champs texte uniquement

J'ai réussi à le faire sans problème pour une:
If checkbox1.Value = True Then
Sheets("Feuil1").Range("A1") = "commentaire" & texte1
Else
Sheets("Feuil1").Range("A1") = texte1
End If

est-il possible de créer une boucle avec For ou For Each , afin de ne pas me taper 79 fois la commande ?
Merci de votre aide
 

Pierrot93

XLDnaute Barbatruc
Re : boucle for avec checkbox

Bonjour,

essaye ceci, si j'ai bien compris :
Code:
Option Explicit
Private Sub CommandButton1_Click()
Dim i As Byte
For i = 1 To 79
    Sheets("Feuil1").Range("A" & i).Value = IIf(Me.Controls("CheckBox" & i).Value = True, _
        "Commentaire ", "") & Me.Controls("TextBOx" & i).Value
Next i
End Sub

bonne journée
@+
 

Lili17

XLDnaute Nouveau
Re : boucle for avec checkbox

Bonjour,

Je me suis mal exprimée (enfin j'ai mal défini mon problème en fait), mais ce que tu proposes m'a permis de trouver un code pour faire ce que je voulais (mais en 2 étapes; d'abord remplacer le texte, puis le transférer vers la feuille excel, car je ne copie pas sur Ai mais sur A1, puis A3, puis A12....comment faire simple!) :
Dim i As Byte
For i = 1 To 79
Controls("TextBox" & i).Value = IIf(Me.Controls("Checkbox" & i).Value = True, _
"commentaire", "") & Me.Controls("TextBox" & i).Value
Next i
Sheets("Feuil1").Range("A1").Value = TextBox1

bon par contre j'ai bien 79 lignes pour le transfert vers la feuille (mais j'ai déjà évité 79 if checkbox = true.... !).

Merci !
 

Bebere

XLDnaute Barbatruc
Re : boucle for avec checkbox

bonjour Lili,Pierrot
tu as la propriété tag de la textbox(fenêtre propriétés)
textbox1.tag tu entres A1,textbox2.tag tu entres A3,etc
Sheets("Feuil1").Range(me("textbox" & i).tag ).Value = me("TextBox" & i)
if...else...endif plus rapide que iif(les 2 conditions sont vérifiées)
à bientôt
 

pleskyd

XLDnaute Nouveau
Re : boucle for avec checkbox

Bonjour,
Je suis en train de travailler sur un code similaire en VAB sous excel 2010.
Je sens que je touche au but mais il y a toujours un truc qui plante.

Le contexte est : j'ai un userform avec 70 textbox et 70 checkbox.
Chaque checkbox à un textbox associé (grace au tag)

Ce que je veux obtenir : pour chaque checkbox cochée, récupérer la valeur saisie dans la textbox associée.

Voici ma boucle :


For j = 1 To 70
If Controls("CheckBox" & j).Value = True Then
If Formulaire_impacts_SI.Controls("CheckBox" & j).Tag.Value = "" Then
TabColInfo(i).infosaisie = "X"
i = i + 1
Else
TabColInfo(i).infosaisie = Formulaire_impacts_SI.Controls("CheckBox" & j).Tag.Value
i = i + 1
End If
Else
TabColInfo(i).infosaisie = Formulaire_impacts_SI.Controls("CheckBox" & j).Tag.Value
i = i + 1
End If
Next j



Pouvez-vous m'aider svp ?
 

pleskyd

XLDnaute Nouveau
Re : boucle for avec checkbox

Mon bout de code était inutilement complexe.
En voici une version simplifiée :

i = 1
For j = 1 To 70
'si la CheckBox est cochée
If Controls("CheckBox" & j).Value = True Then
'récupérer la valeur de la TextBox associée dans un tableau
Tableau(i).infosaisie = userform.Controls("CheckBox" & j).Tag.Text
i = i + 1
end if
next j
 

TempusFugit

XLDnaute Impliqué
Re : boucle for avec checkbox

Tu peux joindre le fichier sans les données mais avec juste le userform et les controles TextBox et CheckBox)
(Ca ce n'est pas confidentiel)

Sinon Ok, pour 2 controles, le code ci-dessous fonctionne sur mon PC
Code:
Private Sub CommandButton1_Click()
Dim i
For i = 1 To 2
If Controls("CheckBox" & i) Then
Controls("TextBox" & i) = Controls("CheckBox" & i).Tag
End If
Next i
End Sub
 
Dernière édition:

TempusFugit

XLDnaute Impliqué
Re : boucle for avec checkbox

Je viens de m'apercevoir que tu parlais d'Array

Donc ce code ici fonctionne aussi
Code:
Private Sub CommandButton1_Click()
Dim i, tablo(2)
For i = 1 To 2
If Controls("CheckBox" & i) Then
tablo(i) = Controls("CheckBox" & i).Tag
End If
Next i
MsgBox tablo(1)
MsgBox tablo(2)
End Sub
 

TempusFugit

XLDnaute Impliqué
Re : boucle for avec checkbox

Les codes de mes précédents messages fonctionnent tous les deux sur mon pc.
Tu les as testés sur le tien?

(Car ton fichier exemple, le code VBA n'est pas la même que celui que j'ai posté)

Si j'ai bien compris, tu veux stocké dans le Tag de la CheckBox si elle est cochée la valeur saisie dans le TextBox équivalent ?

Rajoutes un CommandButton dans ton Userform
et ajoutes ce code VBA dans l'userform
Code:
Private Sub CommandButton1_Click()
Dim i, tablo(2)
For i = 1 To 2
If Controls("CheckBox" & i) Then
tablo(i) = Controls("CheckBox" & i).Tag
End If
Next i
MsgBox tablo(1)
MsgBox tablo(2)
End Sub
Code:
Private Sub UserForm_Initialize()
CheckBox1.Tag = "TOTO"
CheckBox2.Tag = "TITI"
End Sub
Si tu coches les 2 checkboxs et que tu cliques sur le CommandButton, les MsgBox affiche bien TOTO et TITI non ?
 
Dernière édition:

Discussions similaires

Réponses
21
Affichages
340

Statistiques des forums

Discussions
312 435
Messages
2 088 396
Membres
103 838
dernier inscrit
noureddine