disponibilité en vba

jpp1961

XLDnaute Junior
Bonjour à tous les exceliens et vbatiens,

Mes compétences en vba étant très proche de zéro, je sollicite votre aide.

J’ai un classeur comprenant
1 feuille BASE DE DONNEES
1 feuille SAISIE
1 feuille Disponibilité
Dans ma feuille Base de données j’ai une liste de noms et prénoms
Dans ma feuille de saisie j’enregistre des données avec une date de prévue et une date de fin pour un certain nombre de personne.

Dans la feuille Disponibilité j’aimerai rentré une date de début et une date de fin.
J’aimerai une macro pour extraire la liste des personnes disponible pour les dates renseignées dans la feuille Disponibilité.

Précision
Le nombre de données dans Base de données est variable pourrait contenir environ 300 noms
Le nombre de données dans saisie est évolutif

voir fichier joint
Merci d’avance à tous ceux ou toutes celles qui auront pris le temps de lme lire cette demande
 

Pièces jointes

  • extract1.xls
    32.5 KB · Affichages: 58

jpp1961

XLDnaute Junior
Re : disponibilité en vba

Salut, MichD
Je te remercie pour ta macro, cela a l'air de marcher au poil.
VBA c'est du chinois pour moi. Peux-tu n'expliquer à la grosse la procédure. Le peu que J'ai compris:
1er temps: tu effaces les anciennes données dans la Feuil3 (Disponibilité)
2ème temps: tu copies les données de la Feuil1 (BASE DE DONNEES) et tu les colles dans la Feuil3 (Disponibilité)
et ensuite???
With Feuil2
.Range("J1") = ""
.Range("J2") = "=AND(G2>=Disponibilité!C1*1,H2<=Disponibilité!C2*1)"
With .Range("D1:H" & .Range("G65536").End(xlUp).Row)
.AdvancedFilter xlFilterInPlace, Feuil2.Range("J1:J2")
End With
 

MichD

XLDnaute Impliqué
Re : disponibilité en vba

| With Feuil2
| .Range("J1") = ""
| .Range("J2") = "=AND(G2>=Disponibilité!C1*1,H2<=Disponibilité!C2* 1)"
| With .Range("D1:H" & .Range("G65536").End(xlUp).Row)
| .AdvancedFilter xlFilterInPlace, Feuil2.Range("J1:J2")
| End With

Cette section représente un filtre élaboré ayant comme critère pour effectuer le filtre une formule.
Range("J1:J2") représente la plage de cellules servant de critère.
J1 doit être vide ou avoir une étiquette qui n'est pas présente dans le tableau.
J2 reçoit la formule qui vérifie s'il y a un intervalle Date des candidats qui correspond
à la date de départ et de fin que tu as déterminée. Seuls ces candidats sont retenus par le filtre.

Après pour chacune des cellules de la plage de cellules visibles dans la plage de résultat,
Application.Match(....) la présence (la ligne) où se retrouve le candidat. Si elle le trouve, isnumeric(ligne)
cette ligne est supprimée.
 

Discussions similaires

Statistiques des forums

Discussions
312 497
Messages
2 088 994
Membres
104 000
dernier inscrit
dinelcia