Re : Comment faire une rotation de données?
Re,
Une approche dans le sens "par rapport à ce que j'ai compris"
La macro Worksheet_SelectionChange gère l'affichage de la Combobox dans la feuille de calcul si on est dans la zone de travail, elle s'affiche sinon elle ne s'affiche pas.
La macro "Test" nettoie la Combobox, mémorise la cellule active et boucle sur les éléments de la zone M2:M17 pour construire une Combobox variable en fonction des critères en colonne M et N).
Mini et Maxi sont les N° de colonnes extremes de travail (Saison 12 et Saison 20 (on peut les changer si on agrandi le tableau) => colonne C et K => Colonne N° 3 et N° 11)
Début et Fin donnent la plage à tester en fonction du produit (la plage peut déborder à Gauche ou à Droite, il faut gérer ceci. cf. plus bas).
Exemple : Blé, il faut regarder 2 cellules à G et 2 cellules à D pour voir s'il n'y a pas déjà du Blé.
La "Zone" est définie par une formule du style :
MaZone = Range(Cells(Macell.Row, Mini), Cells(Macell.Row, Maxi))
C'est la zone dans laquelle on va regarder s'il y a déjà le produit (elle est variable bien sur, en fonction de chaque X de la boucle la "largeur" de la zone à tester est récupérée avec : X.Offset(0, 1) colonne N)
Une fois la zone définie, on fait :
If MaZone.Find(X) Is Nothing Then Sheets("Feuil1").ComboBox1.AddItem X
C.à.d. si je ne trouve pas le produit dans la zone de recherche, je peux le mettre dans la liste (les délais seront respectés), sinon je ne mets rien.
La série de tests "If" est necessaire pour limiter la "Zone" de recherche aux bornes du tableau (ici colonne C à K => N°3 à N°11).
On teste les différents cas de figures pour faire la recherche sur la bonne zone (ne pas chevaucher les colonnes M et N par exemple => la liste serait erronée. Ou ne pas aller chercher à Gauche de la colonne A => ce n'est pas possible => plantage du programme).
La macro ComboBox1_Change ne fait que remplir la cellule en fonction de ce qui est choisi dans la liste.
NB - il y a une seule Combobox dans la feuille, on ne fait que la masquer/afficher/déplacer.
Voilà les grandes lignes.
Si tu veux d'autres précisions n'hésite pas ...