Afficher contenu variable à l'ouverture sous conditions précises

NicolasBB

XLDnaute Nouveau
Bonjour à toutes et à tous,

Je travaille actuellement sur un classeur Excel servant de tableau de bord, dans lequel j'aimerai pouvoir, lorsqu'on ouvre le classeur, afficher un popup en cas de défaillance (non respect d'un seuil par exemple) qui me listerait les défaillances en cours.

Dans mon classeur les défaillances sont détectées via un seuil atteint ce qui colore directement la case de la valeur en rouge via MFC. Ainsi le lancement du popup pourrait se faire soit en comparant à la valeur seuil, soit en détectant une couleur.

Enfin, dans mon popup je souhaiterais qu'apparaisse toute les valeurs en rouge avec un texte que j'aurais défini different pour chaque ligne de valeur.

Merci à tous, je reste a disposition pour toute question,

Bonne soirée à tous

:)
 

Pièces jointes

  • Exemple.xlsx
    9.1 KB · Affichages: 45
  • Exemple.xlsx
    9.1 KB · Affichages: 46
  • Exemple.xlsx
    9.1 KB · Affichages: 56

NicolasBB

XLDnaute Nouveau
Re : Afficher contenu variable à l'ouverture sous conditions précises

Merci beaucoup, c'est le code que je cherchais, je me rend compte qu'il va falloir l'adapter un tout petit peu par contre :

1: Chaque case "valeur" et "seuil" est en fait un fusionnement de deux lignes, j'imagine que le code doit être modifié ? Ou exactement ?
EDIT: Non le code n'a pas besoin d'être modifié j'ai vérifié :)

2: Dans le VBA, plus précisément dans la messagebox qui s'affiche à l'ouverture on trouve le code suivant :

(...)
Message = Message & j & " : valeur " & Split(Anomalies(j), ";;")(0) & " en cellule " & _
Split(Anomalies(j), ";;")(1) & Chr(10)
(...)

Le numéro de la cellule est appelé, je voudrais plutôt que ce soit le nom de la plage (étant donné que chaque valeur correspond à une plage de deux cellules)
Est-ce possible ?

Merci encore
 
Dernière édition:

repcheks

XLDnaute Junior
Re : Afficher contenu variable à l'ouverture sous conditions précises

Salut,

Desolé mais tu n'es pas tres clair : qu'entends tu par "un fusionnement de deux lignes ?"

Enfin, apparement ca ne pose pas de probleme donc je laisse de coté.

Mais ensuite, je ne vois pas ce que tu veux dire par "le nom de la plage". Il n'y a aucun nom defini dans ton classeur... si par la tu veux dire l'adresse de la plage contenant les cellules "valeur" et "seuil", tu peux remplacer le code par:

Code:
Option Base 1
Option Explicit

Sub Anomalies()

    Dim Valeurs As Range, Valeur As Range
    Dim Anomalie As Boolean
    Dim Anomalies() As String
    Dim i As Long, j As Long
    Dim Message As String
    
    i = 0
    Anomalie = False
    Set Valeurs = Range([C7], Cells(Cells(ActiveSheet.Rows.Count, "C").End(xlUp).Row, "C"))
    
    For Each Valeur In Valeurs
    
        If Valeur < Valeur(1, 2) Then
        
            Anomalie = True
            i = i + 1
            ReDim Preserve Anomalies(i)
            
            Anomalies(i) = Valeur & ";;" & Valeur.Address & ";;" & Valeur(1, 2).Address
        
        End If
    
    Next Valeur
    
    If Anomalie = True Then
    
        Message = i & " Anomalies ont été detectées :" & Chr(10) & Chr(10)
    
        For j = LBound(Anomalies) To UBound(Anomalies)
        
            Message = Message & j & " : valeur " & Split(Anomalies(j), ";;")(0) & " dans la plage " & _
            Split(Anomalies(j), ";;")(1) & ":" & Split(Anomalies(j), ";;")(2) & Chr(10)
        
        Next j
        
        MsgBox Message
        
    
    End If

End Sub

ce qui donnera en msgbox

4 Anomalies ont été detectées :

1 : valeur 56 dans la plage $C$8:$D$8
2 : valeur 25 dans la plage $C$12:$D$12
3 : valeur 65 dans la plage $C$13:$D$13
4 : valeur 75 dans la plage $C$17:$D$17
 

NicolasBB

XLDnaute Nouveau
Re : Afficher contenu variable à l'ouverture sous conditions précises

Merci encore pour ta réponse !

En fait ce que je voudrais, c'est avoir un résultat du type :

4 Anomalies ont été detectées :

1 : valeur 56 au lieu de 74 Pour l'indicateur de performance 1
(...)

Avec 56, la valeur de l'indicateur (rien ne change par rapport a avant), 80 : le seuil que la valeur ne respecte pas (qui change donc pour chaque valeur), et enfin "indicateur de performance 1", le nom de l'indicateur indiqué dans une troisième colonne

Exemple: Dans mon classeur joint
 

Pièces jointes

  • Exemple.xlsm
    18.7 KB · Affichages: 57
  • Exemple.xlsm
    18.7 KB · Affichages: 49
  • Exemple.xlsm
    18.7 KB · Affichages: 53

repcheks

XLDnaute Junior
Re : Afficher contenu variable à l'ouverture sous conditions précises

Sans moi. Je trouve que cela temoigne vraiment d'un manque de respect pour les gens qui t'aident que de rajouter des informations au fur et a mesure sans les avoir jamais mentionnées avant. Je ne vois pas ce qui t'empechait d'exposer clairement ton besoin dans le premier post, et d'y inclure le classeur dans sa version integrale, plutot que de rajouter des colonnes a chaque post; il semble evident que personne ne peut te fournir un code complet si tu n'est pas rigoureux dans ta formulation.

Maintenant, si tu as un peu de jugeotte tu trouveras certainement comment adapter le code, ca te prendra 2 minutes si tu sais le lire, un peu plus si tu dois consulter l'aide, mais tu apprendras de cette maniere.
 

Statistiques des forums

Discussions
312 231
Messages
2 086 449
Membres
103 213
dernier inscrit
Poupoule