automatisation d'un process. Trier des données

garrec

XLDnaute Occasionnel
Bonjour,

J'essaye de tirrer des informations d'un onglet appelé "daily equity" à un autre "All"

En fait il faudrait que la macro selectionne la date de la veille (dans daily equity) puis inscrit toute les lignes (de A à Y) comportant cette date dans l'onglet All (en valeur).

Sauf que cela se corse un peu :) En fait dans All il y a une forme a respecter. Comme vous pouvez le voir dans le fichier il y a 4 lignes grises, puis blanches, puis grises, puis blanches ect ect :)

Dans la premiere plage de couleur grise on va copier coller en valeur la 1ere ligne de l'onglet daily equity comportant la date de la veille. Puis en dessous on collera la 2eme

SAUF si 1) le nom de la société change dans l'onglet daily equity (colonne D)
2) ou la transaction change (buy sell) colonne G
3) ou le prix d'execution change colonne P

Dans ces 3 cas on passe à la plage de couleur précedente (blanche ci on était sur un grises, grises si on était sur une blanche :))

J'ai fais un macro que voici et j'ai aussi joint mon fichier. Il ya l'onglet daily equity et un onglet All pour vous montrer ce que fais ma macro et un onglet All2 pour montrer ce que j'aimerais bien obtenir


Jsp que j'ai été clair :confused:

Code:
Function classement(sel_ou_buy As String)
    Application.ScreenUpdating = False
    ' Ici on va rechercher la 1ere bande libre dans le sheets "All"(grise ou blanche on s'en fou)
    Dim ligne As Long, veille As Date, i As Long
    For i = 13 To Sheets("All").Range("A" & Rows.Count).Row Step 4
        If Sheets("All").Range("A" & i) = "" Then
            ligne = i
 
            Exit For
        End If
    Next
 
    'Maintenant on va trier le sheets("Daily Equity")
    'tout dabors on determine la veille
    veille = Format(CDate(Date - 1), "mm/dd/yyyy")    ' et voila
    MsgBox veille
    'maintenant on va chercher les lignes avec cette date et qui on "Sell" ou "Buy" en colonne "G"
    With Sheets("Daily Equity")
 
        'trie des ligne avec "Sell"
        For Each cel In .Range("A1:A" & .Range("A" & .Rows.Count).End(xlUp).Row)
            'on va prendre les 10 1ers caractere dans la cel dans la colonne A
            datecel = Left(cel.Text, 10)
            'si la date =veille et la cellule g de la meme ligne = la variable "sel_ou_buy" qui a été instruite dans la sub classementsellbuy
            If datecel = veille And .Range("G" & cel.Row) = sel_ou_buy Then
                'si c'est bon on copie la ligne complete
                cel.EntireRow.Copy
                Sheets("All").Select
                'on colle dans le sheets("All") dans la 1ere ligne de la premiere bande libre que l'on a trouver en debut de fonction
                Rows(ligne & ":" & ligne).Select
                ActiveSheet.Paste
                'on ajoute un a la variable ligne pour la suite
                ligne = ligne + 1
            End If
 
        Next
    End With
 
End Function 



Sub classementsellbuy()
    classement "Sell"
    classement "Buy"
End Sub

Merci d'avance
 
Dernière édition:

Discussions similaires

Réponses
1
Affichages
285

Statistiques des forums

Discussions
294 039
Messages
1 935 783
Membres
187 447
dernier inscrit
Harvedo