Petit soucis avec Find

Résolu
max850 Messages postés 312 Statut Membre -  
max850 Messages postés 312 Statut Membre -
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

  1. thev Messages postés 2010 Date d'inscription   Statut Membre Dernière intervention   723
     
    Bonjour,

    utilise un masque de ce genre :
    comptema = "45*" si par exemple 45 sont les 2 premiers chiffres à rechercher.
    0
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
      1. max850 Messages postés 312 Statut Membre 3 > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        michel j'ai comme réponse argument introuvable
        0
  3. max850 Messages postés 312 Statut Membre 3
     
    bonjour thev et michel
    désolé thev mais ta proposition ne fonctionne pas

    michel je teste la tienne
    0
  4. max850 Messages postés 312 Statut Membre 3
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  7. max850 Messages postés 312 Statut Membre 3
     
    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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      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
  8. max850 Messages postés 312 Statut Membre 3
     
    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