IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Fonction de conversion Code


Sujet :

Macros et VBA Excel

  1. #1
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 108
    Par défaut Fonction de conversion Code
    Bonjour à tous

    Je veux convertir la fonction suivante pour le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =IFERROR(IFERROR("  Points expirent après "&DATEDIF(TODAY();$B$25;"y")&" année, "&DATEDIF(TODAY();$B$25;"ym")&" mois et "&DATEDIF(TODAY();$B$25;"md")&" jour ";"  Résidence avaient été accomplies "&DATEDIF($B$25;TODAY();"y")&" année, "&DATEDIF($B$25;TODAY();"ym")&" mois et "&DATEDIF($B$25;TODAY();"md")&" jour ");"")
    Merci d'avance

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    1) Donner des explications de ta fonction auraient été plus simple.

    2) Il y a une différence entre DateDif en Excel et DateDiff en VBA puisque les arguments que tu places dans ta fonction (qui sont "md" et "ym") n'existent pas.

    3) La seule manière que j'ai eu de résoudre ce problème est de faire un Evaluate... Ce n'est pas conseillé mais ca fonctionne.

    Voila donc le code que je te propose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    Sub diffdate()
    Dim test As Range
    Dim diff As Integer
    Dim dest As Range
    Dim dte As Date
    Dim jr As Integer
    Dim mo As Integer
    Dim an As Integer
     
    With Worksheets("Feuil4")
        Set test = .Range("A1")
        Set dest = .Range("C1")
        For i = 0 To .Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row - 1
            If IsDate(test.Offset(i, 0)) Then
                diff = test.Offset(i, 0) - Date
                If diff < 0 Then
                    jr = vbaDateDiff(Format(test.Offset(i, 0), "mm/dd/yyyy"), Format(Date, "mm/dd/yyyy"), "md")
                    mo = vbaDateDiff(Format(test.Offset(i, 0), "mm/dd/yyyy"), Format(Date, "mm/dd/yyyy"), "ym")
                    an = vbaDateDiff(Format(test.Offset(i, 0), "mm/dd/yyyy"), Format(Date, "mm/dd/yyyy"), "y")
                    dest.Offset(i, 0) = "Résidence avaient été accomplies " & an & " année(s), " & mo & " mois et " & jr & " jour(s)."
                Else
                    jr = vbaDateDiff(Format(Date, "mm/dd/yyyy"), Format(test.Offset(i, 0), "mm/dd/yyyy"), "md")
                    mo = vbaDateDiff(Format(Date, "mm/dd/yyyy"), Format(test.Offset(i, 0), "mm/dd/yyyy"), "ym")
                    an = vbaDateDiff(Format(Date, "mm/dd/yyyy"), Format(test.Offset(i, 0), "mm/dd/yyyy"), "y")
                    dest.Offset(i, 0) = "Points expirent après " & an & " année(s), " & mo & " mois et " & jr & " jour(s)."
                End If
            End If
        Next i
    End With
     
    End Sub
     
     
    Function vbaDateDiff(ByVal FirstDateCell As String, ByVal SecondDateCell As String, ByVal StringCode As String) As Long
        dte = FirstDateCell
        dte2 = SecondDateCell
        vbaDateDiff = Application.Evaluate("DATEDIF(DATEVALUE(""" & FirstDateCell & """),DATEVALUE(""" & SecondDateCell & """),""" & StringCode & """)")
    End Function
    Pas optimisé, mais fonctionne.
    Remplace Feuil4, A1 et C1 par ce que tu veux.

    Tiens moi au courant.

  3. #3
    Membre actif
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2011
    Messages : 108
    Par défaut
    Bonjour professeur Kimy_Ire

    Je vous remercie beaucoup de code fonctionne efficacement

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fonction de conversion de nombre en lettres
    Par david_chardonnet dans le forum Langage
    Réponses: 21
    Dernier message: 08/12/2021, 17h51
  2. Appel fonction php dans code javascript
    Par licorne dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/03/2008, 10h55
  3. Réponses: 2
    Dernier message: 30/05/2006, 08h04
  4. Fonction de conversion de COLORREF en hexadécimal?
    Par charliejo dans le forum MFC
    Réponses: 4
    Dernier message: 21/02/2004, 18h25
  5. fonction redonnant le code ascii d'un entier ???
    Par abignon dans le forum MFC
    Réponses: 4
    Dernier message: 29/01/2004, 12h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo