Extraire des données uniquement entre deux dates

Bonjour le forum,

J'essaye par tout les moyens de trouver quelque chose pour extraire mes données de mes plannings pour renseigner mes mois uniquement dans la période concerné mais n'y arrive pas et me retrouve coincée.

Je cherche comment faire par une recherche de salarié avec un nb.si entre deux dates.

Je vous remercie de l'aide que vous voudriez bien m'apporter.

Bonjour,

quelques remarques préalables :

  • tu travailles par tableaux, c'est très bien, mais inutile de rajouter des lignes vierges !
  • tu as créé un base de données, là aussi c'est parfait, mais pourquoi tu n'utilise pas soit un TCD soit un filtre avancé pour ensuite extraire une partie des données ?

exemple d'une extraction entre 2 dates

1'418extraction-mois.xlsx (13.54 Ko)

Bonjour Steelson,

Je te remercie pour ton aide, peux-tu m'expliquer un peu plus en détail pour que je puisse l'adapter en fonction. Par contre pour les TCD ou filtre avancé, je ne sais pas faire, je suis vraiment novice.

Merci beaucoup

Voici ...

La zone des critères est composée de 2 lignes qui signifient OU l'un OU l'autre (attention, dans un filtre les dates doivent être en valeur entière, pas de jj/mm/aaaa)

  • la première ligne signifie : date d'entrée inférieure à la date de fin de période et sans date de sortie (vide s'écrit '= avec une apostrophe)
  • la seconde ligne signifie date de sortie inférieure à la date de fin de mois mais sup à la date de début de période

Ensuite il faut faire Données > Filtre avancé comme indiqué sur la copie d'écran (cela peut faire l'objet d'une macro simple car c'est un peu enquiquinant de le faire la main)

capture d ecran 246

Je te remercie infiniment pour tes explications qui me permettent de comprendre. Par contre dans ma version excel, je n'ai pas le filtre avancé.

J'avais dis que j'étais vraiment novice en excel mais là pour le coup

Je vais m'y mettre dessus et n'hésiterai pas a revenir en en cas de problème.

par contre j'aurai une autre question, peut-on délimiter une zone bien précise lors de la sélection de cellule

Sub RTT()

Dim Cellule As Object

Dim Ctr As Integer

Application.ScreenUpdating = False

For Each Cellule In Selection

Ctr = Ctr + 1

Cellule = Ctr

Selection = "RTT"

Selection.Interior.ColorIndex = 27

Selection.Font.Bold = True

Next

Application.ScreenUpdating = True

End Sub

J'aimerai que cette zone s'applique uniquement à partir de la colonne f a ap.

Merci vraiment beaucoup

à partir de la colonne f a ap

!! c'est-à-dire ?

n'hésite pas à ouvrir un autre sujet car on s'écarte de l'extraction

T'as raison, voici ce que cela me donne :

capture 1jpg capture 2

Pour la partie ou je dois utiliser les onglets ou se trouvent les plannings annuel comment dans le filtre avancé , par le nom du salarié, la date de la période comptabiliser le nombre d'absence, maladie ect...

Avec un filtre avancé on ne pourra pas compiler des données venant de différentes sources (onglets).

Il y a 2 solutions :

  • soit en ajoutant à droite de l'extrait des tableaux faisant référence aux autres informations, en allant les chercher via SOMMEProd, je pense que c'est le plus simple
  • soit par macro

Si tous tes tableaux font référence à la même base de données BD, dans le même ordre alors la RECHERCHEV pourrait être alléger en y mettant dans la BD le numéro de ligne. MAIS ta structure à mon avis est très dangereuse car il suffirait de re-trier ta BD et toutes les infos rajoutées dans les autres colonnes de tes différents onglets se mettront en regard d'un autre individu !! Pour moi, il manque un identifiant (matricule ?) qui permettrait de s'affranchir de cet écueil.

- soit en ajoutant à droite de l'extrait des tableaux faisant référence aux autres informations, en allant les chercher via SOMMEProd, je pense que c'est le plus simple

Voilà une solution pour calculer entre 2 dates

Je préfère te donner une solution sans l'intégrer dans ton fichier déjà complexe ! et en plus cela te permet de garder entièrement la maîtrise du fichier.

Mais comme je l'ai dit, un simple tri ou une insertion d'un nouvel employé va désorganiser ton fichier et les informations ajoutées ne se retrouveront plus en face de la bonne personne !!

