Critère de recherche ancienneté
#1
Régulier XLPages

Inscription: 27/06/2010

Messages: 44

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2007
Posté le : 15-02-2013 11h03
Bonjour à tous,









J'ai une base de donnée qui contient mes salariés avec une date d'ancienneté.


J'ai un userform ou je rentre divers critères de recherche dans un combobox.
Je voudrais dans le critère ancienneté pouvoir saisir les salariés ayant + de 5 ans, + 10 ans, + 20 ans d'ancienneté, etc ...

Auriez-vous un code à me proposer ?

Merci d'avance.
Hors Ligne
Rapport   Haut 

Re: Critère de recherche ancienneté
#2
Accro XLPages

Inscription: 09/05/2007
De Courcelles-les-Montbéliard

Messages: 286

Système d'exploitation:
PC & Mac
Version Excel utilisée:
Mac 2004 - 2011, et PC 2003 - 2010
Posté le : 15-02-2013 12h40
Bonjour Fred, Didier, Le Forum

Je ne m'avance pas beaucoup en te disant cela, le code dépend en grande partie de ta base de donnée, de ton userform, et du résultat que tu souhaites obtenir. Donc remplace les données confidentielles (les noms, les salaires) de ton fichier supprime des données si tu en as beaucoup. Et ensuite place ton fichier contenant les données en gardant la structure et la position dans la feuille, ton userform, et  le résultat que tu souhaites.

@+jean-Marie 
Hors Ligne
Rapport   Haut 

Re: Critère de recherche ancienneté
#3
Régulier XLPages

Inscription: 27/06/2010

Messages: 44

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2007
Posté le : 15-02-2013 12h49
Bonjour Didier,

Merci de te pencher sur mon pb.

Mon fichier est bcp trop lourd même en supprimant des données.

Je peux en revanche copier le bout de code.

Merci d'avance.
Hors Ligne
Rapport   Haut 

Re: Critère de recherche ancienneté
#4
Régulier XLPages

Inscription: 27/06/2010

Messages: 44

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2007
Posté le : 15-02-2013 13h03

Didier,

Voici le bout de code :

