VBA Excel - Conversion nom d'objet en string

Fermé
jp22 - 24 févr. 2009 à 22:23
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 - 25 févr. 2009 à 19:00
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.
A voir également:

3 réponses

gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
25 févr. 2009 à 19:00
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
gbinforme Messages postés 14946 Date d'inscription lundi 18 octobre 2004 Statut Contributeur Dernière intervention 24 juin 2020 4 684
24 févr. 2009 à 23:10
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
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