Sur la feuille saisie une cellule "moisEnCours" qui contient la date du
premier jour du mois. Ce mois-ci c'est le 01/12/2003 ;o).
Sur la feuille "employes", une liste d'employes en range("a2:ax"), une date
d'arrivee en range("a2:ax").offset(0,5) et une date de depart en
range("a2:ax").offset(0,6).
Je voudrais copier le nom de chaque employe, contenu sur la feuille
"employes", sur la feuille saisie a deux conditions :
1- sa date d'arrivee est inferieure a la date de debut du mois en cours
2- sa date de depart ne soit pas renseignee ou est superieure a la date de
fin du mois en cours.
Voici mon code :
<code>
Sub genererLesEmployes()
Dim saisieSh As Worksheet
Dim employeSh As Worksheet
Dim employes As Range
Dim listingEmploye As Range
Dim tempDate As Date
Application.ScreenUpdating = False
Set saisieSh = ThisWorkbook.Sheets("saisie")
Set employeSh = ThisWorkbook.Sheets("employes")
'je supprime la liste du mois passe avant de generer la nouvelle liste
saisieSh.Range("item1",
saisieSh.Range("item1").End(xlToRight).Offset).ClearContents
set listingEmploye = employeSh.Range("a2",
employeSh.Range("a2").End(xlDown).Offset)
For Each employes In listingEmploye
tempDate = Range(employe).Offset(0, 5).Value 'je veux recuperer la date
d'arrivee afin de faire ma comparaison avec le mois en cours mais
'la excel me dit objet requis en surbrillant "tempDate"
'ben ca bloque deja la, alors j'ai pas encore fais le reste du code ;o)
Next employes
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
AV
A adapter : Etiquettes de colonnes en A1:C1 "moisEnCours" est une plage nommée contenant la formule/date du 1° jour du mois Les Noms d'employés en A1:Ax Dates d'arrivée en B2:Bx Dates départ en C2:Cx
E1 est vide En E2 : =(B2<moisEnCours)*((C2="")+(C2>DATE(ANNEE(moisEnCours);MOIS(moisEnCours)+1;0)))
Filtre élaboré avec zone de critères E1:E2 Un coup d'enregistreur de macros si tu veux du vba ou renviens demander.
AV
A adapter :
Etiquettes de colonnes en A1:C1
"moisEnCours" est une plage nommée contenant la formule/date du 1° jour du mois
Les Noms d'employés en A1:Ax
Dates d'arrivée en B2:Bx
Dates départ en C2:Cx
E1 est vide
En E2 :
=(B2<moisEnCours)*((C2="")+(C2>DATE(ANNEE(moisEnCours);MOIS(moisEnCours)+1;0)))
Filtre élaboré avec zone de critères E1:E2
Un coup d'enregistreur de macros si tu veux du vba ou renviens demander.
A adapter : Etiquettes de colonnes en A1:C1 "moisEnCours" est une plage nommée contenant la formule/date du 1° jour du mois Les Noms d'employés en A1:Ax Dates d'arrivée en B2:Bx Dates départ en C2:Cx
E1 est vide En E2 : =(B2<moisEnCours)*((C2="")+(C2>DATE(ANNEE(moisEnCours);MOIS(moisEnCours)+1;0)))
Filtre élaboré avec zone de critères E1:E2 Un coup d'enregistreur de macros si tu veux du vba ou renviens demander.
AV
Ellimac
Bonjour,
Une solution :
For Each employes In listingEmploye tempDate = employes.Offset(0, 5).Value tempdate2 = employes.Offset(0, 6).Value If tempDate < saisieSh.Range("moisencours") And _ (tempdate2 = "" Or tempdate2 > saisieSh.Range ("moisencours")) Then saisieSh.Range("a65000").End(xlUp).Offset(1, 0) = employes End If Next
Camille
-----Message d'origine----- bonjour humide a tou(te)s,
Mon probleme du jour est le suivant :
Une feuille "saisie" et une feuille "employes".
Sur la feuille saisie une cellule "moisEnCours" qui contient la date du
premier jour du mois. Ce mois-ci c'est le 01/12/2003 ;o).
Sur la feuille "employes", une liste d'employes en range ("a2:ax"), une date
d'arrivee en range("a2:ax").offset(0,5) et une date de depart en
range("a2:ax").offset(0,6). Je voudrais copier le nom de chaque employe, contenu sur la feuille
"employes", sur la feuille saisie a deux conditions : 1- sa date d'arrivee est inferieure a la date de debut du mois en cours
2- sa date de depart ne soit pas renseignee ou est superieure a la date de
fin du mois en cours. Voici mon code :
<code> Sub genererLesEmployes()
Dim saisieSh As Worksheet Dim employeSh As Worksheet Dim employes As Range Dim listingEmploye As Range Dim tempDate As Date
Application.ScreenUpdating = False
Set saisieSh = ThisWorkbook.Sheets("saisie") Set employeSh = ThisWorkbook.Sheets("employes")
'je supprime la liste du mois passe avant de generer la nouvelle liste
set listingEmploye = employeSh.Range("a2", employeSh.Range("a2").End(xlDown).Offset)
For Each employes In listingEmploye tempDate = Range(employe).Offset(0, 5).Value 'je veux recuperer la date
d'arrivee afin de faire ma comparaison avec le mois en cours mais
'la excel me dit objet requis en surbrillant "tempDate"
'ben ca bloque deja la, alors j'ai pas encore fais le reste du code ;o)
Next employes
Application.ScreenUpdating = True
End Sub </code>
Merci pour vos lumieres padbra
.
Bonjour,
Une solution :
For Each employes In listingEmploye
tempDate = employes.Offset(0, 5).Value
tempdate2 = employes.Offset(0, 6).Value
If tempDate < saisieSh.Range("moisencours") And _
(tempdate2 = "" Or tempdate2 > saisieSh.Range
("moisencours")) Then
saisieSh.Range("a65000").End(xlUp).Offset(1, 0) =
employes
End If
Next
Camille
-----Message d'origine-----
bonjour humide a tou(te)s,
Mon probleme du jour est le suivant :
Une feuille "saisie" et une feuille "employes".
Sur la feuille saisie une cellule "moisEnCours" qui
contient la date du
premier jour du mois. Ce mois-ci c'est le 01/12/2003 ;o).
Sur la feuille "employes", une liste d'employes en range
("a2:ax"), une date
d'arrivee en range("a2:ax").offset(0,5) et une date de
depart en
range("a2:ax").offset(0,6).
Je voudrais copier le nom de chaque employe, contenu sur
la feuille
"employes", sur la feuille saisie a deux conditions :
1- sa date d'arrivee est inferieure a la date de debut du
mois en cours
2- sa date de depart ne soit pas renseignee ou est
superieure a la date de
fin du mois en cours.
Voici mon code :
<code>
Sub genererLesEmployes()
Dim saisieSh As Worksheet
Dim employeSh As Worksheet
Dim employes As Range
Dim listingEmploye As Range
Dim tempDate As Date
Application.ScreenUpdating = False
Set saisieSh = ThisWorkbook.Sheets("saisie")
Set employeSh = ThisWorkbook.Sheets("employes")
'je supprime la liste du mois passe avant de generer la
nouvelle liste
For Each employes In listingEmploye tempDate = employes.Offset(0, 5).Value tempdate2 = employes.Offset(0, 6).Value If tempDate < saisieSh.Range("moisencours") And _ (tempdate2 = "" Or tempdate2 > saisieSh.Range ("moisencours")) Then saisieSh.Range("a65000").End(xlUp).Offset(1, 0) = employes End If Next
Camille
-----Message d'origine----- bonjour humide a tou(te)s,
Mon probleme du jour est le suivant :
Une feuille "saisie" et une feuille "employes".
Sur la feuille saisie une cellule "moisEnCours" qui contient la date du
premier jour du mois. Ce mois-ci c'est le 01/12/2003 ;o).
Sur la feuille "employes", une liste d'employes en range ("a2:ax"), une date
d'arrivee en range("a2:ax").offset(0,5) et une date de depart en
range("a2:ax").offset(0,6). Je voudrais copier le nom de chaque employe, contenu sur la feuille
"employes", sur la feuille saisie a deux conditions : 1- sa date d'arrivee est inferieure a la date de debut du mois en cours
2- sa date de depart ne soit pas renseignee ou est superieure a la date de
fin du mois en cours. Voici mon code :
<code> Sub genererLesEmployes()
Dim saisieSh As Worksheet Dim employeSh As Worksheet Dim employes As Range Dim listingEmploye As Range Dim tempDate As Date
Application.ScreenUpdating = False
Set saisieSh = ThisWorkbook.Sheets("saisie") Set employeSh = ThisWorkbook.Sheets("employes")
'je supprime la liste du mois passe avant de generer la nouvelle liste