Excel : Fonction? Programmation ? Macro ? Help me Please !!!!

Excel : Fonction? Programmation ? Macro ? Help me Please !!!! - VB/VBA/VBS - Programmation

Marsh Posté le 10-03-2006 à 12:18:57    

Bonjour,
 
Pour faire court, j'ai sous un fichier EXCEL plusieurs feuillet avec la même strcture :
 
http://prashanth3.free.fr/test.jpg
 
Je souhaiterais que la colone "Priorité" soit rempli automatiquement avec les chiffres 1 à 4 selon le plus grand nombre dans la colonne "valeurs".
ex: ici, il faudrait que les cases de la colonne "priorité" soit remplies automatiquement comme ci-dessous :
 
http://prashanth3.free.fr/test2.jpg
 
Note : A savoir que les autres feuilles n'ont pas forcement que 4 valeurs; ils peuvent en avoir plus ou moins. Il me faut donc une solution pour classer ces valeurs de 1 à X (X représentant le nombre de cellules utilisées dans la colonne "valeurs" ).  
Si vous ne comprenez pas une chose ou que vous pensez savoir comment m'aider, veuillez m'ajouter sur MSN ou m'envoyer un mail, merci par avance.

 
 

Reply

Marsh Posté le 10-03-2006 à 12:18:57   

Reply

Marsh Posté le 10-03-2006 à 14:17:31    

La question est bien posée avec de belles copies d'écran, donc il serait domage de ne pas y répondre.
 
Voici une solution que j'ai écrite en vitesse, mais que j'ai quand même testée et qui marche bien.

Sub etablir_priorites()
    src_col_no = 2 ' pour la colonne B (A = 1, B = 2)
    src_lg_no = 2  ' à partir de la deuxieme ligne
    dst_col_no = 1
    cur_priorite = 1
    max_valeur = 9999999
    best_lg_no = src_lg_no
    ' Première boucle pour chaque ligne
    Do While Not IsEmpty(Cells(src_lg_no, src_col_no))
        ' Deuxième boucle pour repérer la plus grande cellule inf à celle déjà vue
        min_valeur = -1
        src_lg_no2 = 2   ' Repartir d en haut
        Do While Not IsEmpty(Cells(src_lg_no2, src_col_no))
           If (Cells(src_lg_no2, src_col_no).Value > min_valeur _
               And Cells(src_lg_no2, src_col_no).Value < max_valeur) Then
              best_lg_no = src_lg_no2
              min_valeur = Cells(src_lg_no2, src_col_no).Value
           End If
           src_lg_no2 = src_lg_no2 + 1
        Loop
        Cells(best_lg_no, dst_col_no).Value _
            = cur_priorite
        cur_priorite = cur_priorite + 1
        max_valeur = min_valeur
        src_lg_no = src_lg_no + 1
    Loop
End Sub

Reply

Marsh Posté le 10-03-2006 à 14:43:18    

Merci quand même,
un collègue a trouvé hier la Fonction RANG(valeur;reference) qui compare la position de la valeur par rapport à reference qui lui est une plage de cellule préalablement défini et nommer.
Tchus !!!


Message édité par prashanth le 14-03-2006 à 09:17:19
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed