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
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).
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
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
Partager