re,
dans un boucle, on cherche le longueur maximal des lieux sélectionnés et puis on ajuste si nécessaire (la colonne 9, de lieu)
Private Sub CommandButton1_Click()
On Error GoTo gestionerreur: 'On déclenche la gestion des erreurs
Feuil2.Range("R2").Value = ComboBox1.Value 'on affecte le contenu de la ComboBox dans la zone de critère
Feuil2.Range("R3").Value = TextBox1.Value 'On affecte le contenu da la ListBox dans la zone de critère
Call Filtrer 'Lance la macro du même nom
'On charge la ListBox avec le résultat du filtre avancé.
ListBox1.RowSource = Feuil2.Range("ListeExtraction").Address(external:=True)
txtTotal.Value = Feuil2.Range("R7").Value
arr = Sheets("BDD").Range("ListeExtraction").Value 'les données filtrés
For i = 1 To UBound(arr): l = Application.Max(l, Len(arr(i, 9))): Next 'longueur maximal des "lieus"
With ListBox1
sp = Split(Replace(.ColumnWidths, " pt", ""), ";") 'columnwidths predefined
sp(8) = Application.Max(l * 6.5, CInt(sp(8))) 'si c'etait trop petit pour "lieu", agrandir
.ColumnWidths = Join(sp, ";") 'écrire le résultat vers listbox1
End With
Exit Sub 'Si aucune analyse trouvée, alors on sort de la procédure et on affiche un message.
gestionerreur:
MsgBox "Une erreur est intervenue ou aucune analyse trouvée sur ce critère " & TextBox1.Text
End Sub