XL 2021 message si une valeur n'existe pas

target

XLDnaute Nouveau
bonjour,
dans un formulaire de saisie lorsque dans le textbox recherche ( ou champ recherche ) j'écris "a" j'ai un message d'un message box " le nom n'existe pas " pourtant dans la liste il si trouve, je me sert de la colonne a dans la feuille "Base" pour la recherche si a la place du "a" je marque "aa" dans la cellule a2 de la feuille "Base" et que dans le champ recherche je marque "a" il affiche "aa" l'erreur ce trouve dans ce code

VB:
Private Sub recherche_Change()
    '**********************************
'EMPECHE LE DÉFFILEMENT INTEMPESTIF
'**********************************
Application.ScreenUpdating = False

'DECLARATIONS DES VARIABLES
Dim Plage As Range, Cel As Range

'PERMET DE SAVOIR SI LA LETTRE DU CHAMP RECHERCHE EXISTE
  If Not IsError(Application.Match(recherche.Value, Sheets("Base").Range("A2:A600"), 0)) Then
  MsgBox "Le nom n'existe pas", vbExclamation, "Avertissement"
 
'PERMET DE REINITIALISER LA LISTVIEW APRÉS AVOIR APPUYER SUR OK
Call UserForm_Initialize
 'EFFACE TEXBOB RECHERCHE
Me.recherche.Text = ""
'MET FOCUS TEXBOB NOM
Me.nom.SetFocus
'PUIS MET FOCUS TEXBOB RECHERCHE
Me.recherche.SetFocus


'SORT DE LA PROCEDURE
    Exit Sub
  End If
    
    If recherche <> "" Then
        Set Plage = Worksheets("Base").Range("A2:A" & Worksheets("Base").Range("A" & Rows.Count).End(xlUp).Row)
        ligne = 1
        With ListView1
            .ListItems.Clear
            For Each Cel In Plage
                If UCase(Cel) Like UCase(recherche & "*") Then
                    .ListItems.Add , , Cel
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 1)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 2)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 3)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 4)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 5)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 6)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 7)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 8)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 9)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 10)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 11)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 12)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 13)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 14)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 15)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 16)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 17)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 18)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 19)    'RAJOUTER POUR TEST
                    ligne = ligne + 1
                End If
            Next
        End With
    End If
End Sub

mais je n'arrive pas a cerner le probléme, je vous remercie d'avance pour vos réponses
Cordialement
 

Pièces jointes

  • test.xlsm
    98.5 KB · Affichages: 2

Gégé-45550

XLDnaute Accro
bonjour,
dans un formulaire de saisie lorsque dans le textbox recherche ( ou champ recherche ) j'écris "a" j'ai un message d'un message box " le nom n'existe pas " pourtant dans la liste il si trouve, je me sert de la colonne a dans la feuille "Base" pour la recherche si a la place du "a" je marque "aa" dans la cellule a2 de la feuille "Base" et que dans le champ recherche je marque "a" il affiche "aa" l'erreur ce trouve dans ce code

VB:
Private Sub recherche_Change()
    '**********************************
'EMPECHE LE DÉFFILEMENT INTEMPESTIF
'**********************************
Application.ScreenUpdating = False

'DECLARATIONS DES VARIABLES
Dim Plage As Range, Cel As Range

'PERMET DE SAVOIR SI LA LETTRE DU CHAMP RECHERCHE EXISTE
  If Not IsError(Application.Match(recherche.Value, Sheets("Base").Range("A2:A600"), 0)) Then
  MsgBox "Le nom n'existe pas", vbExclamation, "Avertissement"
 
'PERMET DE REINITIALISER LA LISTVIEW APRÉS AVOIR APPUYER SUR OK
Call UserForm_Initialize
 'EFFACE TEXBOB RECHERCHE
Me.recherche.Text = ""
'MET FOCUS TEXBOB NOM
Me.nom.SetFocus
'PUIS MET FOCUS TEXBOB RECHERCHE
Me.recherche.SetFocus


'SORT DE LA PROCEDURE
    Exit Sub
  End If
   
    If recherche <> "" Then
        Set Plage = Worksheets("Base").Range("A2:A" & Worksheets("Base").Range("A" & Rows.Count).End(xlUp).Row)
        ligne = 1
        With ListView1
            .ListItems.Clear
            For Each Cel In Plage
                If UCase(Cel) Like UCase(recherche & "*") Then
                    .ListItems.Add , , Cel
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 1)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 2)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 3)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 4)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 5)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 6)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 7)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 8)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 9)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 10)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 11)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 12)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 13)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 14)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 15)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 16)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 17)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 18)
                    .ListItems(ligne).ListSubItems.Add , , Cel.Offset(, 19)    'RAJOUTER POUR TEST
                    ligne = ligne + 1
                End If
            Next
        End With
    End If
End Sub

mais je n'arrive pas a cerner le probléme, je vous remercie d'avance pour vos réponses
Cordialement
Bonsoir,
Il me semble qu'il faut remplacer :
Code:
]If [COLOR=rgb(226, 80, 65)]Not [/COLOR]IsError[/B](Application.Match(recherche.Value, Sheets("Base").Range("A2:A600"), 0)) Then
  MsgBox "Le nom n'existe pas", vbExclamation, "Avertissement"
par :
Code:
If IsError(Application.Match(recherche.Value, Sheets("Base").Range("A2:A600"), 0)) Then
  MsgBox "Le nom n'existe pas", vbExclamation, "Avertissement"
La double négation
Code:
If Not IsError
signifie 's'il n'y a pas d'erreur' ou également 's'il n'est pas faux que', donc se traduit par "si la recherche de la valeur saisie dans la TextBox 'recherche' est trouvée (e.g. ) dans le champ A2:A600", alors ... ne pas afficher dans ce cas que la recherche a échoué, n'est-ce pas ?
Cordialement,
 

target

XLDnaute Nouveau
Bonjour Gégé-45550,
Merci Beaucoup pour votre réponse et la solution que vous m'avez apporté, je n'aie pas tout compris, comme je l'avais déjà dit je récupere des morceaux de code que j'essaye de les assembler, vous avez surement remarqué que le code n'est pas structuré du tout, réellement qand je vois la facilité avec laquelle vous trouvé des solutions, je reste sans voix, vous etes vraiment des topgun de la programmation.
encore merci
Cordialement
 

target

XLDnaute Nouveau
Bonjour,
Non en fait le code marche bien si il y a "a" par exemple dans la cellule "a2" de la feuille "base" et que je le change par "aa" dans la cellule "a2" de la feuille "base" et que j'écris "a" dans le champ recherche il me donne le méssage "le nom n'existe pas" . Je me suis mal expliqué je pense, dans le champ recherche si je met "a" la listeview affiche tout les noms qui commence par "a", si je marque "z" qui n'existe pas alors j'aurais le message.
Cordialement
 

Pièces jointes

  • test.xlsm
    102.3 KB · Affichages: 5
C

Compte Supprimé 979

Guest
Bonjour Target,

Si vous voulez que ça recherche un nom "commençant par", il faut modifier la ligne ci-dessous
VB:
If IsError(Application.Match(recherche.Value & "*", Sheets("Base").Range("A2:A600"), 0)) Then

Nota : j'espère que vous n'aurez jamais plus de 600 lignes, car vous figez leur nombre

A+
 

Discussions similaires

Réponses
2
Affichages
291

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh