XL 2021 message si une valeur n'existe pas

  • Initiateur de la discussion Initiateur de la discussion target
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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,
 
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
 
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

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+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour