Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

VBA supprimer cours de bourse

  • Initiateur de la discussion Initiateur de la discussion charly120
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

C

charly120

Guest
Bonjour,

J'ai un fichier Excel de près de 900 000 lignes qui comprends des cours de bourse d'une action (carrefour) pendant 1 an sachant qu'il y a a peu près un cours toutes les 3s...

Je souhaiterai garder uniquement les deux derniers cours de bourse de chaque journée et donc supprimer tout les cours précédent. Pour chaque date garder les deux derniers.

et donc avoir à la fin un fichier sur un an regroupant par jour les deux derniers cours

Merci de votre aide.
 
Re : VBA supprimer cours de bourse

Bonjour Charly et bienvenu, bonjour le forum,

Comme tu es nouveau parmi nous je te recommande de lire la
Lien supprimé qui donne tous les bons plans pour obtenir de l'aide rapidement. Dans ton cas ce qui manque cruellement c'est un petit fichier exemple...
 
Re : VBA supprimer cours de bourse

Merci de ce rapide retour

En réalité cela ne change pas beaucoup pour mon problème mais les deux cours sont différents car il s'agit du dernier cours coté et du fixing de clôture.
Je dois impérativement garder uniquement les deux derniers cours pour chaque journée (A peu près 4000 cours par jour) j'ai un fichier excel avec une première colonne les dates, une seconde les horaire et la troisième les cours

Extrait de mon fichier en pièce jointe

Merci
 

Pièces jointes

Re : VBA supprimer cours de bourse

Bonjour le fil, bonjour le forum,

Essaie comme ça :

Code:
Sub Macro1()
Dim dl As Integer 'déclare la variable dl (Dernière Ligne)
Dim pl As Range 'déclare la variable pl (PLage)
Dim dico As Object 'déclare la variable dico (DICtiOnnaire)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim temp As Variant 'déclare la variable temp (tableau TEMPoraire)
Dim i As Integer 'déclare la variable i (Incrément)
Dim j As String 'déclare la variable j (Jour)
Dim m As String 'déclare la variable m (Mois)
Dim a As String 'déclare la variable a (Année)
Dim crit As String 'déclare la variable crit (CRITère)
Dim nb As Integer 'déclare la variable nb (NomBre de valeurs)

Application.ScreenUpdating = False 'masque les rafraîchissements d'écran
With Sheets("Sheet1") 'prend en compte l'onglet "Sheet1"
    dl = .Cells(Application.Rows.Count, 2).End(xlUp).Row 'définit la dernière ligne éditée dl de la colonne 2(=B)
    Set pl = .Range("B2:B" & dl) 'définit la plage pl
End With 'fin de la prise en compte de l'onglet "Sheet1"
Set dico = CreateObject("Scripting.Dictionary") 'définit le dictionnaire dico
For Each cel In pl 'boucle sur toutes les cellules cel de la plage pl
    dico(cel.Value) = "" 'alimente le dictionnaire dico
Next cel 'prochaine cellule de la boucle
temp = dico.keys 'récupère le dictionnaire sans doublons dans le tableau temporaire temp
For i = 0 To UBound(temp, 1) 'boucle sur tous les éléments (uniques) du tableau temp
    If temp(i) = Date Then Exit Sub 'si la valeur temp(i) est égale à la date du jour, sort de la procédure
    j = CStr(Split(temp(i), "/")(0)) 'définit le jour j
    m = CStr(Split(temp(i), "/")(1)) 'définit le mois m
    a = CStr(Split(temp(i), "/")(2)) 'définit l'année a
    crit = m & "/" & j & "/" & a 'définit le critère crit
    Range("A1").AutoFilter 'active le filtre automatique
    'filtre la colonne 2 (=B) par rapport au critère crit
    Range("A1").AutoFilter Field:=2, Operator:= _
        xlFilterValues, Criteria2:=Array(2, crit)
    nb = pl.SpecialCells(xlCellTypeVisible).Cells.Count 'définit le nombre de fois que le critère crit apparaît
    'si nb est supérieur à deux, supprime toutes les lignes sauf les deux dernières
    If nb > 2 Then Range(pl.SpecialCells(xlCellTypeVisible)(1), pl.SpecialCells(xlCellTypeVisible)(nb - 2)).EntireRow.Delete
    Range("A1").AutoFilter 'annule le filtre automatique
Next i 'prochain élement de la boucle
Application.ScreenUpdating = True 'affiche les rafraîchissements d'écran
End Sub
 
Re : VBA supprimer cours de bourse

Re, bonjour Robert🙂

une autre approche :
Code:
Option Explicit
Sub test()
Dim i As Long, f As Boolean
Application.ScreenUpdating = False
For i = Range("A65536").End(xlUp).Row - 2 To 2 Step -1
    If Cells(i + 1, 2) And Cells(i + 2, 2) = Cells(i, 2) Then Rows(i).Delete
Next i
Application.ScreenUpdating = True
End Sub
bon après midi
@+
 
Re : VBA supprimer cours de bourse

Bonjour Charly, Pierrot, Robert

Une autre approche que mes prédécesseurs 🙂. Tu peux tester cette macro (j'ai préféré transférer dans une autre feuille pour vérifier):

Code:
Public NSCopie, n, P
Sub Extrait_2_derniers_Cours()
Sheets.Add
P = 2
NSCopie = ActiveSheet.Name
ActiveSheet.Next.Select
derl = Range("b" & Rows.Count).End(xlUp).Row
For n = 2 To derl
If Cells(n, 2) <> Cells(n + 1, 2) Then copie
suite:
Next
End Sub
Sub copie()
Stop
Rows(n - 1 & ":" & n).Copy Destination:=Sheets(NSCopie).Rows(P & ":" & P): P = P + 2
End Sub
 
Re : VBA supprimer cours de bourse

Super, merci beaucoup, tout fonctionne très bien j'ai maintenant un fichier clair et intéressant pour travailler!!

Je ne veux pas abuser mais si certains financier peuvent encore m'aider je dois mettre en place une stratégie (logiciel) de trading au moyen d'outils d'analyse technique, ce serait top.
en détectant les signaux d'achat et de vente sur les titres de 5 actions composant une année donnée.

le logiciel doit etre sous la forme d'un formulaire Excel dont l'utilisateur doit choisir une date de l'année (2008) pour laquelle le systeme lui proposera ses recommandation (car plusieurs actions) à partir des indicateurs techniques.

après l'utilisateur devra choisir la stratégie, indiquer la durée sur laquelle il veut investir ainsi que la perte maximale qu'il souhaite. Puis visionner un graphique de l'évolution hebdomadaire du P&L de la stratégie choisit!!

Merci encore

Bonne soirée
 
Re : VBA supprimer cours de bourse

Bonsoir charly120, J'ai un projet similaire a faire et je suis bloquée depuis un mois. Étant donné que vous avez déjà réalisé ce projet, je vous serai très reconnaissante si vous pouvez m'aider.

Merci d'avance

Bonne soirée
 
Re : VBA supprimer cours de bourse

Bonjour Ryasmine,

Je crains que Charly120 ne reponde jamais: il n'a posté que 6 messages et tous en mars 2013...

ceci dit, je te conseille de lire la réponse qui lui avait été faite:


Elle reste d'actualité.


Bernard
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
316
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…