Problème avec #NOM?

Bonjour,

Un problème surement très facile à régler me joue des tours depuis ce matin.

J'ai une liste de date dont je veux extraire le mois, l'année ...

Voici mon code VBA :

Sub aaaaaaaaaaa()

    k = 2
    Range("A1").Offset(0, k) = "Annee"
    Range("A1").Offset(0, k + 1) = "Mois"
    Range("A1").Offset(0, k + 2) = "AnnMoi"

    cpt = 2
    While Cells(cpt, 1) <> ""
        Cells(cpt, k + 1).FormulaR1C1 = "=TEXTE(RC[-" & k & "],""aaaa"")"
        Cells(cpt, k + 2).FormulaR1C1 = "=TEXTE(RC[-" & k + 1 & "],""mm"")"
        Cells(cpt, k + 3).FormulaR1C1 = "=TEXTE(RC[-" & k + 2 & "],""aaaa-mm"")"
        cpt = cpt + 1
    Wend

End Sub

Je ne comprends pas pourquoi j'obtiens des #NOM?

A noter que :

  • la variable 'k' du code m'est indispensable
  • quand je clique sur ces cellules, et que je fais 'Entrer', j'obtiens la bonne valeur dans la cellule
  • la Date est bien au format Date

Voici mon résultat:

Date Annee Mois AnnMoi

05/05/2015 #NOM? #NOM? #NOM?

05/05/2015 #NOM? #NOM? #NOM?

05/05/2015 #NOM? #NOM? #NOM?

05/05/2015 #NOM? #NOM? #NOM?

05/05/2015 #NOM? #NOM? #NOM?

05/05/2015 #NOM? #NOM? #NOM?

26/06/2013 #NOM? #NOM? #NOM?

26/06/2013 #NOM? #NOM? #NOM?

26/06/2013 #NOM? #NOM? #NOM?

26/06/2013 #NOM? #NOM? #NOM?

26/06/2013 #NOM? #NOM? #NOM?

26/11/2013 #NOM? #NOM? #NOM?

Merci d'avance.

Amicalement,

Varreta

varreta a écrit :

- quand je clique sur ces cellules, et que je fais 'Entrer', j'obtiens la bonne valeur dans la cellule

Bonjour,

Les dates ne sont donc pas des dates pais probablement du texte ! ou du Canada Dry ...

Pour s'en convaincre, change le format en "standard", si cela n'affiche pas une valeur en 40.000 et des brouettes, c'est que les dates sont bien du texte (souvent suite importation)

Tu peux les transformer par CNUM().

Bonjour,

Et si tu commençais par mettre la formule en anglais.

Soit TEXT ald TEXTE.

Cdlt.

Merci de vos réponse.

Excel est paramétrés en français sur mon ordinateur...

J'ai vérifié, mes dates étaient dans le bon format (de l'ordre de 40000 quand on passe en standard).

lorsque je tape directement la formule dans excel, cela fonctionne mais à partir de vba, je n'ai toujours pas la solution.

Re,

Tu peux tenter de travailler avec .FormulaR1C1Local et conserver ta formule en français.

Cela ne résoudra cependant pas ton message d'erreur. Tu dois revoir la syntaxe de tes formules.

Je pense...

Cdlt.

bonjour,

...même si Excel est paramétré en français, VBA ne connait que l'anglais !

A+

FormulaR1C1Local n'y change rien.

Je vous joins mon fichier avec la macro en question

8test.xlsm (17.82 Ko)

Bonjour,

Ce ne serait pas plus simple comme ceci ?

Sub aaa()

    k = 4
    Range("A1").Offset(0, k) = "Annee"
    Range("A1").Offset(0, k + 1) = "Mois"
    Range("A1").Offset(0, k + 2) = "AnnMoi"

    cpt = 2
    While Cells(cpt, 1) <> ""
        Cells(cpt, k + 1) = Format(Cells(cpt, 1), "yyyy")
        Cells(cpt, k + 2) = Format(Cells(cpt, 1), "mm")
        Cells(cpt, k + 3) = Format(Cells(cpt, 1), "yyyy-mm")
        cpt = cpt + 1
    Wend

End Sub

...ou ça :

Sub aaa()

    k = 4
    Range("A1").Offset(0, k) = "Annee"
    Range("A1").Offset(0, k + 1) = "Mois"
    Range("A1").Offset(0, k + 2) = "AnnMoi"
    cpt = 2
    While Cells(cpt, 1) <> ""
        Cells(cpt, k + 1).Formula = "=YEAR(A" & cpt & ")"
        Cells(cpt, k + 2).FormulaR1C1 = "=TEXT(RC[-" & k + 1 & "],""mm"")"
        Cells(cpt, k + 3).FormulaR1C1 = "=TEXT(RC[-" & k + 2 & "],""aaaa-mm"")"
        cpt = cpt + 1
    Wend    
End Sub

...ou encore :

Sub bbb()
    k = 4
    Range("A1").Offset(0, k) = "Annee"
    Range("A1").Offset(0, k + 1) = "Mois"
    Range("A1").Offset(0, k + 2) = "AnnMoi"
    cpt = 2
    While Cells(cpt, 1) <> ""
        Cells(cpt, k + 1).Formula = "=YEAR(RC[-" & k & "])"
        Cells(cpt, k + 2).Formula = "=TEXT(A" & cpt & ",""mm"")"
        Cells(cpt, k + 3).Formula = "=TEXT(A" & cpt & ",""aaaa-mm"")"
        cpt = cpt + 1
    Wend
End Sub

Enfin on peut également se passer de k et de Offset :

Sub ccc()
Cells(2, 5) = "Annee"
Cells(2, 6) = "Mois"
Cells(2, 7) = "AnnMoi"
cpt = 2
   While Cells(cpt, 1) <> ""
      Cells(cpt, 5).Formula = "=YEAR(A" & cpt & ")"
      Cells(cpt, 6).Formula = "=TEXT(A" & cpt & ",""mm"")"
      Cells(cpt, 7).Formula = "=TEXT(A" & cpt & ",""aaaa-mm"")"
      cpt = cpt + 1
   Wend
End Sub

A+

Merci beaucoup à tous le monde.

J'ai adopté le code de Fred35 qui fonctionne très bien

Rechercher des sujets similaires à "probleme nom"