UltrAzimut
XLDnaute Nouveau
Bonjour,
Dans mon projet actuel, je développe une fonction recherche. Apres de nombreux bug 😀 deux fonctions semblent fonctionner mais je souhaite conserver la "meilleure". La fonction en question recherche si un client existe dans ma base.
Premiere solution :
Deixieme solution :
Question subsidiaire : Si je veux rechercher dans une colonne precise, je met :
mais ça ne fonctionne pas ! Ai-je oublier quelque chose ?
Merci pour vos avis et conseils
Dans mon projet actuel, je développe une fonction recherche. Apres de nombreux bug 😀 deux fonctions semblent fonctionner mais je souhaite conserver la "meilleure". La fonction en question recherche si un client existe dans ma base.
Premiere solution :
Code:
Private Sub rechercher_Click()
Dim var As String
Dim ligne As Integer
var = UCase(UserForm2.recherche.Value)
If var = "" Then
msgbox "Veuillez indiquer Le nom du client !", vbInformation, "Attention"
End If
If var <> "" Then
Sheets("societes").Select
On Error Resume Next 'si erreur a la ligne suivante on continu quand meme
Cells.Find(What:=var, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
False).Activate
If Err = 0 then 'si pas d'erreur
'Activer la cellule la plus à gauche
ligne = ActiveCell.Row
Cells(ligne, 1).Select
'Inscrire les résultats de la recherche dans les champs correspondants
UserForm2.modification.Value = ActiveCell.Offset(0, 1).Text
UserForm2.cloture.Value = ActiveCell.Offset(0, 2).Text
UserForm2.naturejuridique.Value = ActiveCell.Offset(0, 3).Text
UserForm2.raisonsociale.Value = ActiveCell.Offset(0, 4).Text
UserForm2.anciennement.Value = ActiveCell.Offset(0, 5).Text
UserForm2.numero.Value = ActiveCell.Offset(0, 6).Text
UserForm2.voie.Value = ActiveCell.Offset(0, 7).Text
UserForm2.adresse.Value = ActiveCell.Offset(0, 8).Text
UserForm2.BP.Value = ActiveCell.Offset(0, 10).Text
UserForm2.CP.Value = ActiveCell.Offset(0, 11).Text
UserForm2.ville.Value = ActiveCell.Offset(0, 12).Text
UserForm2.telephone.Value = ActiveCell.Offset(0, 13).Text
UserForm2.siret.Value = ActiveCell.Offset(0, 14).Text
UserForm2.representants.Value = ActiveCell.Offset(0, 17).Text
UserForm2.qualite.Value = ActiveCell.Offset(0, 18).Text
UserForm2.pouvoirs.Value = ActiveCell.Offset(0, 19).Text
UserForm2.infos.Value = ActiveCell.Offset(0, 20).Text
Else 'si erreur il y a
Msgbox "Le client n'existe pas!", VbEclamation, "Erreur Client..."
Err.Clear
End If
End If
End Sub
Deixieme solution :
Code:
Private Sub rechercher_Click()
Dim var As String
Dim ligne As Integer
var = UCase(UserForm2.recherche.Value)
If var = "" Then
msgbox "Veuillez indiquer Le nom du client !", vbInformation, "Attention"
End If
If var <> "" Then
With Worksheets("societes")
.Activate
Dim search As Range
Set search = Cells.Find(What:=var, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= False)
If Not search Is Nothing Then
search.Activate
Sheets("societes").Select
'Activer la cellule la plus à gauche
ligne = ActiveCell.Row
Cells(ligne, 1).Select
'Inscrire les résultats de la recherche dans les champs correspondants
UserForm2.modification.Value = ActiveCell.Offset(0, 1).Text
UserForm2.cloture.Value = ActiveCell.Offset(0, 2).Text
UserForm2.naturejuridique.Value = ActiveCell.Offset(0, 3).Text
UserForm2.raisonsociale.Value = ActiveCell.Offset(0, 4).Text
UserForm2.anciennement.Value = ActiveCell.Offset(0, 5).Text
UserForm2.numero.Value = ActiveCell.Offset(0, 6).Text
UserForm2.voie.Value = ActiveCell.Offset(0, 7).Text
UserForm2.adresse.Value = ActiveCell.Offset(0, 8).Text
UserForm2.BP.Value = ActiveCell.Offset(0, 10).Text
UserForm2.CP.Value = ActiveCell.Offset(0, 11).Text
UserForm2.ville.Value = ActiveCell.Offset(0, 12).Text
UserForm2.telephone.Value = ActiveCell.Offset(0, 13).Text
UserForm2.siret.Value = ActiveCell.Offset(0, 14).Text
UserForm2.representants.Value = ActiveCell.Offset(0, 17).Text
UserForm2.qualite.Value = ActiveCell.Offset(0, 18).Text
UserForm2.pouvoirs.Value = ActiveCell.Offset(0, 19).Text
UserForm2.infos.Value = ActiveCell.Offset(0, 20).Text
Else
msgbox "Le client n'existe pas !", vbExclamation, "Erreur Client..."
End If
End With
End If
End Sub
Question subsidiaire : Si je veux rechercher dans une colonne precise, je met :
Code:
Columns(4).cells.fin(...)
Merci pour vos avis et conseils