Liste conditionnelle sans vide

GUY rrr

XLDnaute Occasionnel
Bonsoir le forum,

Après avoir cherché ici et ailleurs une solution par macro à ma problématique, je demande une fois de plus de l'aide :cool:.

J'ai un fichier avec en colonne B des noms (N°) et en colonne H des croix à insérer selon telle ou telle option.

En colonne M, je souhaite récupérer sans vides la liste de la colonne B non triée (dans l'ordre de cette même colonne), mais sans les noms ayants comme attributs une croix en colonne H.
La macro se déclanchant uniquement si une seule cellule en colonne H est changée (chose que je n'arrive pas à faire à l'aide de l'enregistreur de macro) ...

J'ai bien trouvé une solution par formule matricielle mais il s'avère que cette dernière est trop lourde, d'où ma demande d'aide pour élaborer une macro.

Je tiens à préciser que le langage VBA m'échappe ... :(.

Ci-joint un fichier exemple.

Merci pour vos propositions
 

Pièces jointes

  • Test liste conditionnelle.xlsm
    8.9 KB · Affichages: 12
Dernière édition:

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Guy

Je t'ai fait une mini macro toute commentée, je pense que tu n'auras pas trop de mal à la comprendre.

Bien à toi, à vous
@+Thierry

one-world-together-at-home.JPG >>> Mega Concert Virtuel en Live Samedi France 2h00 AM
 

Pièces jointes

  • XLD_GUYrrr_Test_liste_conditionnelle.xlsm
    98.5 KB · Affichages: 4

GUY rrr

XLDnaute Occasionnel
Bonsoir _Thierry, le forum,

Thierry, merci pour votre réponse rapide, mais j'étais en train de modifier ma demande lorsque vous avez posté votre proposition, désolé pour le changement tardif :rolleyes:.
J'avais bidouillé un truc à l'aide de l'enregistreur de macros mais ne suis pas arrivé à faire se déclencher automatiquement la macro uniquement si un élément est changé en colonne H afin que la liste soit mise à jour "que sur ordre".
Une petite idée à greffer à votre proposition qui me parait être beaucoup plus propre que mon test ?

Merci pour vos propositions
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re bonsoir Guy

Pas de souci c'est simple à adapter, c'est dans le Private Module de la Feuil1 , il y a moyen d'avoir des "Triggers On Event" dont : Worksheet_Change

Voilà une nouvelle version
@+Thierry
 

Pièces jointes

  • XLD_GUYrrr_Test_liste_conditionnelle_On_Event.xlsm
    19.6 KB · Affichages: 5

GUY rrr

XLDnaute Occasionnel
Bonsoir _Thierry, le forum,

La macro répond précisément à ma demande et je vous en remercie vivement, sauf qu'à l'épreuve, si par exemple je vide la colonne H, le résultat est immédiatement répercuté en M, et si à la suite de cela je mets une croix maj en H2, le résultat est toujours répercuté, mais, si pour une raison Y ou Z (pas X) ;) je veux retirer cette même croix en H2, celle-ci s'efface bien mais le résultat précédent ne change pas :(.

Pourriez-vous remédier à cet état ?

Merci pour votre retour
 

GUY rrr

XLDnaute Occasionnel
Bonjour _Thierry, le forum,

En continuant d'étoffer et de tester mon fichier, je me suis aperçu à l'usage que j'avais oublié un paramètre:

Lorsque j'abonde ma liste en colonne B, celle-ci n'est pas directement répercutée en M si je n'effectue pas de changements en H :rolleyes:.
Est-il possible d'ajouter cette contrainte à la macro du #7 ?

Merci pour votre retour
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour Guy, et les gens qui regardent ce fil...

Ah ca se complique, car en évèmentielle les algos vont finir par allourdir en temps de réponse la saisie dans cette feuille. En fait tout dépend combien d'items tu as l'intention de traiter dans la colonne B, car si c'est un grand nombre (je parle + de 500...) ca va faire une belle "sacade" à chaque saisie d'un item dans cette colonne B...

Techniquement tout est possible, mais bon si c'est un gros volume je préconise le retour à un bon vieux bouton à activer une fois les Data mises à jour.

En attente de précisions.

Bien à toi, à vous
@+Thierry
 

GUY rrr

XLDnaute Occasionnel
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 ... :oops:.

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 :cool:,

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
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Guy

Ah tu n'aimes vraiment pas les boutons ! Quoique qui aime avoir des boutons ! LoL

Oui on pourrait voir à placer un autre trigger alors dans un évènement "This Workbook" cette fois-ci

Exemple :
VB:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    MsgBox "Hello One World Together At Home !"
End Sub

Je voir ça...

@+Thierry
one-world-together-at-home.JPG Cette nuit !!!
 

GUY rrr

XLDnaute Occasionnel
Bonsoir _Thierry, le forum,

Ah tu n'aimes vraiment pas les boutons !


Cela dépend des boutons :cool:.
Je vais voir pour un correctif immédiatement, c'est inacceptable ! (LoL) ;), en cette période de confinement ...

Blague à part, ma seconde réflexion pourrait être viable et/ou fonctionnelle ?
Je m'étonne presque tous les jours des capacités d'excel et surtout des capacités des maitres d'oeuvre à pouvoir adapter ... quoiqu'il en soit, encore une fois merci de vous pencher sur ma problématique.

Merci pour votre retour
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir Guy, et ceux qui suivent....

Je pensais t'avoir mis sur la piste avec : Private Sub Workbook_SheetActivate

Voilà mis-en oeuvre dans la version suivante. Tu n'as qu'à changer de feuille et revenir sur la Feuil1, Toi et moi, nous serons ajoutés par "magie" !

Bonne soirée
@+Thierry
 

Pièces jointes

  • XLD_GUYrrr_Test_liste_conditionnelle_On_Event_Vide_Sheet_Change.xlsm
    20.4 KB · Affichages: 7

GUY rrr

XLDnaute Occasionnel
_Thierry, le forum,

_Thierry, désolé pour l'incompréhension ... :oops:. Je pensais avoir été clair :rolleyes:

Je tiens à préciser que le langage VBA m'échappe ... :(.


J'arrive à adapter des macros simples, mais dès qu'il s'agit du simple + alors ... Je fais partie de ces gens qui essayent de parler notre langage ... dès qu'il s'agit d'une autre langue ... n'y voyez aucun communautarisme ou autre mais je jongle, comme beaucoup d'entre nous ...

Vous me voyez désolé de cet état, mais j'essaye de m'améliorer ... Le manque de temps m'empêche d'approfondir ...

Je teste dès demain et vous tiens informé.

Merci pour votre patience
 

Discussions similaires

Statistiques des forums

Discussions
312 389
Messages
2 087 903
Membres
103 676
dernier inscrit
Haiti