Incorporer une variable dans un texte

Résolu/Fermé
Julien - Modifié par jordane45 le 18/11/2016 à 15:12
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 - 18 nov. 2016 à 17:19
Bonjour,

Je suis en train d'essayer de faire un petit programme, mais je bloque sur une des Sub.
Cette sub a pour rôle de sauvegarder les valeurs des différentes CheckBox du programme (pour ne pas qu'elle soit réinitialisée à chaque lancement du fichier.

Voici la Private Sub que j'ai écris : 

Private Sub CommandButton_sauvegarder_Click()

    'la variable "n" est le nombre de CheckBox pour 1 système donné
    Dim n As Integer
    'la variable "i" permet de sauvegarder les checkBox par itération
    Dim i As Integer
    'La variable y définie la ligne dans laquelle sera collé la valeur de la CheckBox
    Dim y As Integer

'Sauvegarde des checkBoxCEX
    'initialisation de n
    n = Sheets("Sauvegarde").Range("B8").Value + 1

    For i = 1 To n
        'Initialisation de y
        y = i + 2
        Sheets("Sauvegarde").Range("H" & y & "").Value = UserForm_CEX.CheckBoxCEX" & i & ".Value
        
    Next i

End Sub

Malheureusement il semblerai qu'il y ai une erreur de compilation dans cette ligne de code :
 Sheets("Sauvegarde").Range("H" & y & "").Value = UserForm_CEX.CheckBoxCEX" & i & ".Value

EDIT : Ajout des balises de code

Savez vous où se trouve mon erreur?

Merci d'avance,
Julien

1 réponse

jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707
18 nov. 2016 à 15:16
Bonjour,
Tu as des quotes inutiles et une en trop
 Sheets("Sauvegarde").Range("H" & y & "").Value = UserForm_CEX.CheckBoxCEX" & i & ".Value

A remplacer par :
 Sheets("Sauvegarde").Range("H" & y ).Value = UserForm_CEX.CheckBoxCEX & i & .Value


Par contre... pas certain que ceci fonctionne :
UserForm_CEX.CheckBoxCEX & i

A mon avis il faut que tu regarde comment utiliser l'objet "controls"

Par exemple, pour boucler sur des chekbox (des OPTION BUTTON) il faut utilser un code comme celui-ci
 Dim Ctrl As Control
         
    'Boucle sur tous les contrôles
    For Each Ctrl In Me.Controls
        'Vérifie qu'il s'agit d'un OptionButton
        If TypeOf Ctrl Is MSForms.OptionButton Then
            'Véfifie si l'OptionButton fait partie d'un groupe nommé "GR1"
             If Ctrl.GroupName = "GR1" Then
                'Affiche le Caption de l'optionButton qui a la valeur True
                If Ctrl.Value = True Then
                    MsgBox Ctrl.Caption
                    'Sort de la boucle (Il ne peut y a voir qu'une
                    'réponse à True)
                    Exit For
                End If
            End If
        End If
    Next


https://silkyroad.developpez.com/VBA/ControlesUserForm/#LII-B


..
2
Grimsey92 Messages postés 1 Date d'inscription vendredi 18 novembre 2016 Statut Membre Dernière intervention 18 novembre 2016
18 nov. 2016 à 17:04
Merci Jordane pour ton retour,
J'ai en effet réussi à faire ce que je souhaitais avec l'objet "Controls".
ça m’évite de devoir aller chercher nominativement les CheckBox.
Pour info, le Code ressemble à ça :

Private Sub CommandButton_sauvegarder_Click()

Dim Ctrl As Control
'La variable y définie la ligne dans laquelle sera collé le nom et la valeur de la CheckBox
Dim y As Integer
'la valeur x permet d'extraire la nom de la chexkBox
Dim x As String
'La valeur z permet d'extraire la valeur de la checkbox
Dim z As String

y = 2

'Boucle sur tous les contrôles du UserFormCEX
For Each Ctrl In UserForm_CEX.Controls
'Vérifie qu'il s'agit d'un OptionButton
If TypeOf Ctrl Is MSForms.CheckBox Then
'Sauvegarde les données des CheckBoxCEX
x = Ctrl.Caption
Sheets("Sauvegarde").Range("M" & y).Value = x
z = Ctrl.Value
Sheets("Sauvegarde").Range("n" & y).Value = z
y = y + 1
End If
Next

End Sub
0
jordane45 Messages postés 38321 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 1 décembre 2024 4 707 > Grimsey92 Messages postés 1 Date d'inscription vendredi 18 novembre 2016 Statut Membre Dernière intervention 18 novembre 2016
18 nov. 2016 à 17:19
SI la question est résolue, merci de cliquer sur le bouton : "Mettre en résolu" qui se trouve sous le titre de ta question.

PS: A l'avenir, merci d'utiliser les Balises de code pour poster ton code sur le forum;
https://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

.
0