recherche d'adresse

L

léa

Guest
Bonjour à tous,

A mon tour de faire appel. Et oui ça me rappelle le bon temps où j'usais et abusais de vos compétences

Je tourne en rond depuis hier avec un petit bout de code qui m'ennuie. Le but étant de rechercher l'adresse de la cellule d'une plage contenant la valeur minimale parmi toutes les valeurs de la plage ( le cas où il y a deux cellules répondant à la question ne me gène pas)
Voici le code :

minimum = Application.WorksheetFunction.Min(Range("A1:B7"))
Set cellmin = Range("A1:B7").Find(minimum)
MsgBox cellmin.Address

le minimum est bien trouvé, mais quand je demande l'adresse de la cellule qui le contient avec la fonction "Find"
1) la cellule A1 est omise dans la recherche
2) si le minimum est 2 il m'indiquera la première cellule (ormi A1) dans laquelle il y a un 2

voir fichier ci-joint

Merci et toutes mes amitiés à cette joyeuse bande de superexcelleurs que je croise sur ce forum

Léa
 

Pièces jointes

  • minimum.zip
    8.4 KB · Affichages: 20
  • minimum.zip
    8.4 KB · Affichages: 19
  • minimum.zip
    8.4 KB · Affichages: 20
M

Minick

Guest
Salut,

Essai comme ceci:

minimum = Application.WorksheetFunction.Min(Range("A1:B7"))
If Range("A1").Value <> minimum Then
Set cellmin = Range("A1:B30").Find(minimum, LookAt:=xlWhole)
MsgBox cellmin.Address
Else
MsgBox Range("A1").Address
End If


Tu resmarqueras le LookAt:=xlWhole qui indique qu'il faut rechercher la
valeur exact dans la cellule,
et la verification de la 1ere cellule car avec une recherche, la premiere cellule
verifiéa n'est pas 1ere cellule de la plage mais la 2eme, ce qui expliquait qu'il trouvait
A6 et non A1

Voila j'espere que c'est clair

@+ Minick
 
L

léa

Guest
Bonjour Minick,

Ce fut clair comme de l'eau de roche
fallait-il connaître l'argument "LookAt:=xlWhole, on ne peut pas tout connaître
Tu me diras qu'en fouinant un peu plus dans l'aide j'aurais du le trouver ... d'autant plus qu'on le met en contaposition avec LookAt:=xlPart

Je te remercie énormément et te souhaite une excellente fin de journée

A un de ces jours sur le Forum
Léa
 
L

léa

Guest
Bonsoir Minick,

Je crois que suis vraiment fachée avec la fonction Find

En effet mon bout de code précédent ne fonctionne pas quand dans les cellules de ma plage il y a des formules et non des valeurs
J'ai cru bien faire en ajoutant l'argument Lookin:=xlFormulas
mais que nenni, rien n'y fait
qu'elle bétise ai-je faite ?

Encore merci

Léa
 
B

Bricofire

Guest
Bonsoir le fil, le forum, Léa,

La fonction find a des arguments sensibles et des particularités, qui sont heureusement pour ce coup bien documentés dans l’aide VBA, par contre elle fait vite (?) et bien pas mal de choses en te permettant d’intervenir à plusieurs étages.
En effet, elle commence sa recherche sur la deuxième case, ce qui est trompeur, mais elle boucle si on veut, ce qui peut se révéler infini…
En Pj, je t’ ai mis une classeur brouillon (il est tard), ( gaffe,y a des choses qui n’ont rien à voir), mais qui tourne. J’ ai adapté vite fait le code d’une précédente réponse qui vient lui-même d’une appli plus grosse…
Pour le test et le fun, CTRL+Shift+Maj lance la recherche, en tapant 11007 (Bond habite l’Aude), tu trouveras plusieures occurrences sur plusieures feuilles.
Si tu regardes en ligne 29 de la feuille AB1, le code en bleu est une formule que find trouve aussi : Explication : dans le code, change le paramètre LookIN de Find en mettant xlFormulas à la place de XLValue, relance idem….
Si tu lances la recherche avec 99999, il le trouvera tout de suite en AB1 quoiqu’étant en 1ère place, il semble que s’il y a une occurrence unique, il boucle tout seul automatiquement .
Bref pas mal de comportements trompeurs, mais pleins de possibilités…
(PS la feuille (AB2) date d’avant…)
Bon ça c’est pour le pb find, mais il y a comment continuer la boucle, comment l’arrêter et comment inclure une valeur/formule, donc j’espère, pour toi, de quoi l’adapter à ton pb…

Cordialement,

Bfr
 

Pièces jointes

  • REp-Lea.zip
    23.8 KB · Affichages: 26
L

léa

Guest
Bonjour Minick, bonjour Bfr
Bonjour le forum,

