Message box qui affiche par odee decroisant

lepapillon2015 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention   -  
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour à tous !j'espere que tout le monde va bien! J'ai une petite question:
J'ai quatre feuilles qui affiche chacune une valeur provenant d'une somme a la fin d'une colonne, j'aimerais quand on est à la fin de la quatrième feuille faire une message box qui m'affiche les valeurs par ordre décroissant !
Merci de votre aide par avance ;)


A voir également:

3 réponses

ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonjour Lepapillon, bonjour le forum,

J'avais répondu à ce post en te secouant un peu à cause de ta demande plus qu'incomplète. Un "modérateur" a cru bon de supprimer ma réponse qui n'avait vraiment rien d'offusquant, je te l'assure. Résultat, tu n'as toujours pas de réponse...
Moralité, certains modérateurs feraient mieux de se modérer eux même... !
1
lepapillon2015 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
Bonjour ThauTheme, je suis assez nouveau sur le forum donc je ne suis peut être pas habitué à faire des question si completes. Je vais essayer d'être plus clair.
J'ai Quatre feuilles, avec une colonne remplis de chiffre chacune de façons aléatoire. A la fin de chaque colonne, il y'a la somme de cette dernière en A20. J'ai fait des boutons permettant d'aller de feuille en feuille, et je souhaitait faire une macro avec une message box qui quand j'arrive sur la feuille 4 me classe par ordre croissant les sommes des feuilles et me dise quelle somme est la plus élevé.
Voilà j'espere avoir été plus précis, éspérant que tu peux m'aider....
0
lepapillon2015 Messages postés 27 Date d'inscription   Statut Membre Dernière intervention  
 
sub som()

msgbox(sheets("NomDeLaFeuille1").range("CelluleDeLaSomme1").value + sheets("NomDeLaFeuille2").range("CelluleDeLaSomme2").value + sheets("NomDeLaFeuille3").range("CelluleDeLaSomme3").value)

end sub

J'avais cette macro pour essayer de m'inspirer mais je m'emmêle les pinceaux pour essayer de classer par ordre croissant, sachant que les sommes sont aléatoires...
0
cs_Le Pivert Messages postés 7904 Date d'inscription   Statut Contributeur Dernière intervention   729
 
Bonjour,

Voici une macro à adapter les cellules contenant les sommes.

'http://silkyroad.developpez.com/vba/tableaux/#LXIV-D
Sub Tri_Tableau()
    Dim Valeur As Integer
    Dim i As Integer
    Dim Cible As Variant
    Dim Tableau() As Single
    Dim NomTableau(3) As String
    'Alimente les éléments du tableau
    NomTableau(0) = Sheets(1).Range("A1").Value 'a adapter les cellules contenant les sommes
    NomTableau(1) = Sheets(2).Range("A1").Value
    NomTableau(2) = Sheets(3).Range("A1").Value
    NomTableau(3) = Sheets(4).Range("A1").Value
    
    ReDim Tableau(0 To 3)
   For i = 0 To UBound(Tableau())
        Tableau(i) = NomTableau(i)
    Next i
    Do 'tri décroissant
        Valeur = 0
        
        For i = 0 To UBound(Tableau) - 1
            If Tableau(i) < Tableau(i + 1) Then
                Cible = Tableau(i)
                Tableau(i) = Tableau(i + 1)
                Tableau(i + 1) = Cible
                Valeur = 1
            End If
        Next i
    Loop While Valeur = 1
    
    'vérification du tri décroissant
    For i = 0 To UBound(Tableau)
        MsgBox Tableau(i)
    Next i
    
    
    'Pour obtenir un ordre croissant, il suffit de boucler du dernier élément
    'du tableau, vers le premier.
    
    'For i = UBound(Tableau) To 0 Step -1
        'Debug.Print Tableau(i)
    'Next i
End Sub


Voir le site mentionné plus haut pour les tableaux
0
ThauTheme Messages postés 1442 Date d'inscription   Statut Membre Dernière intervention   160
 
Bonsoir les animaux, bonsoir le forum,

Une autre proposition à adapter car malgré mes conseils, Lepapillon, tu manques toujours de clarté. Le code proposé considère que la somme se trouve dans la colonne A de chaque onglet (vu que tu expliques très mal ce point là) et que les 4 onglets sont les 4 premiers...
Dans ton premier post tu parle d'ordre décroissant puis dans la réponse 2 tu parles d'ordre croissant. Je crois que c'est surtout en désordre dans ta tête...
Le code utilise la fonction Large pour l'ordre décroissant. Il te suffit de remplacer Large par Small pour passer à l'ordre croissant. Tu verras, il y a une ligne commentée.

Le code doit être placé dans l'onglet Feuil4 [Feuil4(Feuil4)]. Il se déclenchera chaque fois que tu activeras cet onglet...

Private Sub Worksheet_Activate()
Dim I As Byte 'déclare la variable I (Incrément)
Dim TS(1 To 4) 'déclare le tableau de variables TS (Tableau des Sommes)
Dim RNG(1 To 2, 1 To 4) 'déclare le tableau des variables RNG (RaNG)

For I = 1 To 4 'boucle 1 : de 1 à 4
    'récupère la somme des 4 premiers onglets dans la dernière cellule éditée de la colonne A de chacun
    TS(I) = Sheets(I).Cells(Application.Rows.Count, 1).End(xlUp).Value
Next I 'prochaine valeur de la boucle 1
For I = 1 To 4 'boucle 1 : de 1 à 4
    'renvoie dans la première colonne du tableau RNG la Ième plus grande valeur du tableau TS
    RNG(1, I) = Application.WorksheetFunction.Large(TS, I) 'ordre décroisant
    'RNG(1, I) = Application.WorksheetFunction.Small(TS, I) 'ordre croisant
    For J = 1 To 4 'boucle 2 : de 1 à 4
        'récupère dans la colonne 2 du tabelau RBG le nom de l'onglet contenant cette Ième plus grande valeur
        If RNG(1, I) = TS(J) Then RNG(2, I) = "Feuil" & J: Exit For
    Next J 'prochaine valeur de la boucle 2
Next I 'prochaine valeur de la boucle 1
'message renvoyant les sommes et leur emplacement dans l'ordre décroissant
MsgBox RNG(1, 1) & " / " & RNG(2, 1) & Chr(13) _
    & RNG(1, 2) & " / " & RNG(2, 2) & Chr(13) _
    & RNG(1, 3) & " / " & RNG(2, 3) & Chr(13) _
    & RNG(1, 4) & " / " & RNG(2, 4)
End Sub


0