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 : Sélectionner tout - Visualiser dans une fenêtre à part
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