Re : xlValidateList
Effectivement, il doit y avoir une limit a list
l'utilisation de la plage nommée resoud bien le problème
Bonjour a tous,
En cherchant à comprendre la démo de "_Thierry" (recherchev sans recherchev2 qui date de 2003), je rencontre un problème inattendu (au passage merci à _Thierry c'est fort instructif).
sa solution utilise un tableau pour alimenter la liste de validation et le résultat est tronqué si la liste est longue.
étant donné la discussion, connaissez vous une solution pour dépasser cette limite ?
Est il possible de faire la même chose avec un tableau dynamique ?
Merci d'avance
PS: c'est mon premier post pardonnez mes erreurs éventuelles
ci-dessous le code et en pièce jointe un fichier de test:
Option Explicit
'Thierry's Macro Démo sur Excel-Downloads.com, February 2003
Sub ListeRechercheV()
Dim MyArray(0 To 29) As String 'adapter
Dim Cell As Range
Dim Plage As Range
Dim WSSource As Worksheet
Dim WSCible As Worksheet
Dim i As Integer
Dim ii As Integer
Dim iii As Integer
Set WSSource = Sheets("Database")
Set Plage = Sheets("Recherche").Range("A2:A30") 'à adapter
ii = 0
For Each Cell In Plage
For i = 1 To 30 ' à adapter
If Cell.Value = "" Then Exit Sub
If Cell.Value = WSSource.CellS(i, 1) Then
MyArray(ii) = MyArray(ii) & ", " & WSSource.CellS(i, 2).Value
Cell.Offset(0, 1).Value = WSSource.CellS(i, 2)
iii = iii + 1
End If
Next i
If MyArray(ii) = "" Then
MsgBox "Pas de Ville avec ce code Postal : " & Cell.Value, vbCritical, "Thierry's Démo"
Exit Sub
End If
With Cell.Offset(0, 1).Validation
.Delete
.Add Type:=xlValidateList, _
Operator:=xlBetween, _
AlertStyle:=xlValidAlertStop, _
Formula1:=MyArray(ii)
End With
If iii > 1 Then
Cell.Offset(0, 1).Value = ""
End If
MyArray(ii) = ""
ii = 0
iii = 0
Next Cell
End Sub