Comment "rafraichir" = concat
T
Tout est dit, c'était bien cela.
A mon niveau, cela me parait tout à fait satisfaisant reste l'épreuve à l'usage.
Mille merci, je vais clore et si éventuel souci, je reviendrai.
Bravo, beau résultat.
Cordialement
Tonthon
Pour que la procédure ai un aspect un peu plus conventionnel tu peu la remplacer par..
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
' la plage "surveillée"
If Not Application.Intersect(Target, Range("B2:B4,C1:E4")) Is Nothing And Target.Count = 1 Then
Application.ScreenUpdating = False ' Bloque le raffraichissement écran
On Error Resume Next ' Indique si une erreur ne t'arrête pas
ActiveSheet.ShowAllData ' libère le filtre
On Error GoTo 0 ' Rétablit la gestion des erreurs
If Target.Address = "$C$2" Then
Range("J2") = "=A12=" & Target.Address ' critère : A12 c'est la 1ère ligne de la base de donnée
Range("A11:W" & Range("A" & Rows.Count).End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("J1:J2"), Unique:=False
ElseIf Target.Address = "$B$2" Then
Range("J2").Formula = "=COUNTIF(A12,""=B*"")" ' critère : A12 c'est la 1ère ligne de la base de donnée"
Range("A11:W" & Range("A" & Rows.Count).End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("J1:J2"), Unique:=False
ElseIf Target.Address <> "$C$1" Then '(Tous)
Range("J2") = "=V12=" & Right(Target.Value, 2) ' critère : V12 c'est la 1ère ligne de la base de donnée REGIONS
Range("J9") = Right(Target.Value, 2)
' c'est pour le report du choix région dans le cadre n.adhérents pour 1 région
Range("A11:W" & Range("A" & Rows.Count).End(xlUp).Row).AdvancedFilter Action:=xlFilterInPlace, _
CriteriaRange:=Range("J1:J2"), Unique:=False ' Le tableau commence en A8 et finit en W....
End If
Range("J2").ClearContents ' On efface les critères
Range("X1") = concat(Me.Range("M12:M303"))
End If
End SubCa fait la même chose mais avec beaucoup moins de perte de temps en test inutiles.
Bon amusement et au plaisir sur le forum.
T
ok, c'est sympa
Excellent WE
Tonthon