XL 2010 Find rechercher à partir des 2 premiers caractères

Goufra

XLDnaute Occasionnel
Bonjour à vous,
Avec la fonction Find, pour effectuer un choix. fichier joint.

1/ Comment sélectionner successivement tous les noms d’une plage commençant par deux caractères.

Je n’ai trouvé que cette astuce, utiliser une colonne supplémentaire.
Afin d’éviter de sélectionner une cellule dont le nom contient ces deux caractères après les 2 premiers de la
chaîne, tamara pour une recherche avec « ma ».

Cette astuce ne peut pas fonctionner avec une plage de plusieurs colonnes.

2/ Toujours avec l’utilisation de « find » je suis obligé de neutraliser la 1 ère ligne si je veux que la recherche commence à compter du premier nom.

Je n’ai pas réussi à trouver de réponse sur le forum.
D’avance merci pour votre aide.
Cordialement
Goufra
 

Pièces jointes

  • 16 06 12 goufra.xlsm
    23.4 KB · Affichages: 50

Papou-net

XLDnaute Barbatruc
Re : Find rechercher à partir des 2 premiers caractères

Bonjour Goufra,

Dans ton cas, la recherche avec Find semble effectivement inadaptée.

La solution serait de passer par une boucle avec instruction de comparaison, comme détaillée ci-dessous:

Code:
Option Explicit
Option Compare Text

Sub Test()
Dim Cel As Range, Recherche$

Recherche = InputBox("Entrer le terme de votre  recherche.", Title:="Recherche")
For Each Cel In [tableau1]
  If Cel.Value Like Recherche & "*" Then
    'Ton code ici....
  End If
Next
End Sub
NB: si la comparaison doit respecter la casse de caractères, il te faut alors supprimer Option Compare Text.

Bon dimanche.

Cordialement.


Edit: Bonjour Marc, JP et bon dimanche également.
 
Dernière édition:

Goufra

XLDnaute Occasionnel
Re : Find rechercher à partir des 2 premiers caractères

Bonjour Merci à Vous trois,

Merci MArc L je croyais pouvoir m'en sortir avec Find, qui est pratique sauf à ...

JBB
à priori ton code une fois utilisé ne fonctionne plus si je demande le réaffichage des lignes. Le filtre ne fonctionne plus.
Je vais donc chercher.

Papou-net
Encore merci pour ta présence et ta réponse.
Je vais explorer ta proposition.

Je vous réponds dès que je vois le jour


Fait-il beau temps à Trégunc ? Sans rire nous avons un temps breton dans le perche ... du crachin

Bonne journée à vous trois
Bien cordialement
JC
 

jpb388

XLDnaute Accro
Re : Find rechercher à partir des 2 premiers caractères

re
pour tout ré-afficher tu supprimes le filtre
fonctionne très bien chez moi

pendant 15 jours du beau temps avec plus ou moins de soleil et depuis aujourd'hui on est parti pour des averses pendant 1 semaine
mais rien de terrible pour un Breton même importé

je te retourne le bonjour Papou-Net et bonne fin de journée à tous
 

Goufra

XLDnaute Occasionnel
Re : Find rechercher à partir des 2 premiers caractères

bonsoir,

Papou-net
J'ai donc suivi les conseils de papou-net. Le code est plus court que celui utilisé pour find.

Je ne peux pas utiliser la proposition de jbb je ne veux pas de la colonne supplémentaire.
Le filtre ne peut pas me convenir, je passe les cellules en revue pour utiliser la cellule concernée avec un autre code

Toutefois
- Avec l'utilisation de recherche & "*" -que j'avais zappé- je pensais quand même utiliser le find cf exemple joint
- Set R = .Find(recherche & "*", LookIn:=xlValues, lookat:=xlPart, MatchCase:=False)
-
- Mais il renvoie aux cellules qui contiennent "ma" après les 2 premiers caractères.
- Alors que recherche & "*" avec l'utilisation de like renvoie uniquement aux cellules qui ont "ma" en premiers caractères.

Bref, je pense avoir fait le tour
Avec mes remerciements, bien cordialement.
Bonne soirée
Goufra

.
 

Pièces jointes

  • goufra suite.xlsm
    26.8 KB · Affichages: 44

jpb388

XLDnaute Accro
Re : Find rechercher à partir des 2 premiers caractères

re
juste pour info je ne me sert que de la colonne Nom et de la cellule en jaune c'est tout
je n'ai pas enlevé ce que tu avais fait voila pourquoi il y a 2 colonnes
 

Goufra

XLDnaute Occasionnel
Re : Find rechercher à partir des 2 premiers caractères

Bonjour à tous
Merci pour ta précision JBB.

Barbatruc, merci à toi. Un petits souci des cellules commençant par ma, ne sont pas sélectionnées.
je vais regarder pourquoi.

