Microsoft 365 Fonction Equiv en VBA (Bizare)

Lolote83

XLDnaute Barbatruc
Bonjour à tous,
Je souhaitais simplement récupérer en VBA la valeur de la ligne correspondant à la date du jour dans un tableau structuré.
Pour cela, j'utilise la fonction correspondant à EQUIV (Application.Match.......)
- Si je fais appel à la cellule B2 (Jaune) la fonction Application.Match = OK
- Si par contre, j'affecte à une variable la valeur de le cellule B2, la fonction Application.Match = NON OK
- Si j'affecte à une variable la fonction DATE, le résultat ne fonctionne pas = NON OK
- Et pour finir, je comptais me passer d'une cellule intermédiaire voire même d'une variable et donc utiliser la fonction DATE directement, la fonction Application.Match = NON OK
J'ai bien essayé de déterminer mes variables en les définissant comme Date mais cela ne change pas le résultat.
J'ai même essayé en combinant avec CDATE(....) mais pas plus de résultat.
Je ne comprends pas pourquoi et surtout quelle serait la solution.
Merci à tous pour votre collaboration.
Cordialement
Lolote83
 

Pièces jointes

  • Fonction EQUIV en VBA (bizare).xlsm
    25.8 KB · Affichages: 10
Dernière édition:
Solution
re
Bonjour lolote83
allons allons tu sais très bien que les dates dans les cellules sont des numerique et non ce que tu vois
sauf si elle sont en numberformat "@"

VB:
Sub ReupNumLig()
    'Dim xDateDuJour2 As Date
    'Dim xDateDuJour3 As Date
   
   
    'OK = Date du jour saisie en cellule B2 : Formule = aujourd'hui()
    xLig1 = Application.Match(Range("B2"), Range("Tableau2[Date]"), 0)
   MsgBox xLig1
   
    'NON OK = Affectation de la valeur de la cellule B26 à variable xDateDuJour2
    xDateDuJour2 = Range("B2")
    xLig2 = Application.Match(CLng(xDateDuJour2), Range("Tableau2[Date]"), 0)
    MsgBox xLig2
 
    'NON OK = Affectation de la date du jour (fonction date) à variable xDateDuJour3
    xDateDuJour3 = Date
    xLig3 =...

patricktoulon

XLDnaute Barbatruc
re
Bonjour lolote83
allons allons tu sais très bien que les dates dans les cellules sont des numerique et non ce que tu vois
sauf si elle sont en numberformat "@"

VB:
Sub ReupNumLig()
    'Dim xDateDuJour2 As Date
    'Dim xDateDuJour3 As Date
   
   
    'OK = Date du jour saisie en cellule B2 : Formule = aujourd'hui()
    xLig1 = Application.Match(Range("B2"), Range("Tableau2[Date]"), 0)
   MsgBox xLig1
   
    'NON OK = Affectation de la valeur de la cellule B26 à variable xDateDuJour2
    xDateDuJour2 = Range("B2")
    xLig2 = Application.Match(CLng(xDateDuJour2), Range("Tableau2[Date]"), 0)
    MsgBox xLig2
 
    'NON OK = Affectation de la date du jour (fonction date) à variable xDateDuJour3
    xDateDuJour3 = Date
    xLig3 = Application.Match(CLng(xDateDuJour3), Range("Tableau2[Date]"), 0)
  MsgBox xLig3
 
End Sub

et pour preuve
si on évalue la formule en VBA on se rend bien compte que c'est bien la valeur numérique qui est prise en compte sinon ça ne fonctionne pas
VB:
xDateDuJour4 = Range("B2")
    xLig4 = Evaluate("=MATCH(" & CLng(xDateDuJour4) & ",Tableau2[Date],0)")
    MsgBox xLig4



;)
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
et si tu n'es pas encore convaincue teste ceci
MsgBox "ce que l'on voit " & [B2].Value & vbCrLf & " ce que l'on ne voit pas " & [B2].Value2
conclusion avec les dates choisi toujours la valeur absolue ".value2"

exemple avec un qui ne fonctionnait pas
VB:
Sub test2()
'NON OK = Affectation de la valeur de la cellule B26 à variable xDateDuJour2
    xDateDuJour2 = Range("B2").Value2'!!!!!!!!!!!!!!!(.value2)
    xLig2 = Application.Match(xDateDuJour2, Range("Tableau2[Date]"), 0)
    MsgBox xLig2
End Sub
'maintenant oui ca marche '
 

Lolote83

XLDnaute Barbatruc
Re bonjour Patrick,
Merci encore pour le complément d'information.
Je voyais souvent le .value et .value2 mais je ne connaissait leur différence.
C'est donc maintenant chose faite.
Le plus dur sera de s'en souvenir.
@+ Lolote83
 

Discussions similaires

Réponses
8
Affichages
439

Statistiques des forums

Discussions
312 025
Messages
2 084 742
Membres
102 651
dernier inscrit
Poppy-Stef