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 SubIl 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.
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 SubUn conseil : afin de faciliter la lecture de ton code et de limiter les erreurs, il est important que tu déclares tes variables.
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
C'est simple.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
If Cells(i, 1) Like TextBox1 Thenéquivaut à
If Cells(i, 1) = TextBox1 ThenAvec
If Cells(i, 1) Like "*" & TextBox1 & "*" Thensi 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