Microsoft 365 vba find valeurs répondant à une condition d'inégalité

cw79

XLDnaute Nouveau
bonjour,

J'ai un textbox sur un usf qui permet de saisir un montant. Je souhaite ensuite rechercher toutes les valeurs qui se situent dans une plage donnée et répondant au critère activecell > montant. Le problème que je rencontre est le suivant : je n'arrive pas à parcourir la plage de données en respectant un arrêt sur chacune des cellules répondant au critère de supériorité. l'algo. fonctionne si je place un msgbox dans la boucle de recherche des cellules répondant au critère. Par contre en l'absence du msgbox l'algo. s'arrête sur la dernière cellule répondant au critère. je précise que l'usf. est déclarer en mode non modal : usf.show 0. Afin de permettre une modification du contenu de la cellule sélectionnée.
En vous remerciant d'avance pour votre aide.
 

Pièces jointes

  • fichierProbFindInegalite.docx
    12.5 KB · Affichages: 15

cw79

XLDnaute Nouveau
reBonjour,

Merci pour votre piste. Elle fonctionne bien cf. le code modifier selon vos spécifications. Mais cela ne répond pas exactement à mon souhait. Je souhaite que le userForm pilote le find via un bouton "SUIVANT" qui permet de passer d'une cellule à l'autre (cellule respectant la condition d'inégalité).

Ensuite une fois sur une cellule active un simple clic sur la cellule permet une maj de celle-ci. Ou alors un clic sur le bouton "SUIVANT" du userForm permet d'atteindre la cellule suivante. Finalement un comportement proche de la boite de dialogue Find. Encore merci pour votre aide.
 

Pièces jointes

  • fichierFindValSupStrict.docx
    12.5 KB · Affichages: 2

cw79

XLDnaute Nouveau
Voici la procédure que j'utilise et qui sans un msgbox n'affiche que la dernière cellule répondant à la condition d'inégalité. Or je souhaite que chaque clic sur le bouton "suivant" de l'usf passe à la cellule suivante respectant le critère d'inégalité.
Voici le code de la procédure avant la modification introduisant un inputBox pour mettre à jour les cellules selectionnées. Mais comme expliqué plus haut la solution ne me convient pas pour les raisons déjà évoquées.

VB:
rivate Sub TraitFindValSupStrict()
 
    Dim valCherchee As String
    Dim y1 As Currency
    Dim plage, cell As Variant
        
    AdapterZoomSelonResolution
        
    If moisInit Then
      moisCourant = UserForm15.DTPicker1.Month
      moisFin = UserForm15.DTPicker2.Month
      moisInit = False
      y1 = Val(UserForm15.TextBox1.Text)
      maPlage = "C3:" & colonneFinPlage(moisCourant, posLigneSommeColonne)
    End If
    
    With Sheets("MaFeuille")
      Set plage = Range(maPlage)
      For Each cell In plage
        If cell.Value > y1 Then
          .Cells(cell.Row, cell.Column).Select
           MsgBox "Contenu de la cellule active : " & Cells(cell.Row, cell.Column).Value
        End If
      Next cell
    End With
    MsgBox "FIN DE LA RECHERCHE"
    
End Sub
 

cw79

XLDnaute Nouveau
Désolé mais je ne comprends pas votre demande. De quel tableau s'agit-il ? Je souhaite simplement obtenir le même mode de fonctionnement que la boite de dialogue FIND mais qui prenne en compte non pas une égalité mais une inégalité.