Msgbox Nom non trouvé

Bonjour à toutes/tous.

Je rencontre un petit problème de code dans le suivant

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If TextBox1 <> "" Then
j = 0
For i = 3 To 6000
If Cells(i, 1) Like TextBox1 Then
With Me.ListView1
With .ColumnHeaders
.Clear
.Add , , "Nom", 60
.Add , , "Prénom", 80
.Add , , "Adresse", 100
.Add , , "Ville", 80
.Add , , "Code postal", 90
End With
j = j + 1
Me.ListView1.ListItems.Add , , Cells(i, 1)
Me.ListView1.ListItems(j).ListSubItems.Add , , Cells(i, 2)
Me.ListView1.ListItems(j).ListSubItems.Add , , Cells(i, 3)
Me.ListView1.ListItems(j).ListSubItems.Add , , Cells(i, 4)
Me.ListView1.ListItems(j).ListSubItems.Add , , Cells(i, 5)
.View = lvwReport       'format d'affichage des données
End With
End If
Next
End If
End Sub

Il a pour but de m'afficher dans un listview les informations concernant le Nom de la personne après avoir appuyer sur la touche enter.

Mon problème c'est que je ne sais pas comment afficher un msgbox si le nom n'est pas trouvé dans la colonne 1.

Un petit coup de pouce serait le bienvenu.

Merci

bonjour,

proposition à tester

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If TextBox1 <> "" Then
j = 0
For i = 3 To 6000
If Cells(i, 1) Like TextBox1 Then
With Me.ListView1
With .ColumnHeaders
.Clear
.Add , , "Nom", 60
.Add , , "Prénom", 80
.Add , , "Adresse", 100
.Add , , "Ville", 80
.Add , , "Code postal", 90
End With
j = j + 1
Me.ListView1.ListItems.Add , , Cells(i, 1)
Me.ListView1.ListItems(j).ListSubItems.Add , , Cells(i, 2)
Me.ListView1.ListItems(j).ListSubItems.Add , , Cells(i, 3)
Me.ListView1.ListItems(j).ListSubItems.Add , , Cells(i, 4)
Me.ListView1.ListItems(j).ListSubItems.Add , , Cells(i, 5)
.View = lvwReport       'format d'affichage des données
End With
End If
Next

if j=0 then msgbox "nom non trouvé"

End If
End Sub
 

bonjour H2so4,

Il me déclenche le msgbox à chaque fois que je tape une lettre.

Merci de te pencher sur le problème.

Cordialement

rebonjour,

la feuille sélectionnée doit être la feuille qui contient tes données.

à tester

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
If TextBox1 <> "" Then
j = 0
With Me.ListView1
With .ColumnHeaders
.Clear
.Add , , "Nom", 60
.Add , , "Prénom", 80
.Add , , "Adresse", 100
.Add , , "Ville", 80
.Add , , "Code postal", 90
End With
For i = 3 To 6000
If Cells(i, 1) Like "*" & TextBox1 & "*" Then

j = j + 1
Me.ListView1.ListItems.Add , , Cells(i, 1)
Me.ListView1.ListItems(j).ListSubItems.Add , , Cells(i, 2)
Me.ListView1.ListItems(j).ListSubItems.Add , , Cells(i, 3)
Me.ListView1.ListItems(j).ListSubItems.Add , , Cells(i, 4)
Me.ListView1.ListItems(j).ListSubItems.Add , , Cells(i, 5)
.View = lvwReport       'format d'affichage des données
End With
End If
Next

if j=0 then msgbox "nom non trouvé"

End If
End Sub
 

ça ne fonctionne pas.

je vais essayer de remplacer la listview par une listbox, ce sera peut-être moins compliqué à gérer .

Merci .

Je me permets de faire un petit "up"

J'ai toujours pas de solutions ...

Bonjour forum,

Civo, as-tu un fichier de test ? Ce serait plus simple pour t'aider...

Mets quelques données bidon mais en gardant la structure des données.

Voilà, c'est vraiment bidon, mais ça reflète bien ce que je souhaiterai faire.

On rentre un nom dans le textbox1 et en tapant sur la touche entrée cela affiche les données dans la listview. Mais je ne sais pas comment intégrer un msgbox "Nom non trouvé"

Merci

Cordialement.

6test2.xlsm (22.56 Ko)

Je me suis permis d'optimiser un peu. Essaie avec ce code :

Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    Dim i As Long, j As Long, derlign As Long

    If KeyCode = 13 Then    'si la touche Entrée est appuyée
        If TextBox1 <> "" Then

            'on ne crée les colonnes qu'une seule fois
            With Me.ListView1
                .ListItems.Clear    'efface les données du listview
                With .ColumnHeaders
                    .Clear
                    .Add , , "Nom", 60
                    .Add , , "Prénom", 80
                    .Add , , "Adresse", 100
                    .Add , , "Ville", 80
                    .Add , , "Code postal", 90
                End With
                .View = lvwReport       'format d'affichage des données

                'on regarde si le nom existe dans la colonne A
                If Application.CountIf(Range("A:A"), TextBox1) = 0 Then MsgBox "Nom non trouvé": Exit Sub

                j = 0
                derlign = Range("A" & Rows.Count).End(xlUp).Row    'dernière ligne non vide du tableau
                For i = 2 To derlign
                    'If Cells(i, 1) Like TextBox1 Then
                    If Cells(i, 1) Like "*" & TextBox1 & "*" Then
                        'With Me.ListView1
                        '    With .ColumnHeaders
                        '        .Clear
                        '        .Add , , "Nom", 60
                        '        .Add , , "Prénom", 80
                        '        .Add , , "Adresse", 100
                        '        .Add , , "Ville", 80
                        '        .Add , , "Code postal", 90
                        '    End With
                        j = j + 1
                        .ListItems.Add , , Cells(i, 1)
                        .ListItems(j).ListSubItems.Add , , Cells(i, 2)
                        .ListItems(j).ListSubItems.Add , , Cells(i, 3)
                        .ListItems(j).ListSubItems.Add , , Cells(i, 4)
                        .ListItems(j).ListSubItems.Add , , Cells(i, 5)
                    End If
                Next
            End With
        End If
    End If
End Sub

Un conseil : afin de faciliter la lecture de ton code et de limiter les erreurs, il est important que tu déclares tes variables.

9test3.xlsm (21.30 Ko)

Merci beaucoup,

Cependant juste une dernière question,

quelle différence y a t-il entre If Cells(i, 1) Like TextBox1 Then et If Cells(i, 1) Like "*" & TextBox1 & "*" Then

sinon pour le reste du code je pense l'avoir compris.

Merci aussi pour ton conseil, je vais le mettre en application .

Cordialement

Civo a écrit :

quelle différence y a t-il entre If Cells(i, 1) Like TextBox1 Then et If Cells(i, 1) Like "*" & TextBox1 & "*" Then

C'est simple.
If Cells(i, 1) Like TextBox1 Then

équivaut à

If Cells(i, 1) = TextBox1 Then

Avec

If Cells(i, 1) Like "*" & TextBox1 & "*" Then

si tu tapes "toto" par exemple, il va te trouver "hjktoto", "totoplde", ou encore "jdkjkfdtotodljdel"...

A toi de voir ce que tu souhaites rapatrier comme données. Les lignes qui sont égales à "toto" ? Ou toutes les lignes qui contiennent "toto" ?

Ok merci beaucoup (:

Cordialement

Rechercher des sujets similaires à "msgbox nom trouve"