Bonjour,
1/ A l’initialisation de mon formulaire, j’alimente ma TextBox1 avec un champ nommé « Noms ». Ce champ est définit avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
=DECALER('Base gestion MDR'!$F$9;;;NBVAL('Base gestion MDR'!$F:$F)-8)
Or la ligne 9 peut-être amenée à être supprimée et le champ « Noms » devient avec
Code : Sélectionner tout - Visualiser dans une fenêtre à part
=DECALER('Base gestion MDR'!#REF !;;;NBVAL('Base gestion MDR'!$F:$F)-8)
et forcément l’alimentation du ListBox1 ne se fait plus.
Donc ce que j’aimerais, c’est de changer la façon d’alimenter cette dernière sans utiliser de champ nommé mais plutôt avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
Me.ListBox1.ColumnCount = 2
Me.ListBox1.RowSource = "F9 :G"&[G65000].End(xlUp).Row
(F et G pour alimenter avec le nom et le prénom)

Or je n’arrive pas à adapter le reste de la macro à partir de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
Erase NomOK: ReDim NomOK(1 To Range("Noms").Rows.Count)
2/ Y a-t-il également des modifications à apporter dans l’instruction TextBox1_Change qui est ma zone de recherche intuitive ?
Je pense que oui car j’ai toujours un débogage.


Merci par avance et bonne journée.


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
39
40
41
42
43
44
45
'___________________________'
'Déclaration des variables
'___________________________'
Option Explicit
Dim NomOK() As Long
 
'___________________________'
'Intialisation du formulaire
'___________________________'
 
Private Sub UserForm_Initialize()
trois_boutons Me 'rajoute les boutons de réduction et d'agrandissement dans le formulaire
Dim i As Long
Dim Sh As Integer 'variable feuilles
For Sh = 1 To 18 'pour n'afficher que les 18 premières feuilles du classeur
     Me.ListBox2.AddItem Sheets(Sh).Name 'affiche dans la liste le nom des feuilles sélectionnables
  Next Sh
 Me.ListBox1.List = Range("Noms").Resize(, 2).Value 'alimente la liste avec les noms et prénoms
 Erase NomOK: ReDim NomOK(1 To Range("Noms").Rows.Count)
 For i = 1 To Range("Noms").Rows.Count: NomOK(i) = Range("Noms").Row + i - 1: Next i
 Label21.Caption = "Aujourd'hui, nous sommes le" & " " & Format(Date, "dddd d mmmm yyyy") & " " & "et ce formulaire a été ouvert à" & " " & Format(Now, "hh:mm") 'affiche la date du jour dans un label
 Me.MultiPage1.Value = 2 'se positionne sur la 3ème page du contrôle multipages
 Me.ListBox1.ListIndex = 0 'première occurence de la liste
 Me.Label62.Caption = ListBox1.ListCount + 5 'nombre d'occurences dans la liste
 
'_______________________________________________________'
'A chaque changement dans la zone de recherche intuitive
'(mise à jour des zones de texte)
'_______________________________________________________'
 
Private Sub TextBox1_Change()
Dim xCell As Range, Nbr As Long, ligne As Long
Dim Repertoire As String
Dim L As Byte
 
 Me.ListBox1.Clear
 Erase NomOK
 For Each xCell In Range(Sheets("Base gestion MDR").[F9], Sheets("Base gestion MDR").[F65000].End(xlUp))
   If UCase(xCell) Like UCase(Me.TextBox1) & "*" Then
      Me.ListBox1.AddItem
      Me.ListBox1.List(Me.ListBox1.ListCount - 1, 0) = xCell & " " & xCell.Offset(0, 1)
      ReDim Preserve NomOK(1 To Me.ListBox1.ListCount)
      NomOK(Me.ListBox1.ListCount) = xCell.Row
   End If
  Next xCell