XL 2016 VBA - Problème de filtre sur colonne

Dudu2

XLDnaute Barbatruc
Bonjour

1643008546184.png

Le problème est le suivant:
- Je veux filtrer sur la colonne D.
- La valeur de filtre est 1714426200108 représenté sous forme 1,71443E+12 dans la cellule dont le format est "Standard".

Si je filtre sur 1714426200108 je n'obtiens aucun résultat.
Il faut que je filtre avec la valeur 1,71443E+12. qui peut signifier des valeurs très différentes.
Comment en VBA puis-je récupérer le contenu de la cellule sous sa forme affichée: 1,71443E+12 ?

Merci par avance.
 
Dernière édition:
Solution
Re,

C'est parce que votre cellule n'a pas de format particulier. Mettez un format numérique ou scientifique et ça passera.

Si je me réfère strictement à votre demande initiale :
Comment en VBA puis-je récupérer le contenu de la cellule sous sa forme affichée: 1,71443E+12 ?

La propriété Text de la cellule avec ou sans format devrait suffire, . Soit : 3,0122E+11

Dans votre macro :
VB:
Sub a()
    Dim S As String
    S = [A1].Text
    
    MsgBox S
End Sub

Cordialement

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

VB:
Range("LaCellule").DisplayFormat.NumberFormat

Ou pour être plus juste :
Code:
format(range("A1"),range("A1").DisplayFormat.NumberFormat)
Ou qui semble fonctionner :
VB:
format(range("A1"),range("A1").NumberFormat)
Ou agrandissez la largeur de colonne et mettez un format numérique idoine.


Cordialement
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Chez moi çeci fonctionne :
VB:
cdbl(format(range("A1"),range("A1").NumberFormat))
qui donne : 1714426200108 en valeur numérique

Range("A1").Value2 vous donnera directement : 1714426200108

Ne pas oublier que Format() renvoie du texte et non un nombre.

Cordialement
 

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

C'est parce que votre cellule n'a pas de format particulier. Mettez un format numérique ou scientifique et ça passera.

Si je me réfère strictement à votre demande initiale :
Comment en VBA puis-je récupérer le contenu de la cellule sous sa forme affichée: 1,71443E+12 ?

La propriété Text de la cellule avec ou sans format devrait suffire, . Soit : 3,0122E+11

Dans votre macro :
VB:
Sub a()
    Dim S As String
    S = [A1].Text
    
    MsgBox S
End Sub

Cordialement
 

Dudu2

XLDnaute Barbatruc
Sauf à faire un code bidouille du genre:
VB:
Sub a()
    MsgBox FormatExposant([A1])
End Sub

Function FormatExposant(Cellule As Range) As String
    Dim d As Double
    Dim S As String
    Dim i As Integer
    
    S = CStr(Cellule.Value)
    If Len(S) >= 12 Then
        S = Left(S, 1) & "," & Mid(S, 2, 4) & "E+" & Len(S) - 1
    End If
    
    FormatExposant = S
End Function
 

Dudu2

XLDnaute Barbatruc
@ Hasco,

Oui, j'ai lu tous tes posts.
Quant à moi j'ai bien précisé.
- La valeur de filtre est 1714426200108 représenté sous forme 1,71443E+12 dans la cellule dont le format est "Standard".
Je ne peux pas changer le format en nombre car le format Exposant disparait.
Je ne peux pas non plus le changer en format scientifique car alors il faut que je connaisse le nombre de décimales à préciser.

La propriété Text de la cellule avec ou sans format devrait suffire, . Soit : 3,0122E+11
Et en effet, cette propriété que je ne connaissais pas donne le résultat escompté sans avoir à modifier le format de la cellule.
Merci !
 
Dernière édition:

Dudu2

XLDnaute Barbatruc
Je n'utilise quasiment jamais la fenêtre espion et je sais que je devrais pour faciliter le debug notamment, ni les points d'arrêt dont je ne sais pas me servir.

En tous cas, cette propriété Cellule.Text est une révélation pour moi et rétrospectivement je me rends compte qu'elle aurait pu me servir dans d'autres codes.
Merci encore pour cette découverte.
Bonne journée.
 

Discussions similaires

Statistiques des forums

Discussions
311 733
Messages
2 082 019
Membres
101 872
dernier inscrit
Colin T