VBA Excel - Conversion nom d'objet en string

jp22 -  
gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

J'aimerais savoir si c'est possible de transformer par une conversion quelqu'on que le nom d'un objet en string (dans excel en vba) un peu comme:

Dim Nom As String
Nom = CStr(CheckBox1)
...
Sheets("Feuil1").Nom.Enable = True

L'object ici étant un checkbox, c'est pour pouvoir l'incrémenter dans une boucle while.

Merci.

3 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    En prenant l'exemple 3 fourni cela devrait donner :
    Public Sub boucle_obj()
    Dim o As Integer
    For o = 1 To 100     ' à adapter à ton classeur
        Sheets("Feuil1").Shapes("CheckBox" & o + 4).Enabled = True
        Sheets("Feuil1").Shapes("CheckBox" & o + 4).Value = True
    Next o
    End Sub
    1
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Tu as plusieurs façons de la faire et je t'en mets 3 pour exemple :
    Public Sub boucle_obj()
    Dim o As Integer
    Dim nom As String
    Dim obj As Object
    For Each obj In ActiveSheet.Shapes
        nom = obj.Name
    Next obj
    For o = 1 To ActiveSheet.Shapes.Count
        nom = ActiveSheet.Shapes(o).Name
    Next o
    For o = 1 To ActiveSheet.Shapes.Count
        On Error Resume Next    ' filtre autres controles
        nom = ActiveSheet.Shapes("CheckBox" & o).Name
    Next o
    End Sub

    J'ai supposé que tes contrôles étaient sur la feuille car si tu es dans un formulaire c'est différent.
    0
  3. jp22
     
    Merci pour ta réponse,

    En fais mes contrôles étant des tous des checkbox sont sur une autre feuille et je fonctionne avec Target.Value

    If Target.Value = 1 Then
    Sheets("Feuil1").CheckBox5.Enabled = True
    Sheets("Feuil1").CheckBox5.Value = True
    End If

    If Target.Value = 2 Then
    Sheets("Feuil1").CheckBox6.Enabled = False
    Sheets("Feuil1").CheckBox6.Value = False
    End If

    If Target.Value = 3 Then
    Sheets("Feuil1").CheckBox7.Enabled = False
    Sheets("Feuil1").CheckBox7.Value = True
    End If

    etc...
    C'est simplement pour savoir si c'est possible d'incrémenter automatiquement dans une boucle le numéro du checkbox au lieu de changer le chiffre a chaque fois.

    Merci
    0