Bonjour _Thierry, le forum,
_Thierry, je comprends votre remarque d'autant plus qu'elle est pertinente ...
En fait, pour bien cerner "le problème", j'ai une liste déroulante dans un autre onglet qui fait référence à ma colonne B.
Cette même colonne B peut-être incrémentée ou décrémentée par le biais de la colonne H (c'est à dire que lorsque les cellules de cette colonne sont remplies en l'occurrence d'un "X", la liste déroulante s'adapte.
La validation de données étant déjà pourvue de la formule suivante,
=SI(D6<>"";DECALER(F_NOMS;EQUIV(D6&"*";F_NOMS;0)-1;;NB.SI(F_NOMS;D6&"*");1);F_NOMS)
je n'ai pas trouvé d'autres moyens que de passer par ma demande actuelle ...
.
A la réflexion, ma demande du #9 (c'est à dire mise à jour de la colonne M lorsque B et/ou H sont modifiées) ne pourrait-elle pas se lancer (afin que le temps de réponse aussi long soit-il ne se fasse qu'en une fois) que lorsque j'ai terminé de rentrer mes données et quitté cet onglet ?
Pour info, 10006 lignes à traiter,
Cette macro à l'oeuvre (merci aux contributeurs
), combinée et adaptée maison
,
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:A10006")) Is Nothing Then
Dim Tablo
Application.EnableEvents = False
Tablo = Split(Application.Proper(Target), " ")
If UBound(Tablo) >= 0 Then Tablo(0) = UCase(Tablo(0))
Target = Join(Tablo)
Application.EnableEvents = True
End If
If Not Intersect([A2:O10006], Target) Is Nothing And Target.Count = 1 Then
[A1:O10006].Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes
End If
If Not Intersect(Target, Range("M2:M10006")) Is Nothing Then 'si on change dans la colonne M
On Error Resume Next 'SI MULTISELCTION
If UCase(Target.Value) = "X" Then ' On Test si il y a bien un x ou un X
Range("Z2:Z10006").ClearContents ' on nettoie la colonne Z
The_X_Ejector ' On lance la macro du Module1 (celle que j'avais fait avant
ElseIf Target.Value = "" Then
The_X_Ejector
End If
End If
End Sub
Ainsi que votre module
Merci pour votre retour