Bonjour à tous,
Voici mon problème.
J'ai une bdd de mes salariés avec une colonne AY où une formule me renvoie une date de préavis pour le renouvellement des contrats.
J'ai un formulaire qui me permet de filtrer mes salariés selon différents critères (type de contrat, age, lieu de travail, etc ...)
Ce formulaire fonctionne très bien sauf pour mon critère "date préavis". Il me renvoie systématiquement 0 résultat."Aucun nom ne répond à tous vos critères"
J'ai 2 TextBox : TextBox1 (date de début) et TextBox2 (date de fin) ce qui me permet de demander tous les salariés dont les dates de renouvellement de contrat entre date1 et date2 (Par exemple je veux filtrer tous les renouvellement de contrats entre le 01/10/2014 et le 31/10/2014)
Mon formulaire de critère de selection se présente comme suit :
Private Sub CmdVoir_Click()
'Nom jeune fille
If ComboBox2.ListIndex <> -1 Then
jeunefille = ComboBox2.Value
Criteres = Criteres & "(bdd!AQ2 = """ & jeunefille & """) * "
End If
'Statut
If CboStatut.ListIndex <> -1 Then
statut = CboStatut.Value
Criteres = Criteres & "(bdd!H2 = """ & statut & """) * "
End If
'Type de contrat
If CboNatcontrat.ListIndex <> -1 Then
contrat = CboNatcontrat.Value
Criteres = Criteres & "(bdd!AA2 = """ & contrat & """) * "
End If
'Affectation
If CboAffectation.ListIndex <> -1 Then
Affectation = CboAffectation.Value
Criteres = Criteres & "(bdd!X2 = """ & Affectation & """) * "
End If
'Horaire
If CboHorairecont.ListIndex <> -1 Then
Horairecont = CboHorairecont.Value
Criteres = Criteres & "(bdd!Q2 = """ & Horairecont & """) * "
End If
'Ancienneté
If ComboBox3.ListIndex <> -1 Then
anciennete = ComboBox3.Value
Criteres = Criteres & "(bdd!AN2 " & anciennete & ") * "
End If
'Début de contrat
If TextBox1.Value <> "" Then
Datedebut = TextBox1.Value
Criteres = Criteres & "(bdd!AY2 >= " & Datedebut & ") * "
End If
'Fin de contrat
If TextBox2.Value <> "" Then
Datefin = TextBox2.Value
Criteres = Criteres & "(bdd!AY2 <= " & Datefin & ") * "
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:AZ4"), Unique:=False
'Si aucun nom 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'un nom répondant au critère autrement dit si A5 non vide
'on réaffiche les recettes dans une zone de liste pour en faire choisir une à l'utilisateur
'pour cela on nomme "Fiches Filtrées" la plage contenant les noms 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 frmCriteres
frmSelect.Show
'sinon on récupère son numéro de ligne et on affiche la fiche salarié dans le userform frmFiche
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
frmFiche.Show
End If
End Sub
Je ne comprend pas pourquoi tous les autres critères fonctionnent et pas celui-ci. Je cherche depuis des semaines et m'arrache les cheveux.
Merci de vos lumières.
Voici mon problème.
J'ai une bdd de mes salariés avec une colonne AY où une formule me renvoie une date de préavis pour le renouvellement des contrats.
J'ai un formulaire qui me permet de filtrer mes salariés selon différents critères (type de contrat, age, lieu de travail, etc ...)
Ce formulaire fonctionne très bien sauf pour mon critère "date préavis". Il me renvoie systématiquement 0 résultat."Aucun nom ne répond à tous vos critères"
J'ai 2 TextBox : TextBox1 (date de début) et TextBox2 (date de fin) ce qui me permet de demander tous les salariés dont les dates de renouvellement de contrat entre date1 et date2 (Par exemple je veux filtrer tous les renouvellement de contrats entre le 01/10/2014 et le 31/10/2014)
Mon formulaire de critère de selection se présente comme suit :
Private Sub CmdVoir_Click()
'Nom jeune fille
If ComboBox2.ListIndex <> -1 Then
jeunefille = ComboBox2.Value
Criteres = Criteres & "(bdd!AQ2 = """ & jeunefille & """) * "
End If
'Statut
If CboStatut.ListIndex <> -1 Then
statut = CboStatut.Value
Criteres = Criteres & "(bdd!H2 = """ & statut & """) * "
End If
'Type de contrat
If CboNatcontrat.ListIndex <> -1 Then
contrat = CboNatcontrat.Value
Criteres = Criteres & "(bdd!AA2 = """ & contrat & """) * "
End If
'Affectation
If CboAffectation.ListIndex <> -1 Then
Affectation = CboAffectation.Value
Criteres = Criteres & "(bdd!X2 = """ & Affectation & """) * "
End If
'Horaire
If CboHorairecont.ListIndex <> -1 Then
Horairecont = CboHorairecont.Value
Criteres = Criteres & "(bdd!Q2 = """ & Horairecont & """) * "
End If
'Ancienneté
If ComboBox3.ListIndex <> -1 Then
anciennete = ComboBox3.Value
Criteres = Criteres & "(bdd!AN2 " & anciennete & ") * "
End If
'Début de contrat
If TextBox1.Value <> "" Then
Datedebut = TextBox1.Value
Criteres = Criteres & "(bdd!AY2 >= " & Datedebut & ") * "
End If
'Fin de contrat
If TextBox2.Value <> "" Then
Datefin = TextBox2.Value
Criteres = Criteres & "(bdd!AY2 <= " & Datefin & ") * "
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:AZ4"), Unique:=False
'Si aucun nom 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'un nom répondant au critère autrement dit si A5 non vide
'on réaffiche les recettes dans une zone de liste pour en faire choisir une à l'utilisateur
'pour cela on nomme "Fiches Filtrées" la plage contenant les noms 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 frmCriteres
frmSelect.Show
'sinon on récupère son numéro de ligne et on affiche la fiche salarié dans le userform frmFiche
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
frmFiche.Show
End If
End Sub
Je ne comprend pas pourquoi tous les autres critères fonctionnent et pas celui-ci. Je cherche depuis des semaines et m'arrache les cheveux.
Merci de vos lumières.