Signaler

Incorporer une variable dans un texte [Résolu]

Posez votre question Julien - Dernière réponse le 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
Afficher la suite 
Utile
+2
moins plus
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


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


..
Grimsey92 1Messages postés vendredi 18 novembre 2016Date d'inscription 18 novembre 2016 Dernière intervention - 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
Répondre
jordane45 15434Messages postés mercredi 22 octobre 2003Date d'inscription ModérateurStatut 7 décembre 2016 Dernière intervention - 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;
http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

.
Répondre
Ajouter un commentaire

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !