Méthode "Find", problème de résultats.
Résolu
Ateraki
-
Ateraki -
Ateraki -
A voir également:
- Méthode "Find", problème de résultats.
- Resultats foot - Télécharger - Vie quotidienne
- Find and mount - Télécharger - Récupération de données
- Lexer resultats - Télécharger - Sport
- Ava find - Télécharger - Divers Utilitaires
- Find junk files - Télécharger - Nettoyage
6 réponses
Salut,
Soit une liste de personnes nommées (et prénommées) :
tutu robert
toto michel
titi jeanne
toto jean françois
toto mike
toto jean
toto alexandra
Veux tu :
- la liste des personnes s'appelant "toto" ?
- uniquement la personne s'appelant "toto jean" ?
question subsidiaire :
Comment saisis tu les Nom et prénom recherchés? Userform? cellule d'une feuille? autre?
Soit une liste de personnes nommées (et prénommées) :
tutu robert
toto michel
titi jeanne
toto jean françois
toto mike
toto jean
toto alexandra
Veux tu :
- la liste des personnes s'appelant "toto" ?
- uniquement la personne s'appelant "toto jean" ?
question subsidiaire :
Comment saisis tu les Nom et prénom recherchés? Userform? cellule d'une feuille? autre?
Salut,
En fait dans le projet, je saisis les noms par une userform qui sont ensuite écrit sur une feuille excel.
Dans ton exemple, oui je voudrais qu'excel me trouve et sélectionne que la ligne toto jean. Et le souci c'est qu'avec mon code, il y a deux possibilités :
- Recherche avec juste le nom : Excel s'arrête au premier nom et sélectionne la ligne correspondante.
- Recherche avec le nom et le prénom : Excel va s'arrêter que sur le premier nom et va chercher le prénom. En gros c'est comme si je cherchais toto jean excel va me sélectionner le premier toto et le jean. Voici dans la suite du message mon code recherche :
Merci par avance de vos réponses et je reste à disposition pour vous répondre ;)
En fait dans le projet, je saisis les noms par une userform qui sont ensuite écrit sur une feuille excel.
Dans ton exemple, oui je voudrais qu'excel me trouve et sélectionne que la ligne toto jean. Et le souci c'est qu'avec mon code, il y a deux possibilités :
- Recherche avec juste le nom : Excel s'arrête au premier nom et sélectionne la ligne correspondante.
- Recherche avec le nom et le prénom : Excel va s'arrêter que sur le premier nom et va chercher le prénom. En gros c'est comme si je cherchais toto jean excel va me sélectionner le premier toto et le jean. Voici dans la suite du message mon code recherche :
Dim F As Worksheet Dim R As Range Dim S As Range If modif.direction = True Then d = "Direction" Sheets(d).Visible = True Sheets(d).Activate End If If modif.administration = True Then d = "Administration" Sheets(d).Visible = True Sheets(d).Activate End If If modif.enseignants = True Then d = "Enseignants" Sheets(d).Visible = True Sheets(d).Activate End If If modif.etudiants = True Then d = "Etudiants" Sheets(d).Visible = True Sheets(d).Activate End If If modif.intervenants = True Then d = "Intervenants" Sheets(d).Visible = True Sheets(d).Activate End If Set F = Worksheets(d) With F.Range("A3", "Z300") Set R = .Find(a, LookIn:=xlValues) Set S = .Find(b, LookIn:=xlValues) End With If S Is Nothing Then MsgBox "La personne recherchée n'est pas dans la liste des " & d, , "Personne non trouvée" Else modif.a = S.Offset(0, 1).Value 'modif.a = R modif.b = S modif.TextBox1 = S.Offset(0, 2).Value TextBox1.Value = Format(TextBox1.Value, "0000000000000") S.EntireRow.Select End If
Merci par avance de vos réponses et je reste à disposition pour vous répondre ;)
Lorsque tu mets du code dans ce forum, pense à utiliser les balises <> que tu trouve en haut de la zone de texte. Pour le code VBA, tu peux même sélectionner (dans la liste déroulante) "basic", pour obtenir ce que je viens de modifier pour toi dans ton dernier message.
En ce qui concerne ta question, je me penche dessus, pour voir...
En ce qui concerne ta question, je me penche dessus, pour voir...
Première approche :
L'idéal lorsque l'on construit une base de données, est de penser à créer une "colonne" identifiant. Cela peut être sous la forme d'une clé primaire (un numéro unique attribué automatiquement pour chaque "ligne" de ta bdd), un numéro d'identifiant unique (ex : n° de sécurité sociale), ou alors, mais c'est moins fiable relativement aux doublons, une colonne "NOM Prénom".
Est il encore envisageable pour toi l'ajout d'une telle colonne?
L'idéal lorsque l'on construit une base de données, est de penser à créer une "colonne" identifiant. Cela peut être sous la forme d'une clé primaire (un numéro unique attribué automatiquement pour chaque "ligne" de ta bdd), un numéro d'identifiant unique (ex : n° de sécurité sociale), ou alors, mais c'est moins fiable relativement aux doublons, une colonne "NOM Prénom".
Est il encore envisageable pour toi l'ajout d'une telle colonne?
Salut,
un findnext ne ferait pas l'affaire ?
un findnext ne ferait pas l'affaire ?
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En ce qui concerne le code, j'y penserai mais c'est la première fois que je post c'est pour ça ;)
Alors pour la colonne en plus, il y en a bien une car en face de chaque personne correspond un numéro de carte. La contrainte vient du faite que la recherche ne doit pas se faire selon le numéro de carte.
Alors pour la colonne en plus, il y en a bien une car en face de chaque personne correspond un numéro de carte. La contrainte vient du faite que la recherche ne doit pas se faire selon le numéro de carte.
For Z = 2 To 150 If Cells(Z, 2) = modif.b.Value And Cells(Z, 2).Offset(0, 1) = modif.a.Value Then Cells(Z, 2).EntireRow.Select End If Next
Voilà grâce à ces 3 lignes j'ai résolu mon problème si on reprend par exemple ta liste type, et que je cherche par exemple toto jean et bien il me le trouve et me sélectionne bien la ligne tout comme il faut !! Dire que j'ai trouvé ce bout de code durant un cours tout à fait ennuyant ^^'.
Maintenant, il me reste à trouver comment afficher le message d'erreur pour informer qu'une personne n'est pas dans la liste. Pour se faire, je pense mettre un Else ou une autre boucle, à voir !
Et bien tu mets un flag dans ton test et à la sortie, tu le testes pour n'afficher le message que si le flag n'a pas bougé...
Flag = False For Z = 2 To 150 If Cells(Z, 2) = modif.b.Value And Cells(Z, 2).Offset(0, 1) = modif.a.Value Then Cells(Z, 2).EntireRow.Select Flag = True End If Next If Flag = False Then MsgBox "Non trouvé" End If