[vba] recherche une plage de date dans une colonne
Le
Baton .rouge

bonjour
est il possible dans une colonne de connaitre la plage correspondant au
mois de janvier 2013 ? ou semaine 02, ou du 10/01/2013 au 23/01/2013 ?
Les dates se suivent (une par ligne)
Par contre elles sont formaté au format jj/mm/aaaa, je ne sais pas si la
recherche se fait au format cellule ou entier.
MErci de vos lumières.
est il possible dans une colonne de connaitre la plage correspondant au
mois de janvier 2013 ? ou semaine 02, ou du 10/01/2013 au 23/01/2013 ?
Les dates se suivent (une par ligne)
Par contre elles sont formaté au format jj/mm/aaaa, je ne sais pas si la
recherche se fait au format cellule ou entier.
MErci de vos lumières.
Voici un exemple si tes dates sont en colonne A
de la feuil1.
Il n'y a pas de gestion d'erreur à la procédure. Si
la date saisie n'est pas bonne, c'est évident que cela
va générer une erreur!
'------------------------------------
Sub test1()
Dim Rg As Range
Dim DateDébut As Date
Dim DateFin As Date
'10/01/2013 au 23/01/2013
'Dateserial(année,mois,jour)
DateDébut = DateSerial(2013, 1, 10)
DateFin = DateSerial(2013, 1, 23)
With Worksheets("Feuil1") 'Nom feuille à adapter
Set Rg = .Range("A1:A" & .Range("A65536").End(xlUp).Row)
x = Application.Match(CLng(DateDébut), Rg, 0)
y = Application.Match(CLng(DateFin), Rg, 0)
Set Plg = .Range("A" & x & ":A" & y)
End With
MsgBox "L'adresse de la plage recherchée est : " & Plg.Address
End Sub
'------------------------------------
MichD
---------------------------------------------------------------
Perfect/adapte, je teste ça demain
Merci.
Pour le lundi du numéro de semaine demandé :
http://groupes.codes-sources.com/article-date-lundi-fonction-semaine-153599.aspx
Function LUNDI(annee As Integer, NumSemaine As Integer) As Double
'mpfe B Mazas
'retourne la date du lundi de la semaine n° "NumSemaine" (ISO) de l
'année
"Annee"
Dim PremierJour As Date
PremierJour = DateSerial(annee, 1, 1)
If Weekday(PremierJour) = 6 Or Weekday(PremierJour) = 7 Then
'si le 1er janvier tombe un vendredi ou un samedi
PremierJour = PremierJour - Weekday(PremierJour) + 2
Else
PremierJour = PremierJour - Weekday(PremierJour) - 5
End If
LUNDI = PremierJour + 7 * NumSemaine
End Function
Pour le nombre de jour du mois demandé :
http://www.excel-pratique.com/fr/astuces_vba/nb_jours_dans_mois.php
Sub nb_jours_mois()
'Une date quelconque pour cet exemple
date_test = CDate("6/2/2012")
'Mois / année de la date
mois = Month(date_test)
annee = Year(date_test)
'Calcul du premier jour du mois suivant
date_mois_suivant = DateSerial(annee, mois + 1, 1)
'Date du dernier jour
dernier_jour_mois = date_mois_suivant - 1
'Nombre de jour dans le mois (= dernier jour)
nb_jours = Day(dernier_jour_mois)
End Sub
En fait l'année importe peu... et le jour est toujours 0
Il suffit d'ajouter 1 au mois désiré.
MsgBox Day(DateSerial(2013, 1 + 1, 0))
MichD
---------------------------------------------------------------
Merci de ton aide, tes exemples m'ont beaucoup été utile.