Tri numéro mois affichage dans combobox mois en lettres

Bonjour,

Je voudrais alimenter une combobox avec le mois de dates se trouvant sur la feuille BD en colonne A.

J'ai monté ce fichier avec le juste nécessaire, car dans mon véritable fichier les données sont triées suivants un numéro d'ordre.

Les dates ne sont dons pas en ordre croissants.

L'idée est de récupérer les mois sans doublons dans un dictionnaire, les trier par ordre croissant (par rapport au n° du mois)

mais de les faire apparaitre dans la liste de la combobox en lettres.

Je me suis inspiré d'un exemple trouvé sur le net, sans y parvenir.

En espérant avoir bien exposé mon problème.

Avec mes remerciements anticipés.

38tricombomois.xlsm (40.85 Ko)

Bonjour,

ci-jointe une proposition beaucoup plus simple en remplaçant la collection de type dictionnaire par une collection équivalente mais qui a l'avantage d'être triée sur sa clé.

De plus, inutile de réinventer la poudre avec des tables de mois alors que l'instruction VBA "Format" donne tous les éléments nécessaires.

49tricombomois1.xlsm (29.77 Ko)

Très reconnaissant Thev

Quand on ne maitrise pas tous les "outils" de vba, on s'en mêle les pinceaux comme j'ai l'habitude de le faire.

Je viens de me rendre compte que j'ai posté le mauvais fichier.

Pas grave plus que dans le mien les dates ne concernent qu'une seule année.

Je n'ai donc pas besoin de l'année (j'ai retiré les yyyy).

Ton code initial me sera utile sur un autre fichier.

Stp , pourrais-tu commenter le code afin que je puisse mieux comprendre les choses.

Merci beaucoup. Bonne soirée.

Re

Sans vouloir trop abuser. Mais pour que dans la suite de mon code, je puisse garder les mêmes variables (mois_id).

En fait, une macro remplit la feuille "consult". Le choix du mois déclenchera une macro pour ne garder que les lignes concernées pour ce mois. comment récupérer dans une variable pour boucler sur la colonne A.

Merci beaucoup.

Désolé, je ne me suis pas aperçu. Je voudrais que le mot "Tout" s'affiche dans la combobox.

Comment puis-je faire pour le rajouter dans ton code. Merci beaucoup.

Bonsoir,

Je réponds déjà à ta question précédente

Bonjour,

"System.Collections.Sortedlist" est une classe VB dont certaines propriétés et méthodes sont utilisables en VBA.

(voir la classe VB complète via ce lien https://msdn.microsoft.com/fr-fr/library/system.collections.sortedlist(v=vs.110).aspx)

Elle présente les mêmes fonctionnalités que la classe ("Scripting.Dictionnary") et son principal avantage par rapport à celle-ci est que sa clé est automatiquement triée.

La classe ,"liste" par exemple est construite par l'instruction:

set liste = CreateObject("System.Collections.Sortedlist")

Pour cette classe "liste" , les propriétés utilisables en VBA sont :

liste.Count : donne le nombre d"éléments de la collection

liste(Item) : restitue l'élément de la collection correspondant à la valeur de Item allant de 0 à Liste.count -1

liste(clé) : restitue l'élément de la collection correspondant à la valeur de la clé

liste.keys : collection VB des clés de la collection (utilisable dans une collection tableau "System.Collections.Arraylist" et donc convertible en un tableau à une dimension)

liste.values : collection VB des éléments de la collection (utilisable dans une collection tableau "System.Collections.Arraylist" et donc convertible en un tableau à une dimension)

Pour cette classe "liste" , les méthodes utilisables en VBA sont :

liste(clé) = élément : ajout d'un élément

liste.containskey (clé) : détermine si une clé existe dans la collection

liste.containsvalue (élément) : détermine si un élément existe dans la collection

ci-jointe version avec code commenté

41tricombomois1.xlsm (29.75 Ko)

Très très gentil de ta part. Merci pour tes explications.

Pour l'ajout du mot 'tout', j'ai rajouté à la fin de ta procédure Me.ComboBox1.AddItem "Tout"

et ça fonctionne.

Voilà, pour la suite du code, quand "Tout" est sélectionné aucune ligne n'est supprimée ou relance la macro qui alimente la feuille consult.

Et supprime les lignes du mois sélectionné dans la combobox.

Encore merci.

Bonsoir,

Ayant travaillé sur tes questions suivantes, je te soumets pour mémo la version à laquelle j'ai abouti

38tricombomois2.xlsm (32.90 Ko)

Bonsoir,

J'apprécie beaucoup ta gentillesse. Ton fichier est fort intéressant, sauf qu'il ne répond pas exactement à mon problème.

Sur mon fichier réel les données sont traités via des tableaux ensuite le résultat est mis sur la feuille consult.

Ce qu'il me faudrait, c'est supprimé les lignes qui ne correspondent pas à la combobox1.

Sur le fichier joint, toutes les lignes sont supprimées. Je n'ai pas compris où je gaffe.

Merci beaucoup.

Très bonne soirée.

27tricombomois3.xlsm (30.47 Ko)

edit: je n'ai pas compris pourquoi le mois en lettre ne correspond pas au numéro du mois constater avec debug ci-dessous:

Debug.Print Month(Cells(i, 1).Value2) & " | " & Format(Month(Cells(i, 1).Value2), "mmmm")

e n'ai pas compris pourquoi le mois en lettre ne correspond pas au numéro du mois constater avec debug ci-dessous:

Debug.Print Month(Cells(i, 1).Value2) & " | " & Format(Month(Cells(i, 1).Value2), "mmmm")

La réponse est simple. Le format "mmmm" ne peut s'appliquer qu'à une date et non à un numéro de mois. Il suffit d'appliquer cette correction : Format(Cells(i, 1).Value2, "mmmm").

La réponse est simple. Le format "mmmm" ne peut s'appliquer qu'à une date et non à un numéro de mois. Il suffit d'appliquer cette correction : Format(Cells(i, 1).Value2, "mmmm").

Bonjour,

Merci beaucoup, tu me sauves. En effet, tu as raison où avais-je la tête et les yeux.

ça fonctionne avec un petit souci (aucun rapport avec ton code).

Après suppression des lignes, la dernière ligne de la feuille bd n'est pas supprimée.

En tout cas, tu m'as rendu un grand service.

encore merci, pour la suite j'espère trouver la solution.

bonne journée.

ça sera fait

Rechercher des sujets similaires à "tri numero mois affichage combobox lettres"