Fonction find pour des valeurs monétaires

Mabouille2016 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention   -  
 Mabouille2016 -
Bonjour,
Émotion, première question sur ce forum, salut à tous!
Dans une sélection de cellules d'une feuille Banque, toutes des valeurs monétaires, je cherche l'adresse de la cellule qui contient un Montant préalablement inscrit dans une cellule d'une autre feuille du même dossier, format monétaire aussi.
Worksheets("Rech Montant").Select
Montant = Range("H1")
With Worksheets(Banque).Range("H3:K1000")
Set C = .Find(Montant, LookIn:=xlValues)
If Not C Is Nothing Then
firstAddress = C.Address
blablabla après

Mais ça ne marche pas, C reste Nothing, pourtant je vois bien que le montant voulu est bien là.
Est-ce un problème de déclaration de variable (Montant est en Variant), ou de paramétrage de l'outil Recherche? ou d'écriture correcte de Find (xxxxx) , ou autre?
Merci d'avance de vos réponses
A voir également:

4 réponses

eriiic Messages postés 24603 Date d'inscription   Statut Contributeur Dernière intervention   7 276
 
Bonjour et bienvenue,

Avec un fichier on pourrait tester notre réponse avant... Penses-y la prochaine fois.
xlValues porte mal son nom, il correspond plus à .Text (ce qui est affiché)
- si ce sont des valeurs saisies, essaie avec =xlFormulas :
Set c = Columns(3).Find(6, LookIn:=xlFormulas)

- si ce sont des formules, recherche la ligne avec equiv() :
lig = Application.Match(6, Columns(3), 0)
Mais pour une recherche multiple tu vas t'amuser à décaler les plages de recherche suscessives...
A ta place je mettrai en format virgule fixe le temps de la recherche et restaurerai le monétaire ensuite.

eric
0
Mabouille2016 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Merci Eric,
Je vais essayer avec Formulas car ce sont toutes des valeurs saisies.
J'ai bricolé en attendant un truc plus bourrin mais qui marche, qui consiste à parcourir ligne par ligne avec Offset la colonnes des montants d'opérations de chaque banque jusqu'à ce qu'on trouve le Montant recherché, après on reprend le reste de la macro comme si Find avait marché.
OK c'est moins élégant que find mais ça va presque aussi vite Toutefois je vais pour le sport essayer Formulas et je reviendrai dire le résultat ici.
Cordialement
0
Mabouille2016 Messages postés 3 Date d'inscription   Statut Membre Dernière intervention  
 
Bon, j'ai mis ma réponse en commentaire, je ne sais pas ce qui vaut mieux, aussi je la recopie ci-dessous:
Merci Eric,
Je vais essayer avec Formulas car ce sont toutes des valeurs saisies.
J'ai bricolé en attendant un truc plus bourrin mais qui marche, qui consiste à parcourir ligne par ligne avec Offset la colonnes des montants d'opérations de chaque banque jusqu'à ce qu'on trouve le Montant recherché, après on reprend le reste de la macro comme si Find avait marché.
OK c'est moins élégant que find mais ça va presque aussi vite Toutefois je vais pour le sport essayer Formulas et je reviendrai dire le résultat ici.
Cordialement
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
bonjour Mabouille, Eric

la fonction Find boude avec les formats de nombres; pour fonctionner, il faut donc enlever les formats des nombre (source et cible) et de les remettre après... Je sais, c'est pas triste chez MS !
:-8

la macro de l'exemple ci joint avec du monétaire ( m^me punition avec des dates par ex)
Option Explicit
'-----------
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$B$3" Then
Target.NumberFormat = "general"
With Sheets(2).Range("C5:G14")
.NumberFormat = "General"
MsgBox .Find(Target, .Range("C5")).Address
.NumberFormat = "#,##0.00 $"
End With
Target.NumberFormat = "#,##0.00 $"
End If


la maquette:
https://mon-partage.fr/f/H7PmF9XW/
0
Mabouille2016
 
merci Michel, je n'ai pas essayé ça faute de temps, promis je viendrai rendre compte ici dans la semaine. Intuitivement je pense que ça devrait marcher, c'est probablement la question du format qui empêche find de finder !

Eric en utilisant formulas ça marchouille= ça donne le montant recherché mais plusieurs autres avec, par ex tu demandes tous les 100,00 tu les as mais tu as aussi 1000,00 et 1100.00 et même des montants qui n'ont rien à voir.
Je vais essayer le truc de Michel, pour la gloire et contribuer à faire avancer le schmilblick "find", parce que sinon ma solution "bourrin" (voir mon post du 10/12) a marché, j'ai ma macro.
Merci les gars
0