Je vous adresse mon code que j'ai oublié de vous adresser. j'ai souscrit à la proposition de Papou-Net.
Il est court, il s'inscrit dans une série de modules ce qui m'empêche d'utiliser le double-clic.

Par nos échanges, des visiteurs éventuels pourront apprendre à utiliser le double-clic, la fonction like et une
boucle avec do et Loop While .
Bref nous avons été utile me semble-t-il..

Selon vous que dois-je faire pour indiquer la fin et ces 3 éléments.
Bonne journée à vous tous
bien cordialement
Goufra

PS: Il ne peut plus et le soleil est là ... sous les nuages épais.
 

Pièces jointes

  • goufra suite2.xlsm
    23.8 KB · Affichages: 43

Goufra

XLDnaute Occasionnel
Re : Find rechercher à partir des 2 premiers caractères

Re,

Barbatruc, concernant ton code j'ai ajouté Lcase pour neutraliser la casse.

Toutefois une question le chiffre 7 a-t-il une signification particulière, 2 faisait l'affaire ?

. If MsgBox("voir d'autres cas ?", vbYesNo, "") = 7 Then n=0 :Exit For

Au cas où merci d'éclairer ma lanterne et de me faire progresser.

Je te souhaite une bonne journée.
Cordialement
Goufra
 

Papou-net

XLDnaute Barbatruc
Re : Find rechercher à partir des 2 premiers caractères

Bonjour à tous,
Bonjour Goufra,

Juste pour le fun, une version avec liste déroulante de choix.

Cordialement.
 

Pièces jointes

  • Copie de goufra suite2.xlsm
    30.1 KB · Affichages: 53
Dernière édition:

Si...

XLDnaute Barbatruc
Re : Find rechercher à partir des 2 premiers caractères

salut

Je suppose que tu t’adresses à moi. Même si ce n’est pas le cas, je réponds ;)!

Dans
Code:
 If MsgBox("voir d'autres cas ?", vbYesNo, "") = 7 Then Exit For
Le 7 correspond à VbNo ; le 6 correspond à VbYes.

Quant à la variable n, elle sert à savoir si l’on continue ou pas.
On s’arrête si elle reste à 0 (le premier message) sinon, (>0) on continue après l’affichage du second message.

Pour s’affranchir de la « casse », on peut tout simplement chosir une nouvelle option.
D’ailleurs voici une nouvelle plus complète

Code:
Option Explicit
Option Compare Text ‘cest ici qu’on évite le problème du Majuscule/Minuscule
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  If Target <> "Nom" Then Exit Sub
  Dim Rc As String, R As Range, n As Byte
  Rc = InputBox("Entrer les premières lettres voulues.", "Recherche")
  For Each R In [Tableau1]
    If R Like Rc & "*" Then
       R.Select
       If R.Row = [Tableau1].Rows.Count + 7 Then
         MsgBox "C'est fini !", vbInformation, "Et voilà..."
         Exit Sub
       End If
       If MsgBox("voir d'autres cas ?", vbYesNo, "") = 7 Then Exit Sub
    End If
  Next
  If n = 0 Then MsgBox "pas de réponse !", vbCritical, "Recherche infructueuse"
End Sub

Tant qu’à faire, pour le fun comme Papou-net :D , voici 2 autres exemples.
Je n’aime pas tellement le InputBox donc, dans le second, je passe par un Userform.
 

Pièces jointes

  • Recherche ( premières lettres).xlsm
    40.1 KB · Affichages: 44

Goufra

XLDnaute Occasionnel
Re : Find rechercher à partir des 2 premiers caractères

Bonsoir,

Bravo à vous deux pour le fun
J'ai encore appris des trucs que je ne connaissais pas.

Vous gagnez à être connu !

Barbatruc je ne me suis pas pris pour toi mais tu as compris que tu étais concerné !
Etourderie quand tu nous tiens.


Expérience sympa
Cordialement
Goufra
 

Goufra

XLDnaute Occasionnel
Re : Find rechercher à partir des 2 premiers caractères

Re,
pour le fun concernant la gestion des erreurs avec inputbox

je propose


On Error Resume Next
N = Application.InputBox("XXXX", Type:=X)

'Gestion des erreurs avec N=:
' aucune saisie(blanc) n=0
' utilisation de Annuler ou Croix N= faux

If Len(N) = 0 Or N = "Faux" Then MsgBox "opé terminé": Exit Sub

************************************
On Error Resume Next
Set N = Application.InputBox("xxxxx", Type:=x)

z = N.Address

‘Gestion des erreurs de Input avec Set N
. La saisie est obligatoire donc pas d’erreur
. Utilisation de Annuler ou croix donne N=0 (msgbox N donne réponse vide).

If Len(N) = 0 Then MsgBox "opé terminé": Exit Sub



Cordialement
goufra
 

Discussions similaires

Statistiques des forums

Discussions
312 109
Messages
2 085 384
Membres
102 878
dernier inscrit
asmaa