Erreur dans un calcul vba

Résolu
Solarel -  
michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Dans une macro sur Excel, je demande à entrer un calcul dans une case. Cette formule donne le numéro de la semaine à partir d'une date, la voici:

cell.Formula = "=INT(MOD(INT((" & coltemp & " -2)/7)+0,6;52+5/28))+1"

Ici coltemp correspond à B1.
Lorsque j'entre cette formule manuellement ça fonctionne très bien, je ne comprends pas pourquoi il y a une erreur.

(Pour info, l'erreur affichée est:
Erreur d'éxecution 1004
Erreur définie par l'application ou par l'objet)

Merci pour votre aide!
Arthur

4 réponses

  1. foo
     
    Bonjour
    Voila un teste
    et regarde aussi dans l'aide 'DatePart'

    'yyyy Année
    'q Trimestre
    'm Mois
    'y Jour de l'année
    'd Jour
    'w Jour de la semaine
    'ww Semaine

    Range("E5").Value = DatePart("ww", Range("C5"))

    Merci michel_m bonne reponse

    A+

    Maurice
    1
  2. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Bonjour,

    en VBA!
    donne le N° de semaine
    Function sem_iso(Wdate As Date) As byte
        sem_iso = DatePart("ww", Wdate, vbMonday, vbFirstFourDays)
      End Function
     


    Michel
    0
  3. Solarel
     
    Si je comprends bien c'est une fonction pour obtenir le numéro de la semaine plus simplement que la formule que j'essaye d'appliquer?
    Je ne comprends pas vraiment comment elle marche par contre.
    sem_iso est une variable qui contient 4 données?
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Pour ma part, je ne comprend pas pourquoi on veut écrire des formules avec VBA alors que VBA a des fonctions qui font le calcul...
      au temps d'écrire directement les formules avec Excel

      mais dans les formules anglophone

      les séparations de paramètres ";" s'écrivent "," et les nombres décimaux "0,6" s'écrivent "0.6"

      On peut aussi utiliser formulalocal + facile à gérer pour nous, francophone

      Tu peux utiliser la fonction que je t'ai transmis comme fonction personnalisée (formules, insérer une fonction, personnalisée) après l'avoir recopiée dans un module VBA
      ainsi si A1 =30/07/13
      la fonction
      sem_iso(A1) te renverra 31 cad le n° de la semaine
      0
  4. Solarel
     
    Ok ça marche parfaitement, merci beaucoup!
    0