Je pense aussi que pour les absences tu utilises le fichier comme on utilisait jadis un papier et un crayon (ce n'est pas péjoratif) et que j'aurais volontiers proposé plutôt une liste nom | motif | du | au

122absences.xlsx (30.69 Ko)

Bonjour Steelson,

C'est vrai que cela fait école, mais il y a énormément de variable a traiter mensuellement et pour tout regrouper en un par mois pas évident non plus surtout lorsqu'on est novice en excel.

Effectivement, j'avais remarqué qu'en utilisant le filtre avancé, l'ajout ou la moindre modification n’étaient pas pris en compte et qui est bien dommage.

est- ce possible de le faire en vba et si oui juste me donner la marche a suivre pour que j'essaye de le faire ?

Ensuite ta formule avec la sommeprod marche et c'est super.

Je te remercie énormément pour le temps que tu m'accordes et de l'aide que tu m'apportes, c'est vraiment super.

Effectivement, j'avais remarqué qu'en utilisant le filtre avancé, l'ajout ou la moindre modification n’étaient pas pris en compte et qui est bien dommage.

Ensuite ta formule avec la sommeprod marche et c'est super.

Pour le filtre, il est possible de tout avoir en temps réel, je te fais cela demain dans la journée par une procédure VBA très légère et transparente. Et elle prendra aussi en compte les calculs tout en te laissant la main sur les formules.

Tu avais prévu 1000 lignes, est-ce nécessaire ? Combien y a t'il d'employés à gérer ?

Et encore une fois, il sera rigoureusement INTERDIT d'insérer, supprimer ou trier les lignes sinon toutes tes données s'écrouleront. Le mieux serait d'avoir un code unique par employé, ou se baser sur son nom à condition qu'il n'y ait pas d’homonymie !

En faite nous avons a peu près 300 salariés mais nous sommes amener a gérer des Cdd tous les mois en plus des contrats aidés.

Afin d'éviter les erreurs, un code me semble pas mal, mais comment gérer ce code car dans nos cdd, plusieurs personnes peuvent intervenir plusieurs fois au cours de l'année et voir plus. Et oui effectivement dans les noms, nous avons des homonymies.

Je te remercie pour tout

Bonne soirée

Merci pour ces précisions,

cela signifie d'ailleurs que la même personne peut donc apparaître plusieurs fois si elle a plusieurs périodes de CDD ou de détachement !

Je vais juste ajouter un n° de ligne séquentiel pour effectuer les calculs et bien se repérer dans le filtre.

J'avais zappé cette question que je n'avais pas comprise !

par contre j'aurai une autre question, peut-on délimiter une zone bien précise lors de la sélection de cellule

Sub RTT()
 Dim Cellule As Object
 Dim Ctr As Integer
 Application.ScreenUpdating = False
  For Each Cellule In Selection
    Ctr = Ctr + 1
    Cellule = Ctr
    Selection = "RTT"
Selection.Interior.ColorIndex = 27
Selection.Font.Bold = True
  Next
Application.ScreenUpdating = True
End Sub

J'aimerai que cette zone s'applique uniquement à partir de la colonne f a ap.

Oui c'est possible

jusque AP ou PQ (433ème colonne) ?

si à partir de F jusque PQ =

Sub RTT()
 Dim Cellule As Object
 Dim Ctr As Integer
  Application.ScreenUpdating = False
  For Each Cellule In Selection
    If Cellule.Column > 6 And Cellule.Column < 434 Then
      Ctr = Ctr + 1
      Cellule = Ctr
      Cellule = "RTT"
      Cellule.Interior.ColorIndex = 27
      Cellule.Font.Bold = True
    End If
  Next
Application.ScreenUpdating = True
End Sub

edit : note aussi que tu dois remplacer selection par cellule

Au passage, il y a pas mal de macros relatives aux codes d'absence.

Il est possible de toutes les remplacer par une seule :

Sub renseigner()
 Dim Cellule As Object
  Application.ScreenUpdating = False
  For Each Cellule In Selection
  If Cellule.Column > 6 And Cellule.Column < 434 Then
    Cellule = ActiveSheet.Shapes(Application.Caller).TextFrame.Characters.Text
    Cellule.Interior.Color = ActiveSheet.Shapes(Application.Caller).Fill.ForeColor.RGB
    Cellule.Font.Bold = True
  End If
  Next
  Application.ScreenUpdating = True
End Sub

Cette macro met alors dans les cellules sélectionnées le texte et la couleur du bouton !

J'ai supprimé Ctr dot je ne vois pas l'intérêt.

Bonjour,

Quelques modifs indispensables :

  • j'ai reformaté les mois dans l'onglet nomenclature de façon à avoir une liste déroulante dans l'onglet mois
  • l'onglet mois remplace tous les autres
  • le filtre est réactualisé dès que l'on affiche l'onglet ou dès que le mois est modifié, les macros sont très légères (dans la feuille mois et dans un module ajouté) car j'utilise en effet la fonctionnalité filtre avancé d'excel
  • les titres de colonnes doivent être strictement les mêmes que dans l'onglet BD ... j'ai donc modifié quelques uns (salaire et horaire), tu peux en supprimer ou en rajouter mais dans ce cas il faut modifier la macro filtrer
  • j'ai dû ajouter un repère qui est le numéro de ligne dans la BD car le filtre ne suit pas ligne à ligne la BdD étant donné qu'il s'agit d'un extrait

Je poursuis maintenant avec les valeurs calculées

Rechercher des sujets similaires à "extraire donnees uniquement entre deux dates"