Message box qui affiche par odee decroisant

Fermé
lepapillon2015 Messages postés 27 Date d'inscription jeudi 2 avril 2015 Statut Membre Dernière intervention 3 mai 2015 - 1 mai 2015 à 16:32
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 - 3 mai 2015 à 02:59
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 mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
2 mai 2015 à 12:09
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 jeudi 2 avril 2015 Statut Membre Dernière intervention 3 mai 2015
2 mai 2015 à 13:20
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 jeudi 2 avril 2015 Statut Membre Dernière intervention 3 mai 2015
2 mai 2015 à 13:22
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 jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
2 mai 2015 à 16:27
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 mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
3 mai 2015 à 02:59
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