Incorporer une variable dans un texte
Résolu
Julien
-
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
jordane45 Messages postés 30426 Date d'inscription Statut Modérateur Dernière intervention -
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.
Merci d'avance,
Julien
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
-
Bonjour,
Tu as des quotes inutiles et une en tropSheets("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-ciDim 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
..
-
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- 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
.
-