[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.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #25343542
Bonjour,

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
---------------------------------------------------------------
Baton .rouge
Le #25343632
On Mon, 15 Apr 2013 13:40:55 -0400, "MichD" wrote:

Bonjour,

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.
Baton .rouge
Le #25343662
On Mon, 15 Apr 2013 20:22:31 +0200, Baton .rouge wrote:

On Mon, 15 Apr 2013 13:40:55 -0400, "MichD" wrote:

Bonjour,

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
Baton .rouge
Le #25343652
On Mon, 15 Apr 2013 20:22:31 +0200, Baton .rouge wrote:

On Mon, 15 Apr 2013 13:40:55 -0400, "MichD" wrote:

Bonjour,

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 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
MichD
Le #25343762
Pour connaître le nombre de jours du mois de janvier
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
---------------------------------------------------------------
Baton .rouge
Le #25345812
On Mon, 15 Apr 2013 15:22:14 -0400, "MichD"
Pour connaître le nombre de jours du mois de janvier
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.
Publicité
Poster une réponse
Anonyme