Excel : classement selon la date

Bonjour,

Je souhaiterais soit par VBA ou par fonctions classer des évenements selon leur date.

Sur une feuille j'ai une liste d'évenements :

en colonne A le nom de l'évenement
en colonne B la date à laquelle il a lieu.

sur une autre feuille j'ai :
en A1 Lundi 11 Avril
En B1 Mardi 12 Avril
et ainsi de suite.

Je souhaiterais qu'en fonction de leurs date les évennements viennent automatiquement se placer sous la date correspondante.

PS:Excel 2003.

Merci

5 réponses

  1. Pour la partie remplacer j'ai ajouter le code.. pas besoin de perdre du temps la dessus

    Merci
    0
    1. Merci cela fonctionne parfaitement.

      Si cela est possible comment modifier le code pour que il copie aussi les colonnes C et E sachant que j'ai espacé les dates en feuille deux pour pouvoir celler ces valeurs.

      Est il aussi possible qu'un nouveau click sur le bouton remplace les valeurs si le tableau a été actualisé au lieu de les coller a la suite?

      Merci beaucoup pour ton aide et j'espere ne pas t'en demander trop!!!
      0
      1. Modérateur
        Essaye ceci :
        Sub CollerSousDate()
        Dim tabloDat() As Date 'EDIT : semble mieux fonctionner comme ça!
        Dim Col As Integer, Lign As Long, Derlign As Long
        
        With Sheets(2)   'Ici liste toutes les dates en ligne 1 de la feuille2 (à adapter)
        ReDim tabloDat(.UsedRange.Columns.Count - 1)
            For Col = 1 To .UsedRange.Columns.Count
                If .Cells(1, Col) = "" Then
                Else
                    tabloDat(Col - 1) = CDate(Right(.Cells(1, Col), Len(.Cells(1, Col)) - InStr(1, .Cells(1, Col), " ")))
                End If
            Next
        End With
        With Sheets(1)   'va chercher les événements adapter nom de la feuille
            For Lign = 1 To .UsedRange.Rows.Count
                For Col = 0 To UBound(tabloDat)
                    If tabloDat(Col) = .Cells(Lign, 2) Then
                        Derlign = Sheets(2).Cells(65536, Col + 1).End(xlUp).Offset(1, 0).Row
                        Sheets(2).Cells(Derlign, Col + 1) = .Cells(Lign, 1).Value
                        Sheets(2).Cells(Derlign, Col + 2) = .Cells(Lign, 3).Value
                        Sheets(2).Cells(Derlign, Col + 3) = .Cells(Lign, 5).Value
                        Exit For
                    End If
                Next Col
            Next Lign
        End With
        End Sub
        0
    2. Merci lalalie3 mais une recherchev ne peut fonctionner car plusieurs evennements pour une meme date.

      Merci Pijaku j'essaye ton code tout de suite et je te reviens.

      Merci
      0
      1. Modérateur
        Bonjour,
        J'espère que les dates en Feuil1 et Feuil2 sont au même format... Le cas échéant, cette macro devrait fonctionner : [Adapter le numéro ou le nom des feuilles]
        Sub CollerSousDate()    
        Dim tabloDat() As Date 'EDIT : semble mieux fonctionner comme ça!    
        Dim Col As Integer, Lign As Long    
        
        With Sheets(2)   'Ici liste toutes les dates en ligne 1 de la feuille2 (à adapter) 
        ReDim tabloDat(.UsedRange.Columns.Count - 1)    
            For Col = 1 To .UsedRange.Columns.Count    
                tabloDat(Col - 1) = .Cells(1, Col)    
            Next    
        End With    
        With Sheets(1)   'va chercher les événements adapter nom de la feuille 
            For Lign = 1 To .UsedRange.Rows.Count    
                For Col = 0 To UBound(tabloDat)    
                    If tabloDat(Col) = .Cells(Lign, 2) Then    
                        Sheets(2).Cells(65536, Col + 1).End(xlUp).Offset(1, 0) = .Cells(Lign, 1).Value    
                    End If    
                Next    
            Next    
        End With    
        End Sub

        Code à insérer dans un module standard.
        Franck P
        0
        1. Bonjour,
          Il faut dans un premier temps que la colonne de date soit en A et pas en B.
          ce sont des dates fixes ou pas ?
          Si non une rechercheV va te convenir.
          =RECHERCHEV("valeur recherchée";"zone ou plage de celulle où se trouve la valeur";"n° de la colonne où se trouve la reference recherchée;"")

          Pour toi ca devrait donner ca a peu près :
          =RECHERCHEV(A1;Feuil2!A:B;2;0)

          cette fonction n'est capable de trouver que ce qu'il y a droite d'une reference.
          0