"Lier code vba" à une plage de cellule variable
Bonjour,
J'ai un code VBA qui fonctionne parfaitement pour des lignes fixes. Ce code permet de faire une liste déroulante avec proposition de recherche à la frappe. Et mon problème concerne justement une plage de lignes qui peut changer à cause de suppressions de lignes avant.
Je pense que mon problème concerne la ligne : If Not Intersect([A304:A310], Target) Is Nothing And Target.Count = 1 Then
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| Dim a()
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect([A304:A310], Target) Is Nothing And Target.Count = 1 Then
a = Application.Transpose(Sheets("BDD1").Range("A2:A27435"))
Me.ComboBox2.List = a
Me.ComboBox2.Height = Target.Height + 3
Me.ComboBox2.Width = Target.Width
Me.ComboBox2.Top = Target.Top
Me.ComboBox2.Left = Target.Left
Me.ComboBox2 = Target
Me.ComboBox2.Visible = True
Me.ComboBox2.Activate
'Me.ComboBox2.DropDown ' ouverture automatique au clic dans la cellule (optionel)
Else
Me.ComboBox2.Visible = False
End If
'--- libellés codes
End Sub
Private Sub ComboBox2_Change()
If Me.ComboBox2 <> "" And IsError(Application.Match(Me.ComboBox2, a, 0)) Then
Me.ComboBox2.List = Filter(a, Me.ComboBox2.Text, True, vbTextCompare)
Me.ComboBox2.DropDown
End If
ActiveCell.Value = Me.ComboBox2
End Sub
Private Sub ComboBox2_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Me.ComboBox2.List = a
Me.ComboBox2.Activate
Me.ComboBox2.DropDown
End Sub
Private Sub ComboBox2_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If KeyCode = 13 Then ActiveCell.Offset(1).Select
End Sub |
Quand je supprime des lignes avant la plage concernée mes lignes destinées au code sont décalées. Comment je pourrais indiquer au code de "suivre" sur ma feuille excel la plage initiale [A304:A310] mais qui est amené à être déplacée car je supprime des lignes au-dessus de cette plage (jamais le même nombre de lignes supprimés).
Par exemple, si je supprime 10 lignes, ma plage concernée sera [A294:300] dans la feuille, mais le code reste [A304:A310]
Merci déjà d'avoir lu jusqu'ici
:)