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 SubIl 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 SubLes 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 SubJ'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.Deleteet
Then WsStock.Range("B" & J & ":M" & J).Delete shift:=xlShiftUpPar 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
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").SelectErreur 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 ^^