Petit soucis avec Find

Résolu/Fermé
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 - 4 mai 2017 à 16:29
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 - 5 mai 2017 à 14:38
Bonjour le forum
je voudrais rechercher que les deux premiers caractères d'un nombre de 5 chiffres figurant dans une colonne et n' y parviens pas en utilisant la formule ci-après
If .Find(What:=comptema, LookIn:=xlValues) .. dans la procédure suivante

Dim comptema As Variant
Dim derlig As Integer
comptema = TextBox1.Value
comptema = Left(comptema, 2)

With Feuil7
derlig = .Range("D" & Rows.Count).End(xlUp).Row
With Range("D6:D" & derlig)
'If .Find(comptema, LookIn:=xlValues) Is Nothing Then
If .Find(What:=comptema, LookIn:=xlValues) Is Nothing Then
MsgBox "Sélectionner un compte", vbExclamation + vbDefaultButton2, "erreur"
TextBox1 = ""
cancel = True
Exit Sub
End If
End With

ActiveSheet.Range("$D$5:$D$" & derlig).AutoFilter Field:=1, Criteria1:=comptema

End With

qu'est ce qui ne va pas ?

merci


7 réponses

thev Messages postés 1852 Date d'inscription lundi 7 avril 2008 Statut Membre Dernière intervention 23 avril 2024 681
4 mai 2017 à 16:43
Bonjour,

utilise un masque de ce genre :
comptema = "45*" si par exemple 45 sont les 2 premiers chiffres à rechercher.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié le 4 mai 2017 à 17:12
Bonjour

Sur ton code, tu testes uniquement l'absence de comptema ?

un essai
Option Explicit
'-----------------------------
Sub vvv()
Dim Comptema As String ' comptema est donné par un textbox et est donc du texte

Comptema = Left(TextBox1.Value, 2)

With Sheets("Feuil7")
On Error GoTo erreur
.Columns("D").Find(What:=Comptema, After:=Range("D5")).Select 'pour demo: on va sur la cellule trouvée contenant au moins comptema (valable si par ex "rrgggg" ou "hhhrrggg")
End With
'code éventuel.......
Exit Sub
erreur:
MsgBox "Sélectionner un compte", vbExclamation + vbDefaultButton2, "erreur"
'TextBox1 = ""
'cancel = True
End Sub






 Michel
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
4 mai 2017 à 17:19
PS 17:16h

si tu ne veus que les 2 lettres de comptema et seulement ces 2 lettre ajoute à find

Find(What:=Comptema, After:=Range("D5"), XlLookAt := xlWhole ).
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
4 mai 2017 à 18:23
michel j'ai comme réponse argument introuvable
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3
4 mai 2017 à 17:18
bonjour thev et michel
désolé thev mais ta proposition ne fonctionne pas

michel je teste la tienne
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3
4 mai 2017 à 17:52
Michel
oui je teste uniquement l'absence de comptema
mais comment puis je avec ta solution filtrer sur toute la colonne les deux premiers caractères du nombre
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
5 mai 2017 à 08:03
bonjour

SI tu veux simplement tester l'absence de comptema, tu as plus simple que la fonction Find (pas la peine de se prendre la tête !) ;-)

en résumant (comptema en 2 lettrrs)

si les 2 lettres seulement et pas d'autres lettres ou chiffres
If application.countif(Range("D6:D" & derlig),comptema)=0 then
Msgbox.....
si les 2 lettres incluses avec d'autres lettes ou chiffres
If application.countif(Range("D6:D" & derlig),"*" & comptema & "*")=0 then
Msgbox.....



 Michel
0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3
Modifié le 5 mai 2017 à 12:34
Bonjour Michel

Tu as parfaitement raison Michel pourquoi faire compliqué quand on peut faire simple

j'ai appliqué l'une ou l'autre de tes formules mais j'obtiens le message d'erreur methode range de l'objet global a échoué"
j'ai certainement oublié quelque chose quelque part


comptema = Left(TextBox1.Value, 2)
Sheets("compte").Activate
' With Feuil7
With Sheets("compte")
derlig = Range("D" & Rows.Count).End(xlUp).Row

With Range("D5:D" & derlig)

If Application.CountIf(Range("D6:D") & derlig, "*" & comptema & "*") = 0 Then
MsgBox "Sélectionner une activité réalisée", vbExclamation + vbDefaultButton2, "Activité non réalisée"
TextBox1 = ""
cancel = True
Exit Sub
End If

End With

ActiveSheet.Range("$D$5:$D$" & derlig).AutoFilter Field:=1, Criteria1:="=" & comptema & "*", _
Operator:=xlAnd

End With
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié le 5 mai 2017 à 13:51
Quand tu es dans un bloc With -End with, les objets à l'intérieur du bloc doivent ^tre
précédés d'un point

+ parenthèse mal placée

>.Range("D" & Rows.Count).End(xlUp).Row

With .Range("D5:D" & derlig)

If Application.CountIf(.Range("D6:D" & derlig, "*" & comptema & "*") = 0 Then
...

0
max850 Messages postés 305 Date d'inscription dimanche 10 janvier 2016 Statut Membre Dernière intervention 4 janvier 2020 3
5 mai 2017 à 14:38
Parfait Michel
ai juste ajouter une ) après derlig

If Application.CountIf(.Range("D6:D" & derlig, "*" & comptema & "*") = 0 Then
...

merci beaucoup pour ta patience
0