Private Sub CmdVoir_Click()


 'statut
 If CboStatut.ListIndex <> -1 Then
 statut = CboStatut.Value
 Criteres = Criteres & "(bdd!U2 = """ & statut & """) * "
End If

'contrat
 If CboNatcontrat.ListIndex <> -1 Then
 contrat = CboNatcontrat.Value
 Criteres = Criteres & "(bdd!V2 = """ & contrat & """) * "
End If

'Affectation
 If CboAffectation.ListIndex <> -1 Then
 Affectation = CboAffectation.Value
 Criteres = Criteres & "(bdd!AE2 = """ & Affectation & """) * "
End If

'Affectation2
 If CboPortage.ListIndex <> -1 Then
 Portage = CboPortage.Value
 Criteres = Criteres & "(bdd!AF2 = """ & Portage & """) * "
End If

'Horaire contrat
 If CboHorairecont.ListIndex <> -1 Then
 Horairecont = CboHorairecont.Value
 Criteres = Criteres & "(bdd!Y2 = """ & Horairecont & """) * "
End If

'n° secu
 If ComboBox1.ListIndex <> -1 Then
 secu = ComboBox1.Value
 Criteres = Criteres & "(bdd!L2 = """ & secu & """) * "
End If

'Nom JF
 If ComboBox2.ListIndex <> -1 Then
 Jeunefille = ComboBox2.Value
 Criteres = Criteres & "(bdd!C2 = """ & Jeunefille & """) * "
End If


'Ancienneté
 If ComboBox3.ListIndex <> -1 Then
 ancienneté = ComboBox3.Value
 Criteres = Criteres & "(bdd!AM2 > """ & "20 ans" & """) * "
End If

'Nationalité
 If ComboBox4.ListIndex <> -1 Then
 nationalité = ComboBox4.Value
 Criteres = Criteres & "(bdd!I2 = """ & nationalité & """) * "
End If

If Optiontous.Value = True Then
tous = Optiontous.Value
Criteres = Criteres & "(bdd!A2 <> """ & "" & """) * "
Else
If Optionpresents.Value = True Then
presents = Optionpresents.Value
Criteres = Criteres & "(bdd!T2 = """ & "" & """) * "
End If
End If

If OptionButton1.Value = True Then
Féminin = OptionButton1.Value
Criteres = Criteres & "(bdd!D2 = """ & "Féminin" & """) * "
Else
If OptionButton2.Value = True Then
Masculin = OptionButton2.Value
Criteres = Criteres & "(bdd!D2 = """ & "Masculin" & """) * "
End If
End If

'à ce stade le critère se termine par *... On ajoute donc un 1. Un critère renvoie normalement
'vrai ou faux. En le multipliant par 1 il renvoie 1 ou 0 ce qui est inter^rété de la même façon par excel.
Criteres = "=" & Criteres & "1"
Sheets("filtre").Range("A2").Value = Criteres
 
'on utilise ensuite les critères de choix dans un filtre élaboré sur une feuille masquée
Sheets("filtre").Activate
Range("zonebdd").AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("A1:A2"), CopyToRange:=Range("A4:AN4"), Unique:=False

'Si aucune fiche ne correspond aux critères
If Range("filtre!A5").Value = "" Then
MsgBox ("Aucun nom ne répond à tous vos critères")
'S'il y a plus d'une fiche répondant au critère autrement dit si B6 non vide
'on réaffiche les fiches dans une zone de liste pour en faire choisir une à l'utilisateur
'pour cela on nomme "Fiches Filtrées" la plage contenant les titres sélectionnés.
'Il y a plusieurs façons de faire pour indiquer les coordonnées de cette plage. Ici j'ai choisi
'la fonction décaler (offset en VBA)

ElseIf Range("filtre!A5").Value <> "" Then
    ActiveWorkbook.Names.Add Name:="Fiche", RefersToR1C1:= _
        "=OFFSET(filtre!R5C2,,,COUNTA(filtre!C2)-1)"
Unload UsfSelection
UsfSelect2.Show

'sinon on récupère son numéro de ligne et on affiche la fiche dans le userform UsfAffiche
Else
nom = Range("A5").Value
    With Sheets("bdd").Range("A:A")
    Set c = .Find(Titre, LookIn:=xlValues, LookAt:=xlWhole)
        If Not c Is Nothing Then Lig = c.Row
    End With

UserForm2.Show
End If

 
End Sub



Le combobox "ancienneté" est alimenté comme cela : ComboBox3.AddItem "+ de 20 ans"
Mais là, je bloque.


L'ancienneté figure dans la feuille bdd colonne AM (sous forme aa, mm, jj)
Hors Ligne
Rapport   Haut 

Re: Critère de recherche ancienneté
#5
Accro XLPages

Inscription: 09/05/2007
De Courcelles-les-Montbéliard

Messages: 286

Système d'exploitation:
PC & Mac
Version Excel utilisée:
Mac 2004 - 2011, et PC 2003 - 2010
Posté le : 17-02-2013 08h30
Bonjour Fred777, Didier, le Forum

Fred, désolé, mais sans fichier contenant un minimum de données, ton userform, et le résultat que tu souhaites, je ne pourrais pas t'aider. je ne suis pas très à l'aise avec la création des userform, et je ne touche qu'un petit peu au VBA, (je suis plus un "formuliste", on ne se refait pas. lol). J'espère que tu comprends m'a position.

Il faut aussi comprendre une chose sur les sites d'entraides, les personnes qui dépannent, prennent de leurs temps personnels. Si en plus de passer le temps nécessaire pour l'analyse du problème et pour répondre "correctement" à la question, ils doivent aussi refaire la construction d'une base de données (ne connaissant même pas la structure), ils ne faut pas s'étonner qu'aucune réponse ne soit apporter à la question.

@+Jean-Marie

Hors Ligne
Rapport   Haut 

Re: Critère de recherche ancienneté
#6
Régulier XLPages

Inscription: 27/06/2010

Messages: 44

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2007
Posté le : 19-02-2013 13h29
Bonjour Jean-Marie,

Je comprend et t'en remercie.

Le pb c'est que mon fichier est trop gros, même en l'épurant et en le zippant.

Je vais essayé de coller un lien où le télécharger, mais là je suis au bureau et suis bloqué sur les sites de pièces jointes tel que "dl free" et autre par l'administrateur. Je ferai cela depuis la maison.

Merci d'avance.

Hors Ligne
Rapport   Haut 

Re: Critère de recherche ancienneté
#7
Régulier XLPages

Inscription: 27/06/2010

Messages: 44

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2007
Posté le : 19-02-2013 13h41
Jean-Marie,

Voilà je suis sur un autre projet pratiquement terminé, mais là je bloque. C'est donc au "formuliste" que je m'adresse.

Il s'agit d'un fichier de gestion des absences. Avec du personnel horaire "H" qui ne travaille pas le mercredi et les vacances scolaires. Du personnel "HM" qui travail le mercredi mais pas les vacances scolaires. Du personnel mensuel "M" qui travaille toute la semaine et les vacances scolaires.

Le personnel "H" et "HM" est susceptible de travailler pendant les vacances scolaires, et c'est là que cela me pose pb.

Si je saisi une absence qui ne chevauche pas la période travaillée pendant les vacances scolaires le nombre de jours d'absence est faussé.

Je cherche une solution pour résoudre mon probleme. J'espère que ma demande est assez claire. N'hésite pas à poser des questions

Merci d'avance pour tes lumières

Voici le lien du fichier (trop lourd également).

http://tinyurl.com/be6ntkk

Hors Ligne
Rapport   Haut 

Re: Critère de recherche ancienneté
#8
Régulier XLPages

Inscription: 27/06/2010

Messages: 44

Système d'exploitation:
PC
Version Excel utilisée:
Excel 2007
Posté le : 19-02-2013 13h55
Jean Marie,

Concernant ma première demande sur le critère d'ancienneté, voici le lien :

http://cjoint.com/?CBtn17spGDP

Merci encore
Hors Ligne
Rapport   Haut 


Vous pouvez voir les sujets.
Vous ne pouvez pas débuter de nouveaux sujets.
Vous ne pouvez pas répondre aux contributions.
Vous ne pouvez pas éditer vos contributions.
Vous ne pouvez pas effacez vos contributions.
Vous ne pouvez pas ajouter de nouveaux sondages.
Vous ne pouvez pas voter en sondage.
Vous ne pouvez pas attacher des fichiers à vos contributions.
Vous ne pouvez pas poster sans approbation.

[Recherche avancée]


Qui consulte actuellement ce sujet ?   1 Utilisateur(s) anonymes