Calcul nombre de bouton - VBA

Bonjour a tous,

je rencontre le problème suivant :

Range("F10").Select

Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Togglebutton.1", _

Link:=False, DisplayAsIcon:=False, Left:=ActiveCell.Left + 1, Top:=ActiveCell.Top + 1, Width:=ActiveCell.Width - 2, _

Height:=ActiveCell.Height - 0.5)

A = ActiveSheet.OLEObjects.Count 'compter le nombre de boutons existants dans la feuille

Obj.Name = "ToggleButton" & A

Je crée des boutons en fonction du nombre de boutons existant sur la feuille.

Cependant par la suite , certain bouton seront supprimés et formeront un gruyère.

Ex : bouton 1 , bouton 3, bouton 4 , bouton 6, bouton 7

Des boutons sont créé a nouveaux = Problème car seulement 5 boutons sur la feuille mais des boutons se retrouve avec le même nom.

je suis preneur d'un solution .. sinon la nuit va etre longue ..

Merci

Bonjour,

inscrire sur la feuille ou dans un textbox invisible le n° du dernier bouton utilisé ?

Ou bien un for next qui boucle sur les boutons et qui gère l'erreur pour récupérer le 1er n° libre.

Mais plutôt que les effacer pour les recréer tu pourrais peut-être les rendre invisibles ou les déplacer.

eric

Bonsoir,

à mon avis tu te compliques inutilement la tâche.

pourquoi ne pas lancer l'userform3, simplement en sélectionnant la ligne, (procédure événementielle) plutot que de créer un bouton pour chaque ligne et de détecter quel bouton a été enfoncé ?

Bonjour à tous,

Dans la très longue liste des solutions possibles, tu peux avoir une UserForm dynamique ... Qui a l'avantage de se ré-initialiser à chaque fois en re-créant tous ses contrôles ...

bonjour a tous

merci pour vos réponses. Si j'aimerais faire une boucle pour retrouver le premier bouton manquant ça donnerai quoi ?

j'ai essayé je sais pas comment m'y prendre.

Dim I As Integer

Dim C As Variant

Dim Bouton As Variant

For Each oob In ActiveSheet.OLEObjects

C = oob.Name

'MsgBox C

For I = 1 To 10

et au milieux une boucle for qui compare Bouton = "ToggleButton" & I ?

---------

------------

Next I

Next

Je donne ma langue au chat..

merci

Bonjour,

par exemple

Sub test()
    nb = 0
    For i = 1 To ActiveSheet.OLEObjects.Count
        'MsgBox ActiveSheet.OLEObjects(i).Name
        On Error GoTo terreur
        Set tb = ActiveSheet.OLEObjects("ToggleButton" & i)
        On Error GoTo 0
        If nb <> 0 Then MsgBox "bouton " & nb & " libre": Exit sub
    Next i
    MsgBox "bouton " & i & " libre"
    Exit Sub
terreur:
    nb = i
    Resume Next

End Sub

bonjour à tous

Merci pour ta réponse.

Je suis toutefois dépassé ..

[inline]Sub CréerBouton(Optional Sh As Worksheet, Optional Emplacement As Range)
Dim Obj As Object
Dim Code As String
Dim A As Variant
Dim B As Variant
Dim nb As Integer
Dim Tb As Object

B = ActiveSheet.Name
Sheets(B).Select
'créer le bouton

With Emplacement
'Position du bouton
    Range("F10").Select
    Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Togglebutton.1", _
    Link:=False, DisplayAsIcon:=False, Left:=ActiveCell.Left + 1, Top:=ActiveCell.Top + 1, Width:=ActiveCell.Width - 2, _
    Height:=ActiveCell.Height - 0.5)

End With

Sheets(B).Select
    nb = 0
    For A = 1 To ActiveSheet.OLEObjects.Count
        'MsgBox ActiveSheet.OLEObjects(i).Name
       On Error GoTo terreur
        Set Tb = ActiveSheet.OLEObjects("ToggleButton" & A)
        On Error GoTo 0
        If nb <> 0 Then MsgBox "bouton " & nb & " libre": Exit For
    Next A
terreur:
     A = nb
    Obj.Name = "ToggleButton" & A
    MsgBox "ToggleButton" & A

Resume Next[Inline][/inline][/Inline]

je comprend pas mon erreur .. :S

Merci

bonjour,

proposition de correction

Sub CréerBouton(Optional Sh As Worksheet, Optional Emplacement As Range)
Dim Obj As Object
Dim Code As String
Dim A As Variant
Dim B As Variant
Dim nb As Integer
Dim Tb As Object

B = ActiveSheet.Name
Sheets(B).Select
'créer le bouton

With Emplacement
'Position du bouton
    Range("F10").Select
    Set Obj = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Togglebutton.1", _
    Link:=False, DisplayAsIcon:=False, Left:=ActiveCell.Left + 1, Top:=ActiveCell.Top + 1, Width:=ActiveCell.Width - 2, _
    Height:=ActiveCell.Height - 0.5)

End With

Sheets(B).Select
    nb = 0
    For A = 1 To ActiveSheet.OLEObjects.Count
        'MsgBox ActiveSheet.OLEObjects(i).Name
       On Error GoTo terreur
        Set Tb = ActiveSheet.OLEObjects("ToggleButton" & A)
        On Error GoTo 0
        If nb <> 0 Then  Exit For
    Next A
if nb=0 then nb=A
Obj.Name = "ToggleButton" & A
exit sub
terreur: 'routine de traitement d'erreur, ne doit être exécutée que si il y a une erreur !
      nb=a
Resume Next

Ça marche merci beaucoup ..

Rechercher des sujets similaires à "calcul nombre bouton vba"