Problème de code dans userform

Problème de code dans userform - VB/VBA/VBS - Programmation

Marsh Posté le 14-06-2009 à 17:32:39    

bonsoir je travaille sur un code qui me permet de retrouver des personnes dans une liste, selon certains critères. Les critères dans mon formulaire sont les suivants :
 
RaisonSociale format RaisonSociale = UCase(RaisonSociale )
Titre format Titre = UCase(Titre )
Nom format Nom = UCase(Nom )
Prénom format Prenom = UCase(Prenom )
DateDeNaissance format DateDeNaissance.MaxLength = 8  
 
Quand je lance mon application sans le critère DateDeNaissance mon application fonctionne parfaitement dès que je rajoute le critère DateDeNaissance elle n'effectue plus la recherche et je ne comprends pas pourquoi. Voici mon code et mon fichier en espérant que vous puissiez m'aider. Je vous en remercie d'avance pour votre aide car je dois présenter cette application cette semaine. Je m'excuse d'avance pour mon code un peu brouillon mais je débute en vba. Merci pour votre patience .Bonne soirée.  
Tallia  :)  
 
mon fichier : http://cjoint.com/?goboWYmUGC
 
Private Sub liste_noire_Click()
 
Dim DerLig As Long, lig As Long
Dim VRaisonsociale As String, VTitre As String, VNom As String, VPrenom As String, VDateDeNaissance As String
' Récupérer le numéro de ligne sur laquelle on se trouve
lig = ActiveCell.Row
 
' Mémoriser la raison sociale, le titre, le nom,le prénom, la date de naissance de la ligne sélectionnée
 
VRaisonsociale = ActiveSheet.Range("A" & lig).Value
VTitre = ActiveSheet.Range("B" & lig).Value
VNom = ActiveSheet.Range("C" & lig).Value
VPrenom = ActiveSheet.Range("D" & lig).Value
VDateDeNaissance = ActiveSheet.Range("E" & lig).Value
 
' Vérifier l'existence d'une raison sociale nom et prénom sur la ligne
 
If VRaisonsociale = "" And VTitre = "" And VNom = "" And VPrenom = "" And VDateDeNaissance = "" Then
MsgBox "Merci de selectionner une ligne avec un titre un nom et prénom et une date de naissance"
Exit Sub
End If
 
' Effectuer une recherche de doublon
 
If NbVSearch(VRaisonsociale, VTitre, VNom, VPrenom, VDateDeNaissance) > 0 Then
If MsgBox("Attention cette personne fait déjà partie de la liste !" & vbCrLf & vbCrLf _
& "Voulez-vous continuer ?", vbQuestion + vbYesNo, "ATTENTION ..." ) = vbNo Then
'AJOUT.Hide
End If
ActiveSheet.Range("A" & lig & ":P" & lig).Interior.ColorIndex = 3
End If
end sub
 
Function NbVSearch(RaisonSociale As String, TITRE As String, NOM As String, PRENOM As String, DateDeNaissance As String)
Dim myformule As String
 
 
myformule = "SUMPRODUCT((liste_noire!$A$2:$A$65535=""" & RaisonSociale & """ )*(liste_noire!$B$2:$B$65535=""" & TITRE & """ )*(liste_noire!$C$2:$C$65535=""" & NOM & """ )*(liste_noire!$D$2:$D$65535=""" & PRENOM & """ )*(liste_noire!$E$2:$E$65535=""" & DateDeNaissance & """ ))"
NbVSearch = Application.Evaluate(myformule)
' si la raison sociale est vide
If RaisonSociale = "" Then
myformule = "sumproduct((liste_noire!$B$2:$B$65535=""" & TITRE & """ )*(liste_noire!$C$2:$C$65535=""" & NOM & """ )*(liste_noire!$D$2:$D$65535=""" & PRENOM & """ )*(liste_noire!$E$2:$E$65535=""" & DateDeNaissance & """ ))"
End If
End Function

Reply

Marsh Posté le 14-06-2009 à 17:32:39   

Reply

Marsh Posté le 15-06-2009 à 10:04:13    

tallia64 a écrit :


If VRaisonsociale = "" And VTitre = "" And VNom = "" And VPrenom = "" And VDateDeNaissance = "" Then


Ça ne serait pas des "Or" que tu voudrais mettre à la place de tes "And" ? Ou alors des "<>" à la place des "=" ?
Car ce que je comprends de "Merci de sélectionner une ligne avec un titre un nom et prénom et une date de naissance" , c'est qu'il faut que tous ces champs soient remplis pour que ça fonctionne, mais ce que veux dire ton test est "si TOUS les champs sont nuls, alors erreur" (i.e. "si un seul de ces champs n'est pas vide, c'est ok, passer à la suite" ).
Ca n'a peut-être rien à voir avec ton problème, mais il y a quand même l'air d'y avoir une incohérence ici.


---------------
If you think it could look good, then I guess it should
Reply

Marsh Posté le 15-06-2009 à 15:38:53    

Bonjour merci pour votre aide. Je viens d'apporter les modifications à mon code mais sans succès. Le problème doit venir  
 
If NbVSearch(VRaisonsociale, VTitre, VNom, VPrenom, VDateDeNaissance) > 0 Then  
If MsgBox("Attention cette personne fait déjà partie de la liste !" & vbCrLf & vbCrLf _  
& "Voulez-vous continuer ?", vbQuestion + vbYesNo, "ATTENTION ..." ) = vbNo

 
car je fais un pas à pas il ne récupère pas la date d'où le souci. Par quoi pourrais je remplacer le nbvsearch ? Je vous remercie.
 
Tallia64

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed