Alerte Excel

Résolu
zizou026 Messages postés 102 Statut Membre -  
 zizou026 -
Bonjour,
Dans un tableau Excel est-il possible de créer une alerte seulement s'il y a eu des changements provenant d'un autre classeur?
Par avance, merci de votre aide.
Cordialement Zizou026

16 réponses

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Re,

    Voici une macro pour la feuille 1 (à adapter).
    La feuille 2 est réservée pour copier les valeurs précédentes des liaisons.
    Elle peut être masquée (veryhidden)

    Les valeurs qui ont changé sont colorée en jaune (elles restent jaune, à changer manuellement).

    Option Explicit
    
    Private Sub Worksheet_Calculate()
      Call AlerteLiaison
    End Sub
    
    Private Sub AlerteLiaison()
    Const jaune As Integer = 6
    Dim cel As Range
    Dim org As Range
    Dim Liaisons As Variant
    Dim Liaison As String
    Dim ctr As Integer
    Dim ptr As Integer
    
      Liaisons = ThisWorkbook.LinkSources(xlExcelLinks)
      If Not IsEmpty(Liaisons) Then
        For ctr = 1 To UBound(Liaisons)
          Liaison = Liaisons(ctr)
          ptr = InStrRev(Liaison, "\")
          Liaison = Left(Liaison, ptr) & "[" & Mid(Liaison, ptr + 1) & "]"
          Set cel = Worksheets(1).Cells.Find(Liaison, , xlFormulas, xlPart)
          Set org = cel
          Do
            If cel Is Nothing Then Exit Do
            If cel.Value <> Worksheets(2).Range(cel.Address).Value Then
               Worksheets(2).Range(cel.Address).Value = cel.Value
               cel.Interior.ColorIndex = jaune
            End If
            Set cel = Worksheets(1).Cells.FindNext(cel)
            If cel.Address = org.Address Then Exit Do
          Loop
        Next ctr
      End If
    
    End Sub
    

    1
  2. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Re,

    http://www.cijoint.fr/cjlink.php?file=cj201103/cijg3Ep9IF.xls

    Cordialement
    Patrice
    1
  3. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Si je comprends bien, tu voudrais effacer la couleur d'alerte quand tu fermes le classeur.

    Il faut ajouter une macro EffaceAlertes dans le module :

    Public Sub EffaceAlertes()
    Const aucune As Integer = xlNone
    Dim cel As Range
    Dim org As Range
    Dim Liaisons As Variant
    Dim Liaison As String
    Dim ctr As Integer
    Dim ptr As Integer
    
      Liaisons = ThisWorkbook.LinkSources(xlExcelLinks)
      If Not IsEmpty(Liaisons) Then
        For ctr = 1 To UBound(Liaisons)
          Liaison = Liaisons(ctr)
          ptr = InStrRev(Liaison, "\")
          Liaison = Left(Liaison, ptr) & "[" & Mid(Liaison, ptr + 1) & "]"
          Set cel = Worksheets(1).Cells.Find(Liaison, , xlFormulas, xlPart)
          Set org = cel
          Do
            If cel Is Nothing Then Exit Do
            If cel.Value = Worksheets(2).Range(cel.Address).Value Then
               cel.Interior.ColorIndex = aucune
            End If
            Set cel = Worksheets(1).Cells.FindNext(cel)
            If cel.Address = org.Address Then Exit Do
          Loop
        Next ctr
      End If
    
    End Sub

    Il suffit d'ajouter l'appel à la macro dans l'évènement BeforeClose du classeur:

    Private Sub Workbook_BeforeClose(Cancel As Boolean)
      Call EffaceAlertes
    End Sub

    Tu peux aussi ajouter un bouton :

    Private Sub btnEffaceAlertes_Click()
      Call EffaceAlertes
    End Sub

    Voici un exemple :
    http://www.cijoint.fr/cjlink.php?file=cj201105/cijIqQ7s09.xls
    1
  4. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  5. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Oui
    0
  6. zizou026 Messages postés 102 Statut Membre 1
     
    Quelle est la procédure? Merci
    0
  7. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    C'est possible avec une macro, mais ce n'est pas aussi simple que ça.
    Plusieurs méthodes sont envisageables selon la quantité de liaisons externes.
    0
  8. zizou026
     
    Pour l'instant, le classeur contient 10 lignes
    0
  9. zizou026
     
    Bonjour Patrice33740, merci de votre aide ce que vous avez fait est trop génial. La formule c'est du chinois pour moi MAIS ELLE FONCTIONNE. Comme il y a pas mal de macro sur mes classeurs, je ne sais pas où les placés. Encore une fois merci de votre aide et je vous souhaite une très bonne journée. Cordialement, Zizou026
    0
  10. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Il faut placer cette macro dans la feuille 1 : Clic droit sur l'onglet de la feuille / visualiser le code.

    Si la macro Worksheet_Calculate() n'existait pas déjà, pas de problème, il suffit d'ajouter la code ci-dessus à la suite des macros existantes, sauf Option Explicit qui doit se trouver au tout début, avant les macros existantes (il devrait déjà y être déjà).

    Si la macro Worksheet_Calculate() existe déjà, il ne faut surtout pas ajouter une seconde copie, il suffit alors d'ajouter à l'intérieur de la macro existante, au début, la ligne :
      Call AlerteLiaison

    et d'ajouter uniquement le code de AlerteLiaison depuis :
    Private Sub AlerteLiaison()
    jusqu'à
    End Sub
    0
  11. zizou026
     
    Bonsoir et encore une fois merci de votre aide. Pour que ça soit plus simple est il possible d'appliquer votre formule à un bouton de commande?
    Voir fichier : http://www.cijoint.fr/cjlink.php?file=cj201103/cijH0owR0l.xls
    Je vous souhaite une excellente soirée. Cordialement Zizou
    0
  12. zizou026
     
    Bonjour Patrice33740, excusez moi de ma réponse tardive infiniment merci de votre aide et je vous souhaite un très bon weekend. Cordialement Zizou
    P.S:Simplement génial ce que vous arrivez à faire magicien (Excel)
    0
  13. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    De rien, ça n'a rien de magique, au plaisir de te relire sur le forum
    Bon Week-End
    0
  14. zizou026 Messages postés 102 Statut Membre 1
     
    Bonsoir Patrice33740, je reviens vers toi pour un autre problème dans le même classeur. TOUT D'ABORD JE TE REMERCIE. Ta formule fonctionne à merveille, j'aimerai savoir, une fois que l'alerte se déclenche est il possible? de réinitialisé le classeur à l'enregistrement de celui-ci (bien entendu que l'alerte reste active lors de l'ouverture du classeur. Par avance merci de ton aide et je te souhaite une bonne soirée. Cordialement, Zizou
    0
  15. zizou026
     
    Bonjour Patrice...Franchement tu es trop fort, c'est exactement ce que je voulais (je l'ai adapté à mes besoins). GRAND MERCI à toi. Ta formule c'est du chinois pour moi, mais j'essaie de comprendre...je pense que je vais me faire un noeud dans mon cerveau. ENCORE ET ENCORE MERCI À TOI GRAND PATRICE. C'est quoi la formation pour faire des macros? Bonne journée à toi et bonne continuation.
    0
  16. zizou026
     
    Bonjour Patrice,
    Merci pour les informations ET ENCORE MERCI POUR TON AIDE BIEN PLUS QUE PRÉCIEUX POUR MOI. Tu es bien modeste pour ta connaissance en EXCEL!!!
    0