Import selon date

Bonjour,

je souhaite trier des données importées d'autres feuilles selon la date. en clair je souhaiterai importer que les données selon une date définie car sinon je n'ai pas les données de la même journée sur la même ligne.

Merci d'avance

12test.xlsx (16.78 Ko)

Salut et bienvenue sur le Forum,

Ta demande n'est absolument pas claire. J'ai déjà tenté de la comprendre hier soir puis j'ai abandonné et ça ne m'étonne pas trop que tu n'aies toujours pas de réponse de la part d'autres membres.

Tu veux trier tes données ou les importer ? Si tu les importes, tu les importes d'où - si le fichier fourni est le fruit de tes importations - ou alors tu veux les importer où si cette étape est encore à réaliser ? Si tu veux simplement trier tes données, quel est le résultat final désiré ?

Place éventuellement sur ton fil un exemple manuel du résultat final désiré de manière automatisée.

A te relire.

Bonjour Salapt,

Bonjour Yvouille,

Si j’ai bien compris :

  • les données présentes dans la Feuil1 sont des données importées.
  • chaque ensemble de 4 colonnes correspond à une importation.
  • les données doivent être alignées suivant les dates.
Voici une solution qui utilise une collection. Les données alignées sont copiées dans la Feuil2.

Attention toutefois car les doublons ne sont pas pris en compte. Exemple avec la journée du 26/09/2012 qui apparait 2 fois dans ta liste avec des valeurs associées différentes (idem pour le 03/10/2012).

A+

24test.xlsm (26.10 Ko)

bonjour,

c'est super, et encore merci. Sans vouloir abuser je voudrai essayer de comprendre le fonctionnement des macros pour en créer moi même car je maîtrise pas. Peux tu écrire le fonctionnement général de chaque ligne ( il me semble que ça ce fait dans certain programme) pour que je puisse l'adapter si besoin.

Encore merci

Voila, voila !

Avec quelques commentaires tout devient limpide.

Pour la maitrise, il va falloir bosser un peu quand même .

Option Explicit 'impose la déclaration explicite de toutes les variables
Sub CreerListe()
'Déclaration des variables
Dim WsS As Worksheet, WsC As Worksheet 'Une feuille source et une feuille cible
Dim Plage As Range, Cel As Range, C As Range
Dim Collec As Collection
Dim Lig As Long, DerLig As Long, i As Long
Dim Col As Integer, DerCol As Integer

    Set WsS = Worksheets("Feuil1") 'Feuille source où sont copiées les données
    Set WsC = Worksheets("Feuil2") 'Feuille cible où sont collées les données
    Set Collec = New Collection 'On utilise une collection afin d'établir une liste _
    de toutes les dates (sans doublon)
    Set Plage = WsS.UsedRange 'Plage à prendre en compte (plage utilisée dans la feuille)
    DerLig = Plage.SpecialCells(xlCellTypeLastCell).Row 'Dernière ligne de la plage
    DerCol = Plage.SpecialCells(xlCellTypeLastCell).Column 'Dernière colonne  de la plage
    On Error Resume Next 'Lorsqu'on cherche à intégrer un doublon dans une collection, une erreur apparait.
    'C'est cette spécificité qui est utilisée pour établir une liste sans doublons.
    For Col = 1 To DerCol Step 4 'On balaye toutes les colonnes "Dates" de la feuille source
        For Lig = 1 To DerLig 'On balaye toutes les lignes de ces colonnes "Dates"
            'Si la cellule n'est pas vide et ne contient pas une valeur nulle
            If WsS.Cells(Lig, Col) <> "" And WsS.Cells(Lig, Col) <> 0 Then _
                'on ajoute la valeur à la collection
                Collec.Add WsS.Cells(Lig, Col), CStr(WsS.Cells(Lig, Col))
        Next Lig
    Next Col
    On Error GoTo 0 'On désactive la gestion d'erreur assurée par le programme (la gestion d'erreur est _
    alors effectuée normalement par l'application)
    For i = 1 To Collec.Count 'On balaye tous les éléments de la collection (les dates)
        'On copie la date en colonne A de la feuille cible
        WsC.Range("A" & i) = Collec.Item(i)
        'On balaye toutes les importations
        For Col = 1 To DerCol Step 4
            'Dans chaque lot importé, on recherche une date correspondant à celle de la collection
            Set C = WsS.Columns(Col).Find(WsC.Range("A" & i), , xlValues, xlWhole)
            'Si cette date existe
            If Not C Is Nothing Then
                'Alors, on copie les 3 cellules de données associées à cette date
                C.Offset(0, 1).Resize(, 3).Copy WsC.Cells(i, Col + 1)
            End If
        Next Col
    Next i
    'On libère la mémoire
    Set Plage = Nothing: Set Collec = Nothing: Set WsC = Nothing: Set WsS = Nothing
End Sub

Bonjour,

Merci et reste plus qu'à me creuser la tête,

Cordialement,

Rechercher des sujets similaires à "import date"