Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1482 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Problème de code dans userform

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème de code dans userform

n°1894920
tallia64
Posté le 14-06-2009 à 17:32:39  profilanswer
 

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

mood
Publicité
Posté le 14-06-2009 à 17:32:39  profilanswer
 

n°1895068
Turkleton
I don't quite understand you
Posté le 15-06-2009 à 10:04:13  profilanswer
 

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
n°1895228
tallia64
Posté le 15-06-2009 à 15:38:53  profilanswer
 

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


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Problème de code dans userform

 

Sujets relatifs
[Edit] Analyseur de code pour C++Probleme spoiler sous IE mais pas sous FF
Problème iframeproblème taille <div> avec Ajax.autocompleter
Problème de clé étrangère [RESOLU]Problème Libraires VBA Access
probleme a l'upload d'image ...[PERL] Problème d'espace avec glob()
Problème de connection FREE à SQL.FREE.FR ?? Mystère!Problème de paramètre dans ma fonction
Plus de sujets relatifs à : Problème de code dans userform


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR