Macro pour comparer des valeurs entre deux fichiers

Re bonjour Banzai,

Je pense qu'il faut deux macros, l'une qui colorie la ligne en jaune quand elle rencontre un "KI", macro qui soit "automatique", sans qu'on ait à la lancer.

Ensuite il faut changer l'autre macro, car une KI touchée dans l'historique, doit reprendre la couleur du stock, et non pas rester jaune.

C'est là la difficulté entre ces deux macros qui vont se "croiser".

Bonjour

Pour la macro ce n'est pas compliqué (reprends la partie de code que j'ai rajouté)

Le problème vient du mot "automatique", il faut savoir comment sont rentrer ces valeurs et intercepter l'évènement déclenché (Change je pense)

Un exemple de la macro qui colorise les lignes "KI" en jaune, à placer dans le module de la feuille

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim J As Long, NbLg As Long

  Application.ScreenUpdating = False
  NbLg = Range("E" & Rows.Count).End(xlUp).Row
  'Range("B4:M" & NbLg).Interior.ColorIndex = 33   ' Utile/Inutile ?
  For J = 4 To NbLg
    If Range("E" & J) = "KI" Then
      Range("B" & J & ":M" & J).Interior.ColorIndex = 6
    End If
  Next J
End Sub

Il faut penser que lors de la suppression d'une ligne cela déclenche l'événement change

une solution bloquer les événement au début de la macro et les remettre à la fin

Option Explicit

Sub Verification()
Dim Fichier As String
Dim Chemin As String
Dim WsHisto As Worksheet, WsStock As Worksheet
Dim Wb As Workbook
Dim J As Long, L As Long, NbLg As Long
Dim Ligne

  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Set WsStock = Sheets("Stock")
'.
'.
'.
  MsgBox "Terminé"
  Application.EnableEvents = True
End Sub

Les valeurs sont rentrées via un UserForm. Je pense qu'il faut donc intégrer un bout de code lorsque l'on clique sur "Valider" dans l'userform, qui va colorier la ligne si on a une "KI".

Et ensuite la macro que tu as déjà fait, et qui colorie en bleu comme le stock les KI qui sont touchées dans l'historique.

Je vais essayer ça ce soir si tu penses que ça peut fonctionner.

Merci

Bonsoir

Bien oui c'est plus simple

Lorsque tu cliques sur "valider", vérifies si c'est un "KI" et agis en conséquence

Tu peux virer les modifications précédentes

Bonjour Banzai,

Petit message pour te dire que le fichier correspond maintenant totalement à ce que j'espérais, merci encore pour ton aide précieuse .

Bonne soirée,

Duma.

Bonjour Banzai,

Je reviens sur mon projet avec de nouvelles idées, et je risque d'avoir encore besoin de ton aide !!

Mon WorkBook_Open actuel :

Private Sub Workbook_Open()

'A l'ouverture du fichier, toutes les options échues sont supprimées automatiquement

Range("B5:M65536").Sort Key1:=Range("M4"), Order1:=xlAscending, Header:=xlYes, OrderCustom:=1, Orientation:=xlTopToBottom
With Application
    .Calculation = xlCalculationManual
    .ScreenUpdating = False
    For i = Range("H65536").End(xlUp).Row To 4 Step -1
        If Cells(i, 8).Value2 < Date Then Cells(i, 8).EntireRow.Delete
    Next i
    .Calculation = xlCalculationAutomatic
    .ScreenUpdating = True
End With

'A l'ouverture du fichier, toutes les options à barrières sont testées

Dim Fichier As String
Dim Chemin As String
Dim WsHisto As Worksheet, WsStock As Worksheet
Dim Wb As Workbook
Dim J As Long, L As Long, NbLg As Long
Dim Ligne

  Application.ScreenUpdating = False
  Set WsStock = Sheets("Stock")
  Chemin = ThisWorkbook.Path & Application.PathSeparator
  Fichier = "Historique EUR-USD.xlsx"
  Application.ScreenUpdating = False
  Set Wb = Workbooks.Open(Chemin & Fichier)
  Set WsHisto = Wb.Sheets("Histo")

  NbLg = WsStock.Range("E" & Rows.Count).End(xlUp).Row

  For J = NbLg To 4 Step -1

    If WsStock.Range("E" & J) <> "-" And WsStock.Range("F" & J) <> "-" Then

 'Si une KO est atteinte, la ligne est supprimée
 'Si une KI est atteinte, la ligne prend la couleur du stock

      Ligne = Application.Match(CSng(WsStock.Range("G" & J)), WsHisto.Columns("A"), -1)
      If Not IsError(Ligne) Then
        For L = 5 To Ligne
          If WsHisto.Range("C" & L) <> "" And WsHisto.Range("D" & L) <> "" Then
            If WsStock.Range("F" & J) <= WsHisto.Range("C" & L) And WsStock.Range("F" & J) >= WsHisto.Range("D" & L) Then
              If WsStock.Range("E" & J) = "KO" Then
                WsStock.Range("B" & J & ":M" & J).Delete shift:=xlShiftUp
              Else
                WsStock.Range("B" & J & ":M" & J).Interior.ColorIndex = 37
              End If
              Exit For
            End If
          End If
        Next L
      Else
        MsgBox "date introuvable " & WsStock.Range("G" & J)
      End If
    End If
  Next J
  Wb.Close savechanges:=False

End Sub

J'ai créé un nouvel onglet (Options Echues) qui a le même format que celui du stock et j'aimerais que suite aux "tests" du Workbook_Open, les options dont la date est dépassée et celles donc la barrière désactivante "KO" est touchée ne soit plus supprimées comme actuellement mais transférées dans cet onglet stock des options échues.

Il faudrait donc remplacer les lignes :

Then Cells(i, 8).EntireRow.Delete

et

Then WsStock.Range("B" & J & ":M" & J).Delete shift:=xlShiftUp

Par un copier coller dans l'onglet Options Echues. Qu'en penses-tu mon cher Banzai ?

Je te joins le fichier actuel pour plus de visibilité.

Bonne journée

15tests.xlsm (271.73 Ko)

J'ai essayé

If Cells(i, 8).Value2 < Date Then Cells(i, 8).EntireRow.Cut
        Sheets("OptionsEchues").Select
        Cells(LigneFeuille2, 1).EntireRow.Select
        ActiveSheet.Past
        Sheets("Stock").Select

Erreur sur le ActiveSheet.Past

Je n'y arrive décidément pas, alors je refais monter malicieusement le sujet

Bonjour

Paris ne s'est pas monté en un seul jour

J'ai une difficulté avec ton fichier (voir le sujet que j'ai posté)

Laisse le temps au temps

Si je n'y arrive pas tu le sauras

Bonjour Banzai,

Pas de problème, je viens de voir ton sujet, c'est un problème de compatibilité 2003 => 2007, si j'enregistre le fichier en 2003 ça peut changer quelque chose ?

Bonjour

A voir : Fichier au format xls, tu ne devrais pas avoir de problème pour l'enregistrer au format xlsm

J'ai pu tester la première partie (elle fonctionne)

Mais pour la deuxième je ne sais comment il faut modifier le fichier pour avoir une ligne à supprimer

A toi de me dire

Bonjour Banzai,

Je viens de tester, les deux parties fonctionnent merci !

Pour info pour la seconde on peut la tester en créant une ligne dans le stock avec "KO" et une valeur qui marche dans l'historique en fonction des dates.

Par contre j'ai parfois ce message "cette image est trop grande et va etre tronquée" en fermant le fichier et d'après ce que je lis sur internet ça pourrait venir du copier coller de la macro, tu connais ce type de problème ?

Bonjour

Merci du retour

Non je ne connais pas ce message, surtout avec Excel

Le copier/coller ne génère pas (à ma connaissance) ce type de message

Si quelqu'un connait le pourquoi de ce message qu'il partage son savoir

Merci

Bonjour Banzai,

Je te sollicite à nouveau tout d'abord pour une question et si la réponse est oui pour ton expertise !!

Donc je suis toujours sur mon fichier de suivi (SuiviOptions), et j'ai ajouté le prix en colonne N.

J'ai un autre fichier nommé Premium deposit, et il faut se baser sur l'onglet "Premium Deposit Export". Ce fichier s'ouvre avec un logiciel type excel mais qui permet d'actualiser automatiquement les valeurs.

Pour pouvoir calculer le prix en colonne N, il faudrait pour chaque ligne = option, mettre le "Strike Option" de la colonne K sur le fichier SuiviOptions dans la cellule C6 de l'onglet Premium Deposit Export. Et également pour chaque ligne, mettre la date d'échéance de la colonne H dans la cellule C9 de l'onglet Premium Deposit Export.

Ceci va actualiser le fichier Premium Deposit Export, et il faudrait en extraire la valeur (qui sera un %) située soit en K8, soit en K9, soit en L8, soit en L9.

En K8 si dans la ligne du fichier SuiviOptions on a "Achat CALL" en colonne J

En K9 si dans la ligne du fichier SuiviOptions on a "Achat PUT" en colonne J

En L8 si dans la ligne du fichier SuiviOptions on a "Vente CALL" en colonne J

En K9 si dans la ligne du fichier SuiviOptions on a "Vente PUT" en colonne J

Cette valeur en % extraite arriverai dans la colonne N du Stock.

Je ne sais pas si sachant que les valeurs des cellules K8, K9, L8 et L9 s'actualisent en continu, on va pouvoir obtenir une actualisation continue dans le Stock. Je pense qu'il serait plus logique de ne faire qu'une "photographie" à chaque ouverture du fichier comme actuellement avec l'Historique.

Je te joins les fichiers. Te remerciant par avance si tu as un peu de temps pour y regarder ^^

38duma.zip (88.91 Ko)
33suivioptions.zip (257.36 Ko)
Rechercher des sujets similaires à "macro comparer valeurs entre deux fichiers"