Me voilà confronté à un nouveau problème devant lequel j'ai le raisonnement sur papier mais n'arrive pas à le transcrire efficacement en VBA.
Concrétement, je souhaite que la macro recherche la valeur minimale de la colonne J pour les cellules "nombres non nulles" et me restitue par la suite la série des 5 plus petites valeurs rangées par ordre croissant en m'indiquant la valeur correspondante contenue en colonne K.
Ex: série en valeur 20;30;40;50;60 correspondant en colonne K à A,B,C,D,E
résultat à afficher par la macro : A - B - C - D - E
Ci-joint un fichier exemple
Ok, je vais essayer d'éclaircir cela et je laisserai le quick sort.
Par contre pourriez vous m'indiquer le fonctionnement sur les lignes grisées?? Qu'en serait il si les lignes étaient rouge par exemple?
Re
Grise, rouge ou marron, peu importe.
Je me suis basé sur le fait que ce sont les seules dont la valeur (en colonne 18 pour toi) est vide.
Voir le Post 6 pour l'exemple.
Cordialement
Ok merci.
Et pour en revenir à mon 1er post, comment pourrez t'on incrémenter la valeur d'une ligne grise sa valeur dès lors qu'elle est dans la série.
Ex : Pour le fichier Test (3), le compte rendu donne:
C 69
D 97
A 112
E 145
B 300
Les chiffres sont une unité de mesure du temps. On comprend donc que 2C = 138, 2D = 194... et par conséquent le compte rendu des 5 valeurs doit être
C 69
D 97
A 112
C 138
E 145
D 194
En espérant avoir été clair, je pensais passer par une colonne intermédiaire, qui correspondrait à la valeur d'origine multipliée par la fréquence d'apparition dans la série... et la macro "compte rendu" s'appliquerait à cette colonne mais je ne suis pas capable de mettre cela en place en VBA... Je suis entrain de regarder pour comprendre votre macro ce qui sera déjà un grand progrès pour moi...
Ok, merci de votre aide vous m'avez déja bien aidé.
Par contre, je ne vois pas dans le code où vous faites référence au fait que la ligne supérieure porte la lettre (quand on s'intéresse aux lignes surlignées...)
Et j'ai copié mes données dans votre "test 4", cela plante pourtant le nombre de colonnes est identique, est ce du au nombre de ligne, environ 200 pour le véritable fichier???
If .Cells(i, 17).Value > 0 And .Cells(i, 18).Value = "" Then _
D(.Cells(i, 17).Value) = .Cells(i - 1, 18).Value
On lit
Si la valeur de la cellule ligne i colonne 17 est suppérieur à 0 ET si la valeur de la ligne i colonne 18 est égale à rien alors _
La clé du dictionaire D est la valeur de la ligne i colonne 17 et l'item du dictionaire correspondant à cette clé est la valeur de la ligne i - 1 colonne 18.
d'où i - 1 est la ligne du dessus de la cellule vide en colonne 18
Cordialement
ReTout s'explique....J'ai décomposé les If / End If pour simplifier la lecture.Pas terrible des formules en erreur... Essai de te débrouiller autrement la prochaine fois ; )Cordialement
J'étais justement entrain de corriger mes formules pensant que ça pouvait venir de là mais non. Quel était le problème en réalité?
Un grand merci de votre aide en tout cas!!!
Bonjour Adriano,
La listBox est sur la feuille ? dans un UserForm ?
Un nouvel exemple, le plus prochie possible de la réalité, est nécessaire.
Cordialement