Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Autres Récupérer numéro de ligne

Co_Lac

XLDnaute Junior
Bonjour,
J'ai un soucis de formatage de nombres!
**********************
Dabord je recherche le Max et le Min (ça, ça marche bien)
***************************
Dim Max As Single
Dim Min As Single
Max = Application.WorksheetFunction.Max(Range("E101:E" & Range("E65530").End(xlUp).Row))
Min = Application.WorksheetFunction.Min(Range("E101:E" & Range("E65530").End(xlUp).Row))
**********************************
La variable "Max" trouvé est avec 3 décimales soit = 0.050
*********************************
A partir de là ça se gate! (Récupéré sur le net!)

Dim Trouve As Range
Dim PlageDeRecherche As Range
Dim Valeur_Cherchee As Single
Dim AdresseTrouvee As String

*************************************
A partir de là, la variable Max est avec seulement 2 décimales soit = 0.05
*************************************
Valeur_Cherchee = Max
Set PlageDeRecherche = Sheets("Donnees bourse").Range("E101:E65530") 'plage de recherche
Set Trouve = PlageDeRecherche.Cells.Find(what:=Valeur_Cherchee, LookAt:=xlWhole, SearchFormat:=True)

If Trouve Is Nothing Then
AdresseTrouvee = Valeur_Cherchee & " n'est pas présent dans " & PlageDeRecherche.Address

*************************************
la recherche ne trouve pas le Max ! donc je passe là
*************************************
Else
AdresseTrouvee = Trouve.Address
End If

MsgBox AdresseTrouvee

En conclusion j'ai un problème de formatage des nombres que je n'arrive pas à résoudre!
Merci pour votre aide
Claude
 

jmfmarques

XLDnaute Accro
Bonjour
 

patricktoulon

XLDnaute Barbatruc
un petit exemple de ma facon de fonctionner
VB:
Sub test()
    Dim adresse$, celluletrouvée As Range
    With Sheets(1)    'sheets a adapter
        adresse = .Range("A1", Cells(Rows.Count, "A").End(xlUp)).Address(0, 0)'lettre de colonne a adapter
        Set celluletrouvée = .Range("A" & Evaluate("=MAX((" & adresse & "=MAX(" & adresse & "))*ROW(" & adresse & "))"))'lettre colonne a adapter 
    End With

    MsgBox celluletrouvée.Address
End Sub
 

Co_Lac

XLDnaute Junior
Bonsoir
Merci pour votre réponse!
Mais ça marche pour le Max mais j'ai aussi le Min à chercher et je ne trouve pas quoi changer!
J'ai changé MAX par MIN mais ça ne marche pas !
Que dois je faire SVP ?
 

patricktoulon

XLDnaute Barbatruc
re
puisqu'il faut tout faire

le max
VB:
Sub MAX()
    Dim adresse$, celluletrouvée As Range
    With Sheets(1)    'sheets a adapter
        adresse = .Range("A1", Cells(Rows.Count, "A").End(xlUp)).Address(0, 0) 'lettre de colonne a adapter
        Set celluletrouvée = .Range("A" & Evaluate("=MAX((" & adresse & "=MAX(" & adresse & "))*ROW(" & adresse & "))")) 'lettre colonne a adapter
    End With

    MsgBox celluletrouvée.Address
End Sub

le min
VB:
Sub MIN()
    Dim adresse$, celluletrouvée As Range
    With Sheets(1)    'sheets a adapter
        adresse = .Range("A1", Cells(Rows.Count, "A").End(xlUp)).Address(0, 0) 'lettre de colonne a adapter
        Set celluletrouvée = .Range("A" & Evaluate("=MAX((" & adresse & "=MIN(" & adresse & "))*ROW(" & adresse & "))")) 'lettre colonne a adapter
    End With

    MsgBox celluletrouvée.Address
End Sub

VERSION 2
COMPORTEMENT DE FIND

MAX 1 ere occurrence

VB:
Sub MAXFIRST()
    Dim adresse$, celluletrouvée As Range
    With Sheets(1)    'sheets a adapter
        adresse = .Range("A1", Cells(Rows.Count, "A").End(xlUp)).Address(0, 0) 'lettre de colonne a adapter
    Set celluletrouvée = .Range("A" & Evaluate("= MATCH(MAX(" & adresse & ")," & adresse & ",0)"))
      End With

    MsgBox celluletrouvée.Address
End Sub

MIN 1 ere occurence
VB:
Sub MINFIRST()
    Dim adresse$, celluletrouvée As Range
    With Sheets(1)    'sheets a adapter
        adresse = .Range("A1", Cells(Rows.Count, "A").End(xlUp)).Address(0, 0) 'lettre de colonne a adapter
       Set celluletrouvée = .Range("A" & Evaluate("= MATCH(MIN(" & adresse & ")," & adresse & ",0)"))
     End With

    MsgBox celluletrouvée.Address
End Sub
cette fois ci j'ai tout dis
 
Dernière édition:

Co_Lac

XLDnaute Junior
Je vous remercie pour toutes ces informations!
Entre temps j'ai testé et réussi à trouver la solution, je ne connaissais pas ce principe, je débute en vba, j'ai 68 ans, je n'ai que le CEP, je trouve ça trés passionnant et j'ai besoin d'apprendre!
Je suppose qu'à un moment de votre expérience vous avez vous aussi du apprendre et j'espère pour vous que vous ne savez pas tout!!
Avant de savoir on ne savait pas!
Merci pour votre réactivité.
Bonne soirée
 

Dranreb

XLDnaute Barbatruc
Bonsoir.
Information. "0.05" n'aboutit pas à la même valeur selon qu'il est converti en Single ou en Double. En Double: 3602879701896397 / 2^56, en Single: 13421773 / 2^28
En Double : 0,05000000000000000277555756156289135105907917022705078125
En Single : 0,0500000007450580596923828125
 

Discussions similaires

Réponses
8
Affichages
891
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…