Je construis une macro pour copier les lignes sélectionnées d'une feuille vers une feuille sélectionnée. Par exemple, je veux copier les lignes 3, 5, 6 et 7 dans la feuille 3. J'ai pensé à utiliser des cases à cocher pour sélectionner les lignes et des boutons radio pour sélectionner la feuille. Dans mon code, je fixe une variable par les boutons radio et cette variable est utilisée pour décider de la feuille dans laquelle les données doivent être copiées.
Public Val As String
Public Sub OptionButton1_Click()
If OptionButton1.Value = True Then Val = "Sheet2"
End Sub
Public Sub OptionButton2_Click()
If OptionButton2.Value = True Then Val = "Sheet3"
End Sub
Sub Addcheckboxes()
Dim cell, LRow As Single
Dim chkbx As CheckBox
Dim MyLeft, MyTop, MyHeight, MyWidth As Double
Application.ScreenUpdating = False
LRow = ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row
For cell = 2 To LRow
If Cells(cell, "A").Value <> "" Then
MyLeft = Cells(cell, "E").Left
MyTop = Cells(cell, "E").Top
MyHeight = Cells(cell, "E").Height
MyWidth = Cells(cell, "E").Width
ActiveSheet.CheckBoxes.Add(MyLeft, MyTop, MyWidth, MyHeight).Select
With Selection
.Caption = ""
.Value = xlOff
.Display3DShading = False
End With
End If
Next cell
Application.ScreenUpdating = True
End Sub
Sub CopyRows()
For Each chkbx In ActiveSheet.CheckBoxes
If chkbx.Value = 1 Then
For r = 1 To Rows.Count
If Cells(r, 1).Top = chkbx.Top Then
With Worksheets(Val)
LRow = .Range("A" & Rows.Count).End(xlUp).Row + 1
.Range("A" & LRow & ":AF" & LRow) = _
Worksheets("Sheet1").Range("A" & r & ":AF" & r).Value
End With
Exit For
End If
Next r
End If
Next
End Sub
La variable Val est réglée ici par le bouton d'option 1 ou 2. Et cette valeur est utilisée par le Sub CopyRows(). Mais j'obtiens un erreur à la ligne 4 dans CopyRows(). * Il est indiqué "Subscript Out of range". * Vous voyez un problème dans ma logique ou autre chose ? Merci. (Veuillez pardonner les erreurs évidentes car je suis encore en phase d'apprentissage).