Conversion date

Bonjour,

A partir d'un fichier excel et à l'aide d'une fonction Recherche qui prend un string en argument, je souhaite rechercher une date dans un autre fichier excel. La fonction en question se place sur la feuille du fichier concerné, et sur la bonne colonne. Aucun problème sur la fonction, elle a fait ses preuves dans d'autres situations.

Le problème est le suivant: la chaîne que je recherche est en fait une date, rentrée sous la forme 01/xx/xxxx (01/mois/année) par l'utilisateur, mais les cellules étant paramétrées sous le format personnalisé mmmm aaaa, entrer par exemple 01/03/2003 dans une des cellules affiche au final mars 2003.

A la base je voulais faire comme ceci (annee et mois étant des variables me retournant l'année en cours et le mois précédent celui en cours):

Dim a As String

a = "" & DateSerial (CStr(annee), 1 , mois) ' "" & me sert pour convertir en String et si on affiche a, on obtient aujourd'hui "01/06/2011" (sans les " ")
Sheets(CStr(annee)).Cells(mois + 1, rech.Column).Value = Recherche(a)

Seulement, en faisant ceci, la fonction ne trouve rien, car à la cellule correspondante, on ne trouve pas 01/06/2011 mais juin 2011 !

Finalement ma question est la suivante: peut-on paramétrer ce que me retourne la variable a pour obtenir le même format que celui trouvé dans les cellules du fichier où je fais les recherches ?

Merci d'avance.

Salut m@tix et le forum

Toujours difficile d'interpréter une erreur alors qu'on a qu'un poste pour données...

Cependant, d'après ce que je lis, tes cellules contiennent des valeurs qu'Excel reconnaît comme des nombres. Tu recherches date, qui est un nombre qu'excel affiche comme une date. Que viennent faire tes CStr ici ? tu as des nombres, et tu recherches du texte ? Je ne comprends rien... et Excel est encore plus bête que moi !

A+

Petite remarque : en quoi une formule dont nous n'avons pas tout les éléments, et qui retourne un résultat erroné, doit-elle pouvoir nous aider ?

Salut Gorfael !

Merci pour ta réponse, je vais être plus précis, en fournissant le fichier en question.

A partir de la fonction suivante:

Function Recherche (Nom As String) As Variant 

Dim Cel As Range

  With Workbooks(fic).Sheets(feu)
    Set Cel = .Columns(2).Find(What:=Nom, LookIn:=xlValues, LookAt:=xlWhole)
    If Not Cel Is Nothing Then
      Recherche = .Range("B" & Cel.Row)
    End If
  End With
End Function

J'ai alors testé en pas à pas Recherche ("juin 2011") ou même Recherche ("01/06/2011"), et jamais on ne rentre dans la condition If de la fonction ! Je précise qu'on est bien sur le bon classeur et la bonne feuille, je l'ai contrôlé via les variables fic et feu. J'utilise pourtant cette fonction depuis le début de mon projet sans problème..

8classeur1.zip (4.64 Ko)

Bonjour

Avec Find pas de solution

Par une autre instruction

Merci Banzai64 !

Je viens de jeter un oeil au code, ça me semble bien. Cependant, je ne parviens pas encore à les fins...

Je m'explique. J'ai écrit le code suivant pensant récupérer la valeur de la colonne B située en face de la cellule "juin 2011".

Dim a As Date

a = Format(DateSerial(annee, mois, 1), "dd/mm/yyyy")

Sheets(CStr(xxx)).Cells(yyy, rech.Column).Value = Recherche (a)

Mais j'obtiens une erreur à l'exécution, à savoir:

Impossible de lire la propriété Match de la classe WorksheetFunction. A ce niveau:

Lg = WorksheetFunction.Match(CSng(Nom), .Columns(1), 0)

Je suppose que c'est l'argument passé à la fonction qui n'est toujours pas correct...

Bonjour

J'ai testé comme ceci

Sub Cherche()
Dim a As Date
Dim annee As Integer
Dim mois As Integer

  Fic = ThisWorkbook.Name
  Feu = ActiveSheet.Name

  annee = 2011
  mois = 6

a = Format(DateSerial(annee, mois, 1), "dd/mm/yyyy")
'Sheets(CStr(xxx)).Cells(yyy, rech.Column).Value = Recherche(a)
Range("F1") = Recherche(a)
End Sub

Function Recherche(Nom As Date) As Variant
  '
  ' 
  ' 
End Function

Et pas de soucis cela me retourne bien la valeur 57

Bon... Et une erreur bête de plus, une... Dans mon fichier, les date sont situées sur la colonne B et non la A comme dans ton fichier exemple. J'ai simplement modifier ta fonction, et ça roule !

Au passage... Pourquoi ma première fonction ne trouvait pas la date ?

Merci encore !

Bonjour

Le fichier que tu as posté a les dates en colonne 1

m@tix a écrit :

Au passage... Pourquoi ma première fonction ne trouvait pas la date ?

je ne sais pas

Quelqu'un(e) l'expliquera et je suis curieux de savoir le pourquoi

Rechercher des sujets similaires à "conversion date"