Incorporer une variable dans un texte

Résolu
Julien -  
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.

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

  1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830
     
    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
    1. Grimsey92 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
       
      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
      1. jordane45 Messages postés 30426 Date d'inscription   Statut Modérateur Dernière intervention   4 830 > Grimsey92 Messages postés 1 Date d'inscription   Statut Membre Dernière intervention  
         
        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