Je tiens à remercier Minick et Bfr et leur dire qu'à défaut d'être bête, j'aurais intérêt à être un peu plus posée dans mes recherches.
En effet, je vous ai sollicités car, pour répondre à une question que j'avais interceptée sur le Forum, j'avais cru bien faire d'utiliser la fonction "Find" que je ne maîtrisais pas bien. Maintenant croyez moi, grâce à vos conseils et grâce à mes plantages, je crois connaître cette fonction sur les bouts des doigts à défaut de la connaître sur le bout des ongles.

Le problème que j'avais était du au fait que, comme toujours, je lisais en diagonale et trop rapidement le fichier que m'avais envoyé le demandeur.
Il avait formaté les cellules a analyser au format "Monétaire" en cachant le symbôle monétaire (largeur cellule adapté). De ce fait quand je demandais de chercher la valeur minimale (exemple 1) il ne la trouvait pas car la cellule contenait "1 F". De plus si j'utilisais l'argument "LookAt:=xlPart" je me retrouvait confrontée au problème signalé plus haut : il me donnait la première cellule contenant un 1 (exemple 10).
Conclusion, pour le moment j'ai formaté mes cellules au format nombre et je vais essayé de bidouiller un truc .

Et voila, une fois de plus je fus ratrapée par mon grand défaut, foncer tête baissée

Encore merci et bises à tous les deux

Léa
 
L

léa

Guest
Bfr et Minick bonjour,

Eh oui c'est encore elle ! Léa !!!
Je croyais avoir tout compris avec la fonction Find, mais je crois que nous ne sommes pas copines toutes les deux.

Le "solliciteur" me signale que cette fonction refuse de reconnaître la valeur minimale lorsque cette dernière est décimale. Mais attention la plage d'étude est constituée de cellules dans lesquelles les données ne sont pas des nombres en tant que tels, mais des formules dont le résultat déductif sont des nombres, éventuellemnet décimaux
J'ai vérifié et en effet dans le cas d'une valeur minimale décimale Find me renvoie "Nothing"
Je suis intervenue sur l'argument "Lookin", mais rien à faire
Je fais donc appel à vous une fois de plus pour essayer de résoudre ce problème, et je vous jure que chaque fois que je trouverai un Fil dans lequel apparaîtra la fonction "Find", je l'ignorerai

Bises
léa
 
L

léa

Guest
J'ai réduit le fichier et t'envoie que la partie qui pose problème
J'ai mis les explications dans la feuille

Léa
 

Pièces jointes

  • Classeur1.zip
    13.7 KB · Affichages: 23
  • Classeur1.zip
    13.7 KB · Affichages: 22
  • Classeur1.zip
    13.7 KB · Affichages: 17
L

léa

Guest
Hervé tu n'es ni fatigué, ni bigleux, c'est moi qui commence à me fatiguer face à ce problème
J'ai voulu réduire le fichier et je l'ai tellement réduit que jai supprimé la macro
Cette fois ci elle doit y être et pour être sure j'ai même ajoputé un bouton, deux précautions valent mieux qu'une

Léa
 

Pièces jointes

  • Classeur1.zip
    20.2 KB · Affichages: 20
  • Classeur1.zip
    20.2 KB · Affichages: 26
  • Classeur1.zip
    20.2 KB · Affichages: 21
M

Minick

Guest
Salut,

Bon je seche un peu sur ce coup la.
J'obtiens un resultat bizarre.

Cependant , je te joins un code beaucoup plus simple et qui fonctionne pour arriver au meme resultat.

Application.ScreenUpdating = False
For L = 5 To Range("G65530").End(xlUp).Row
Set maplage = Sheets("Vegetables").Range("G" & L & ",I" & L & ",K" & L & ",M" & L & ",O" & L)
minimum = Application.WorksheetFunction.Min(maplage)

If minimum <> 0 Then
For S = 7 To 15 Step 2
If Cells(L, S).Value = minimum Then
Cells(L, S).Interior.ColorIndex = 3
Else
Cells(L, S).Interior.ColorIndex = 2
End If
Next S
End If
Next
Application.ScreenUpdating = True


Je continue a chercher avec la solution d'origine et je te tiens au courant.

@+ Minick
 
L

léa

Guest
Mais c'est bien sur !!!
Pourquoi faire compliqué quand on peut faire simple ?

Et bien tout simplement parce que j'étais obnibulée par cette fonction "Find" sur laquelle je me casse les dents depuis 2 jours

Merci Minick
Au cas où tu trouves le pourquoi du non fonctionnement de ce code avec "Find" tiens moi au courant
A charge de revanche

Amicalement
Léa
 
M

Minick

Guest
Re,

Juste en passant, je viens de penser qu'il y avait encore plus simple
et sans macro, avec la mise en forme conditionnelle.

@+ Minick
 

Pièces jointes

  • Classeur1.zip
    14.2 KB · Affichages: 24
  • Classeur1.zip
    14.2 KB · Affichages: 28
  • Classeur1.zip
    14.2 KB · Affichages: 25

Discussions similaires

Réponses
12
Affichages
729
Réponses
7
Affichages
678

Statistiques des forums

Discussions
314 017
Messages
2 104 579
Membres
109 081
dernier inscrit
Vio21