Créer des alertes sur une cellule et plus ...

Résolu
Bonjour a tous,

Actuellement je travaille sur un tableau que je partage sur un espace de partage avec plusieurs personnes.

Ce tableau doit être consulté assez régulièrement par les autres personnes mais il contiendra beaucoup de données.

Je souhaiterai :

* Créer une alerte sur une cellule en particulier
C'est-à-dire : j'inscris dans cette cellule (par exemple : M34) une information importante pour le salarié Dupont.
Lorsque Dupont ouvrira le tableau depuis son ordi j'aimerai qu'un message d'alerte s'affiche lui indiquant qu'il a un message important et s'il clique sur le message ça le renvoit directement à M34.

Je ne sais pas si ce procédés est réalisable mais je suis ouverte à toutes propositions qui me rapprochera du résultat souhaité.

* Faire clignoté une cellule.
J'ai essayé se système avec VBA mais je n'ai toujours pas réussi, je serai intéressé si quelqu'un pouvait m'expliquer en détail le procédés pour faire clignoter une cellule (par exemple M34)

Bonne journée à tous,
Bizouille 33

14 réponses

  1. je suis ouverte à toutes propositions

    C'est dangereux, ce que tu écris là...

    Comme tu personnalises les messages suivant le destinataire, Excel doit pouvoir distinguer qui ouvre le fichier, donc, en plus de l'activation des macros, il faut que tes collègues aient un nom d'utilisateur spécifique.

    Le principal écueil est celui du UserName. Vois ceci puis adapte (ajout de If...) :
    Private Sub Workbook_Open()
        MsgBox Environ("UserName")
    End Sub


    A+
    0
    1. Bonjour Bizouille,

      le clignotement ne pose aucun problème, par contre si j'ai bien compris tu veux faire clignoter une cellule en fonction de la personne qui ouvre le fichier, cela se complique quelque peu.
      pour que cela fonctionne comme cela je vois à l'ouverture du fichier une inputbox dans laquelle le responsable de l'ouverture du fichier saisi non pas son nom qui peut être facilement usurpé, mais un code qui lui est propre et là à partir de sa saisie sélectionner ou faire clignoter ce que l'on veut

      A+
      Mike-31

      Une période d'échec est un moment rêvé pour semer les graines du savoir.
      0
      1. Non je ne cherche pas forcément à faire clignoter une cellule en fonction de la personne qui ouvre le fichier, mes connaissances seront un peu justes pour me lancer dans ces démarches.

        J'aimerai qu'à l'ouverture du fichier les cellules contenant un message important soit repérable de suite
        0
        1. Re,

          Alors pour faire simple clic droit sur l'onglet de ta feuille/visualiser le code cela ouvrira le visual basic
          sur la gauche tu verras l'explorateur de projet, recherche la Thiswokbook, double clic ou clic droit et Code
          dans la feuille blanche qui s"ouvre colle ce code

          Private Sub Workbook_Open()
          [M34].Select
          End Sub

          revient sur la feuille Excel soit en cliquant sur l'icône de la barre des taches ou en haut à gauche sur l'icône Excel de la barre d'outils
          enregistre le fichier et ferme le, à l'ouverture la cellule M34 se sélectionnera
          0
          1. Merci Mike31

            Mais je souhaiterai vraiment que ça clignote comme tu expliquais dans une discussion à partir de laquelle j'ai pris contact avec toi
            0
        2. Re,

          regarde ton avant dernier post
          "Non je ne cherche pas forcément à faire clignoter une cellule en fonction de la personne qui ouvre le fichier, mes connaissances seront un peu justes pour me lancer dans ces démarches"

          dans la soirée je t'écrit le code pour la cellule M34 si elle contient un message
          0
          1. Salut Mike,

            Si j'ai bien compris c'est le "en fonction de la personne" qui est facultatif.
            Donc si message important il y a, clignotement pour tout le monde (j'aurais plutôt vu un MsgBox, mais bon...).

            A+
            0
        3. Re,

          commence par créer un module dans le visual basic (Insertion/Module)
          dans le module colle ce code

          Dim BlinkTime As Date

          Public Sub Cellule_Clignote()
          If [M34].Interior.ColorIndex = xlNone Then
          If [M34].Value <> "" Then
          [M34].Interior.ColorIndex = 3
          Else
          [M34].Interior.ColorIndex = 0
          End If
          Else
          [M34].Interior.ColorIndex = 0
          End If
          BlinkTime = Now() + TimeValue("00:00:01") 'le temps du clignotement
          Application.OnTime BlinkTime, "Cellule_Clignote"
          End Sub
          Sub ArretClignotement()
          On Error Resume Next
          Application.OnTime BlinkTime, "Cellule_Clignote", , False
          [M34].Interior.ColorIndex = 0
          End Sub

          toujours dans le visual ouvre la Thiswokbook et colle ces deux codes (1 pour lancer le clignotement à l'ouverture du fichier et 1 pour stopper le clignotement à la fermeture

          Private Sub Workbook_Open()
          Cellule_Clignote
          End Sub

          Private Sub Workbook_BeforeClose(Cancel As Boolean)
          ArretClignotement
          End Sub

          si tu dois travailler sur le fichier il serait judicieux de compléter ces codes pour stopper le clignotement lorsqu'on quittera la feuille et le relancer lorsqu'on y reviendra mais on verra plus tard
          0
          1. Super Mike ça marche merci !

            Autres choses, sur VBA j'avais déjà insérer un code, dans thisworkbook, pour qu'il y est un message d'alerte à l'ouverture du fichier :

            Private Sub Workbook_Open()
            MsgBox "Message important pour ... "
            End Sub

            Seulement lorsque je rajoute tes codes sur thisworkbook, cela m'affiche :

            "Erreur de compilation, nom ambigu détecté : Workbook_Open"

            Cela signifie que je ne peux pas faire fonctionner l'alerte et le clignotement en même temps ou l'un après l'autre ?

            Une dernière question par curiosité : tous ces codes tu les écris toi même ou tu les trouves quelque part ?
            Car j'aimerai apprendre à bien utiliser VBA et pour l'instant je ne fais que copier des codes, ça m'aide c'est sur et je t'en remercie grandement ! Mais j'aimerai être capable de me débrouiller seule la prochaine fois.
            0
            1. Bonjour,

              L'erreur, c'est parce qu'il y a deux procédures qui ont le même nom.
              Si tu veux faire les deux actions, il ne faut plus qu'une procédure Workbook_Open, tu commences par le MsgBox puis tu mets le code de Mike.

              A+
              0
          2. Re,

            Il ne peut y avoir qu'un code sous la rubrique
            Private Sub Workbook_Open()

            donc il faut compiler. remplace l'ancien code sous cette rubrique par

            Private Sub Workbook_Open()
            MsgBox "Message important pour ... "
            Cellule_Clignote
            End Sub

            mais tu peux afficher et déclencher la procédure que s'il y a un message en M34

            exemple

            Private Sub Workbook_Open()
            if [M34]<>"" then
            MsgBox "Message important pour ... "
            [M34].select
            Cellule_Clignote
            end if
            End Sub

            0
            1. Vraiment merci Mike c'est exactement ce que je voulais !

              Juste une chose, tu n'as pas répondu à ma question dans mon dernier commentaire sur : comment tu trouvais / créais les codes ?
              0
            2. Dernière question: je peux faire clignoter plusieurs cellules en même temps ?
              0
          3. Re,

            Comment je trouvais les codes, déjà les avoir étudié pour les comprendre et les écrire et les adapter, ensuite être curieux et aimer se torturer les neurones pour se mesurer à cette merveilleuse application Excel.

            pour appliquer le code à plusieurs cellules, pas de problème mais un code VBA est très précis et contrairement à une formule il ne s'adapte pas automatiquement, il faut l'écrire alors dans ton cas il faut nous donner tous les paramètres, sur quelles cellules doit s'adapter le code et sur quel critère
            0
            1. C'est la 1ere fois que j'utilise VBA et ses codes mais je commence à en saisir le fonctionnement et aussi à l'apprécier ! Faudra que je trouve comment apprendre les codes par contre.

              Alors pour le clignotement de plusieurs cellules :

              J'inscris un message en D4 et aussi en D16, ce sont 2 messages importants et j'aimerais qu'elles clignotent toutes les deux.
              Puis lors de l'utilisation du tableau dans le temps je serai amener à inscrire 3,4 messages importants dans la colonne D; mais je suppose que si tu m'expliques comment faire clignoter 2 cellules en même temps je pourrais l'adapter pour faire clignoter 3 ou 4 cellules en même temps non ?
              0
          4. Re,

            Il faut faire une boucle, je te prépare le code
            0
            1. La cellule qui clignote, clignote en rouge.

              Lorsque je serai faire clignoter plusieurs cellules en même temps, est-ce possible que chaque cellule clignote d'une couleur et non pas toute en rouge?

              Encore merci Mike pour ton aide et pour le temps que tu m'accordes.
              0
          5. Re,

            pour faire simple pour tes débuts en VBA, dans le module tu as ces codes

            Dim BlinkTime As Date

            Public Sub Cellule_Clignote()
            If [M34].Interior.ColorIndex = xlNone Then
            If [M34].Value <> "" Then
            [M34].Interior.ColorIndex = 3
            Else
            [M34].Interior.ColorIndex = 0
            End If
            Else
            [M34].Interior.ColorIndex = 0
            End If
            BlinkTime = Now() + TimeValue("00:00:01") 'le temps du clignotement
            Application.OnTime BlinkTime, "Cellule_Clignote"
            End Sub
            Sub ArretClignotement()
            On Error Resume Next
            Application.OnTime BlinkTime, "Cellule_Clignote", , False
            [M34].Interior.ColorIndex = 0
            End Sub

            remplace les par ce code qui est en fait est le même avec un rajout que j'ai inséré en gras pour mieux comprendre et gérer la cellule D16, il faudra faire la même chose pour d'autre cellule

            Dim BlinkTime As Date

            Public Sub Cellule_Clignote()
            If [D4].Interior.ColorIndex = xlNone Then
            If [D4].Value <> "" Then
            [D4].Interior.ColorIndex = 3
            Else
            [D4].Interior.ColorIndex = 0
            End If
            Else
            [D4].Interior.ColorIndex = 0
            End If

            If [D16].Interior.ColorIndex = xlNone Then
            If [D16].Value <> "" Then
            [D16].Interior.ColorIndex = 3
            Else
            [D16].Interior.ColorIndex = 0
            End If
            Else
            [D16].Interior.ColorIndex = 0
            End If


            BlinkTime = Now() + TimeValue("00:00:01") 'le temps du clignotement
            Application.OnTime BlinkTime, "Cellule_Clignote"
            End Sub

            Sub ArretClignotement()
            On Error Resume Next
            Application.OnTime BlinkTime, "Cellule_Clignote", , False
            Range([D4], [D16]).Interior.ColorIndex = 0
            End Sub

            Maintenant si tu veux voir des codes plus techniques et plus condensés pas de problème, mais je te conseille de ne pas aller trop vite

            A+
            Mike-31

            Une période d'échec est un moment rêvé pour semer les graines du savoir.
            0
            1. Ah flute j'ai mis la même couleur dans les alertes, quelle couleur veux-tu pour D4, D16 etc
              0
            2. Merci Mike et pas grave pour le couleur !

              Si possible :
              - rouge en D4
              - Bleu en D5
              - vert en D6
              - Gris en D7
              - Jaune en D8

              Comment se lit la couleur dans les codes ?
              0
          6. Re,

            Mais tes cellules sont contiguës, dans ce cas il est possible d'écouter le code à part que tu envisage de faire clignoter des cellules non contiguës dans d'autres colonnes ou lignes espacées
            0
            1. Les cellules citées sont un exemple, à la longue elles ne seront pas forcément contiguës mais toujours dans la colonne D.

              Avoir différente couleurs seraient un plus, si tu n'as pas le temps ou l'envie tu peux laisser tomber, tu m'as déjà beaucoup aidé !
              0
          7. Re,

            colonne A feuil 1 tu as les couleurs et l'index couleur mais il y en a d'autres

            teste le fichier exemple

            https://www.cjoint.com/c/DCuoZR28vqA
            0
            1. Merci Mike t'as répondu à toutes mes questions, et je suis super contente du tableau ! Merci de ton aide !

              Je vais me mettre sérieusement à étudier les codes à l'avenir.

              Encore merci !
              0
          8. Re,

            Ah dans la Thiswokbook j'ai oublié de replacer la msgbox

            Private Sub Workbook_Open()
            MsgBox "Message important pour ... "
            Call Cellule_Clignote
            [D4].Select
            End Sub

            je passe le statut de la discussion en résolu, ce qui n'empêchera pas éventuellement d'y revenir
            0