Récupérer le caption comme variable

Bonjour,

dans le code ci dessous je définis d'abord mes variables.

Ensuite je souhaite récupérer le caption de mes Optionbutton qui correspondent à mes variables préalablement définies.

Mais, ca ne fonctionne pas. Puis je compter sur votre aide ? Précision : les boutons sont dans l'useform.

Private Sub CommandButton1_Click()
With Worksheets("Export").Select
Dim Etape_BS, Etape_REPORT, Etape_DM1, Etape_DM2, Etape_DM3, Etape_CA, Plage As Range

Set Etape_BP = Range("S:X") 'Caption de mes optionbutton 7 à 11
Set Etape_BS = Range("U:X")
Set Etape_DM1 = Range("V:X")
Set Etape_DM2 = Range("W:X")
Set Etape_DM3 = Range("X:X")

Application.EnableEvents = False
    Application.ScreenUpdating = False

For i = 7 To 11
    If OptionButton & i.Value = True Then
    Plage = OptionButton & i.Caption 'l'idee est que plage=Etape_... vu en haut

  Plage.Delete
        Exit For

    End If
Next i

Range("A1").Select
   End With
    Application.EnableEvents = True
    Application.ScreenUpdating = True
    Unload Me
End Sub

Bonjour,

Si j'ai bien compris, je crois que ceci conviendrait mieux :

Private Sub CommandButton1_Click()

Dim Etape_BS as range, Etape_REPORT as range, Etape_DM1 as range
dim Etape_DM2 as range, Etape_DM3 as range, Etape_CA as range, Plage As Range
dim  ctrl as control

With Worksheets("Export")
    Set Etape_BP = .Range("S1:W1") 'Caption de mes optionbutton 7 à 11
    For each ctrl in me.controls
        If ctrl.name like "Option*" Then
            num = cint(replace(ctrl.name, "OptionButton", ""))
            if num > 6 and num < 12 then
                i = i + 1
                Etape_BP(i).value = ctrl.Caption
            end if
        End If
    Next
end with

unload me
End Sub

Cdlt,

En fait chaque caption se nomme de la même façon que mes variables.
par exemple ma variable Etape_BP représente les colonnes S à X. Donc en cliquant sur le bouton option 7 qui a pour caption Etape_BP, j’aimerai que le caption soit repris pour appeler la variable en question et supprimer les colonnes S à X. En cliquant le Bouton 8, Etape_BS....

Set Etape_BP = Range("S:X") 'Caption  optionbutton 7
Set Etape_BS = Range("U:X")  'Caption optionbutton 8....
Set Etape_DM1 = Range("V:X")
Set Etape_DM2 = Range("W:X")
Set Etape_DM3 = Range("X:X")

Bonjour Jahman, le Forum,

Vu que l'objectif est d'effacer une ou plusieurs colonne(s).

Faire plutôt.

For i = 7 To 11
If OptionButton & i.Value = True Then
alpha = Chr(77 + (i = 7) + i)
Range(alpha & ":X").Delete
'suite du code....
Next i

Ainsi tu considères que le numéro du bouton et le numéro de la colonne sont liés (en quelque sorte) ? Je testerai demain. Le cas échéant l’idée est plutôt bonne. Moins explicite mais tout aussi efficace.

Édit : j’ai déchiffré ton code, je connaissais pas trop « chr ». C’est top ça, et j’en apprends encore. C’est tout à fait ce que j’ai besoin. J’attends de le tester et je passe en résolu.

Merci

Bonsoir …

Si j’ai bien lu, il faut un bouton par ligne. En cas d’une multitude de lignes, ce sera une éruption !

On peut effacer (ou supprimer ??) des lignes de colonnes sans eux.

Voici un exemple avec 2 cas.

k

Premier cas

Private Sub Worksheet_BeforeDoubleClick(ByVal R As Range, Cancel As Boolean)
    If Not Intersect(R, [Y1:Y15]) Is Nothing Then R(1, -5).Resize(, 7) = ""
End Sub

second cas avec un contrôle ListBox (nommé ici Lst)

Private Sub UserForm_Initialize()
    Lst.List = [S1:X15].Value
End Sub
Private Sub Lst_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    If MsgBox("supprimer la ligne ?", vbYesNo, "Effacement ...") = vbNo Then Exit Sub
    Lst.RemoveItem (Lst.ListIndex)
End Sub
Private Sub Label1_Click()
    If MsgBox("effacer les cellules correspondantes ?", vbYesNo, "Effacement ...") = vbNo Then Exit Sub
    Cells(Lst.ListIndex + 1, "S").Resize(, 7) = "" ' pour effacer
End Sub

Bonjour,

Xcellus, j'ai le message suivant "objet requis... erreur 424".

Le code est surligné en jaune sur la ligne "if optionbutton & i..."

Je précise que les boutons sont dans un frame mais je ne pense pas que ce soit lié.

Et si je rajoute "Userform1" devant optionbutton, j'ai le message suivant "membre de methode ou de données introuvable". Arf

EDIT : le " & i " du if pose problème

Merci encore

C'est bon, j'ai modifié le code tel que :

For i = 7 To 11
If Controls("OptionButton & i").Value = True Then
alpha = Chr(77 + (i = 7) + i)
Range(alpha & ":X").Delete
'suite du code....
Next i

Merci

Bonjour Jahman,

Effectivement j'ai repris ton premier code pour aller plus vite. Et j'ai ajouté la partie alpha.

Mais tu as très bien corrigé.

Rechercher des sujets similaires à "recuperer caption comme variable"