Formule si et macro calcul de jours

Bonjour,

Je souhaiterais appliquer cette formule sous la forme d'une macro
=SI(OU(ESTVIDE(E4);ESTVIDE(F4));"";JOURS360(E4;F4)+1)
Si quelqu'un a une idée ça serait sympa
Merci à vous

7 réponses

  1. Pour le debut:
    If cells(4,5)<>"" or cells(4,6)<>"" then
    


    je ne vois pas ce que fais precisement la fonction jours360
    0
    1. Merci christof de ta réponse
      En fait j'ai écrit cela mais je ne sais pas si c'est correct, du moins cela ne fonctionne pas
      Range("G:G").FormulaLocal = "=SI(OU(ESTVIDE(E4);ESTVIDE(F4));"";JOURS360(E4;F4)+1)"

      La formule jours360 permet de calculer le nombre de jours calendaires entre deux dates
      ps : je j'ai pas précisé mais je suis novice sur vba
      MERCI
      0
    2. ok, c'est bien ce qu'il me semblai, mais ta formule ne marchai pas.
      Essaye la formule de melanie1324. Si cela ne marche pas je me pencherai plus serieusement sur ton cas.
      0
  2. bonjour,

    Sub Macro1()

    Range("A1").Select
    ActiveCell.FormulaR1C1 = _
    "=IF(OR(ISBLANK(R[-9]C[1]),ISBLANK(R[-9]C[2])),"""",DAYS360(R[-9]C[1],R[-9]C[2])+1)"
    Range("A1").Select
    End Sub
    0
    1. une petite erreur, pour que ce soit valable en A1 :
      Sub Macro2()
      '
      Range("A1").Select
      ActiveCell.FormulaR1C1 = _
      "=IF(OR(ISBLANK(R[3]C[4]),ISBLANK(R[3]C[5])),"""",DAYS360(R[3]C[4],R[3]C[5])+1)"
      Range("A1").Select
      End Sub
      0
    2. entre parenthèse, tu pouvais enregistrer une macro, écrire ta formule et tu aurais eu le code vba et macro de faite
      0
  3. Merci à vous deux
    Je teste de suite ta formule mélanie et tiens compte de tes remarques
    0
    1. Merci ç marche
      J'aimerais en plus que la formule s'applique à l'ensemble de la colonne G et s'active dès l'ouverture d''excel

      Pour l'ouverture auto, j'ai

      Sub Auto_open()
      worksheetS("sheet1").Activate

      et pour la colonne entière j'ai

      Range("G:G").Select

      Mais ça ne fonctionne pas très bien
      0
      1. C'est bon j'ai enlevé
        worksheetS("sheet1").Activate puisque je pense qu'en l'inscrivant dans le module de la feuille 1, il n'est pas nécessaire de rajouter cela

        Merci pour votre aide
        Cordialement

        Tofing
        0
        1. bonjour,

          Sub Auto_open()
          worksheetS("sheet1").Activate

          range("G1").select

          ActiveCell.FormulaR1C1 = _
          "=IF(OR(ISBLANK(RC[-2]),ISBLANK(RC[-1])),"""",DAYS360(RC[-2],RC[-1])+1)"
          Range("G2").Select

          Range("G1").Select
          Selection.AutoFill Destination:=Range("G1:G65000"), Type:=xlFillDefault
          Range("G1:G2").Select
          0
          1. il manque le end sub a la fin et tu peux supprimer la ligne :
            Range("G1:G2").Select
            0
        2. Alors voila le code que j'avais à la base

          Option Explicit

          Sub Auto_open()

          ActiveCell.FormulaR1C1 = _
          "=IF(OR(ISBLANK(RC[-2]),ISBLANK(RC[-1])),"""",DAYS360(RC[-2],RC[-1])+1)"

          For Each cellule In colums(8).Cells
          End Sub

          Maintenant ça ne marche plus
          Je n'arrive pas à appliquer ton code non plus mélanie
          Je dois l'inscrire dans un module ou dans le code de la feuille ?
          0
          1. Contributeur
            Bonjour,

            Au passage c'est une mauvaise idée que de remplir toute la colonne. Le fichier va prendre de l'embonpoint pour rien...
            Et puis dans le auto_open ce n'est pas une bonne idée non plus. Une fois que c'est fait c'est bon (tant que personne n'efface les cellules)

            Ca serait mieux de la mettre dans l'évènement Change lorsque E et F sont saisis, ou compléter à 100 ou 1000 lignes libres à l'ouverture.
            eric
            0
          2. Merci eric de tes précisions mais pourrais-tu les expliciter davantage?
            Qu'entends-tu par "Ca serait mieux de la mettre dans l'évènement Change lorsque E et F sont saisis"
            0
          3. Contributeur
            Bonjour,

            Tu veux absolument que la formule soit présente ?
            Tant qu'à y mettre du vba autant mettre uniquement le résultat (en G ?) si les 2 dates sont correctes.

            Et la façon de traiter ton problème dépend du fonctionnement de ta feuille :
            Est-ce une feuille déjà crée et il faut traiter toutes les lignes ?
            Est-ce une importation auquel cas les données ne sont pas forcément au format date ?
            Est-une saisie ligne à ligne ?
            Est-ce le résultat d'une formule ?
            Est-que les données peuvent être modifiées au cours du temps ?

            Une réponse à toutes ces questions (6) et un fichier exemple déposé sur cijoint.fr (coller ici le lien fourni) permettra une réponse la plus correcte à ton pb.

            Et comme tu as l'air débutant sur excel j'espère que tu sais que jours360() considère que l'année fait 360 jours....
            C'est à dire qu'entre le 15/04/11 et le 21/09/11 jours(360) donne 157 au lieu 159
            Si tu veux la différence réelle en jours il faut simplement =F2-E2 et remettre le format de cellule à 'Standard'

            eric
            0

        Discussions similaires

        exo pix

        2 réponses