Excel : classement selon la date
bobo8388
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
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
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
-
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. -
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 -
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 -
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!!!-
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
-
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
Pour la partie remplacer j'ai ajouter le code.. pas besoin de perdre du temps la dessus
Merci