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 :

Problème résultat fonction personnalisée [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut Problème résultat fonction personnalisée
    Bonjour le Forum, et Bonne Année à tous.

    Tout bête.

    J'ai créé une fonction personnalisée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Public Function Is_Férié(ladate As Date) As Boolean
    Application.Volatile
    Dim rgt As Range
    Set rgt = Range("liste_jours_fériés").Find(ladate, LookIn:=xlFormulas)
    Is_Férié = Not rgt Is Nothing
    Set rgt = Nothing
    End Function
    Si je l'utilise dans le VBE, alors le résultat est exact
    Si je l'utilise dans ma feuille de calcul, alors le résultat est faux

    En A11 : 01/01/2018
    En A12 : 02/01/2018

    VBE

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub essai_fnct()
    Debug.Print "A11 : " & Is_Férié(Range("A11"))
    Debug.Print "A12 : " & Is_Férié(Range("A12"))
    End Sub
    Fenêtre Exécution

    A11 : Vrai
    A12 : Faux
    Mais si j'écris dans ma feuille de calcul

    Alors le résultat est
    Quelque chose doit m'échapper....

    D'avance Merci.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    pourquoi une fonction personnalisée ? Volatile inutilement d'ailleurs si tu lui passais les paramètres qui vont bien.
    Tu ne peux pas voir si ta date est présente avec nb.si() tout simplement ?
    eric

  3. #3
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour Eric et Merci,

    Je sais qu'il y a des solutions de contournement (code déjà écrit sur ce forum et ailleurs, fonctions date...)
    Je les utiliserai.

    Mais pourquoi ICI j'ai cette différence avec CE code?

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Points : 378
    Points
    378
    Par défaut
    Bonjour,

    /!\ attention /!\ la fonction find recherche toujours une chaine !

    de plus le format date d'une cellule contient l'heure même si ce n'est pas affiché dans ta cellule. c'est du genre 01/01/2018 01:00:00

    donc ce qui suit doit fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set rgt = Range("liste_jours_fériés").Find(CStr(ladate), LookIn:=xlValues)

  5. #5
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    .find est très particulier avec les dates.
    J'avais déjà remarqué son coté schizophrène selon si une fonction est appelée en vba, ou depuis une feuille où il devient sensible au format date (bien que avec LookIn:=xlFormulas)
    Je n'ai pas trouvé d'autre solution que de faire 2 traitements, toutes mes tentatives pour un traitement unique sont restées vaines :
    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
    Public Function Is_Férié(ladate As Date) As Boolean
        Application.Volatile
        Dim rgt As Range, appelVBA As Boolean
        On Error Resume Next
        If Not Application.Caller.Parent.Type = xlWorksheet Then appelVBA = True
        On Error GoTo 0
     
        If appelVBA Then
            Set rgt = Range("liste_jours_fériés").Find(ladate, LookIn:=xlFormulas)
        Else
            Set rgt = Range("liste_jours_fériés").Find(Format(ladate, "Short Date"), LookIn:=xlFormulas)
        End If
        Is_Férié = Not rgt Is Nothing
        Set rgt = Nothing
    End Function
    Fait-moi plaisir, passe-lui en paramètre la plage liste_jours_fériés pour enlever ce .volatile ;-)

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2010
    Messages
    194
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 194
    Points : 378
    Points
    378
    Par défaut
    Ah oui bien vu eriiic,

    Format(ladate, "Short Date") permet de ne récupérer que la partie date du format date d'une cellule qui
    comme dit plus haut ressemble à un truc du genre 01/01/2018 01:00:00

  7. #7
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous, Bonjour au Forum,

    Merci pour vos réponses.

    Eric,

    J'ai testé ton code.
    Sur Excel 2010, il semblerait que la propriété
    ne puisse pas être affectée à la méthode
    que je ne connaissais pas.

    En saisie semi-automatique, aucune méthode ni propriété ne peuvent être saisies.
    Plus trivialement, après le ".", rien n'est proposé.

    MAIS

    Le code fonctionne.

    1 remarque
    Si je code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appelVBA = Not (Application.Caller.Parent.Type = xlWorksheet)
    alors le code n'est pas fonctionnel
    ?

    Enfin,
    Je ne vois pas ce que tu entends par
    Fait-moi plaisir, passe-lui en paramètre la plage liste_jours_fériés pour enlever ce .volatile ;-)
    En tout cas, merci.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour Marcel,
    Code Calendrier perpetuel : 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    ' Cette fonction renvoie Vrai si la date transmise est un jour férié
    ' fixe ou mobile
    ' les lundis de pâques sont calculés
    Public Function RetourneDate(M As String, Annee As String) As Date
    Dim moi
    moi = Array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
    For I = 1 To 12
    If UCase("" & moi(I)) = UCase("" & M) Then Exit For
    Next
    RetourneDate = "01/" & Format(I, "00") & "/" & Annee
    End Function
    Function Ferie(UneDate As Long) As Boolean
    ' Par défaut la fonction ne considère pas que les Dimanche de Pâques
    ' et de Pentecôte sont fériés
    ' il suffit de renseigner l'argument DimanchesOuiNon à True à l'appel de la fonction
    ' pour les considérer comme fériés
    Ferie = IsDimange(UneDate)
    If Ferie = True Then Exit Function
    Dim JFF ' table des fériés fixes (jours)
    Dim MFF ' table des fériés fixes (mois)
    JFF = Array(1, 1, 8, 14, 15, 1, 11, 25)
    MFF = Array(1, 5, 5, 7, 8, 11, 11, 12)
    Dim J As Long
    Ferie = False
    ' Recherche dans la table des jours fériés fixes
    For J = 0 To 7
    If Day(UneDate) = JFF(J) And Month(UneDate) = MFF(J) Then
    Ferie = True
    Exit Function
    End If
    Next J
    Dim FM ' contient les dates des lundis de Paques
    'FM = Array(38824, 39181, 39531, 39916, 40273, 40658, 41008, _
    '41365, 41750, 42100, 42457, 42842, _
    '43192, 43577, 43934, 44291, 44675, _
    '45026, 45383, 45768, 46118, 46475, _
    '46860, 47210, 47595)
     
     
    FM = Paque(Year(UneDate))
    ' Recherche si la date est un lundi de paques
    ' ou jeudi de l'ascension
    ' ou lundi de pentecôte
    'For J = 0 To 24 ' à changer si vous allez au delà de 2030
    If (UneDate = FM) Or (UneDate = FM + 39) Or (UneDate = FM + 50) Then
    Ferie = True
    Exit Function
    End If
    ' si DimanchesOuiNon est vrai
    ' on teste les dimanches de Pâques et Pentecote
     
     
     
     
    If DimanchesOuiNon Then
    If (UneDate = FM - 1) Or (UneDate = FM + 48) Then
    Ferie = True
    Exit Function
    End If
    End If
    'Next J
    End Function
    Function IsDimange(J) As Boolean
     
     
    If Weekday(J) = 1 Or Weekday(J) = 7 Then IsDimange = True
    End Function
    Function MDDIF(A, B) As Long
    MDDIF = DateDiff("d", A, B)
    End Function
    Function MuMod(V, D)
    MuMod = Int(V / D)
    End Function
    Function Paque(Annee As Integer) As Date
    Dim A, B, C, D, E, F, G, H, I, J, K, L, M, N, O
    C = Annee - 1900
    D = C Mod 19
    E = (D * 7) + 1
    F = Int(E / 19)
    G = 11 * D - F + 4
    H = G Mod 29
    I = Int(C / 4)
    J = C - H + I + 31
    L = J Mod 7
    K = J Mod 7
    L = 25 - H - K
    M = CDate("31/03/" & Annee)
    Paque = M + L
    End Function
    Sub E()
    Debug.Print Paque(2014)
     
     
    End Sub
     
     
    Public Function TemPTravaiL(B, Mois As String, T As String)
    Dim moi
    moi = Array("", "Janvier", "Février", "Mars", "Avril", "Mai", "Juin", "Juillet", "Août", "Septembre", "Octobre", "Novembre", "Décembre")
    For I = 1 To 12
    If UCase("" & moi(I)) = UCase("" & Mois) Then Exit For
    Next
    TemPTravaiL = [TMP]
    If UCase("" & moi(Month(B))) <> UCase("" & moi(I)) Then
        TemPTravaiL = "00:00"
        Exit Function
    End If
    If Weekday(B) = 1 Or Weekday(B) = 7 Then
    TemPTravaiL = "00:00"
        Exit Function
    End If
    If Ferie(CLng(B), True) = True Then TemPTravaiL = vbNull: Exit Function
    TemPTravaiL = T
    'SI(NB.JOURS.OUVRES(B8;B8)=0;"";TMP))
    End Function
    Fichiers attachés Fichiers attachés

  9. #9
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour et merci, Dysorthographie.
    Comme Eric,

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  10. #10
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 379
    Points : 12 075
    Points
    12 075
    Billets dans le blog
    8
    Par défaut re
    re
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Set rgt = Range("liste_jours_fériés").Find(ladate, LookIn:=xlFormulas)
    Is_Férié = Not rgt Is Nothing
    il y a peut etre mauvaise interprétation pour le "ladate" ajouter le format ou chercher le .value en texte de date

    il est possible qu'il n'y est pas de callback donc ta 2d ligne ne peut pas fonctionner il faut peut etre tester le nothing en amont
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if  not rgt is nothing then
    Is_Férié =true
    else
    ....
    end if
    sans le parent devant range meme si c'est une plage nommée est ce que en mode excel elle est reconnue ?

    meilleur veux marcelG au fait
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  11. #11
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour Patrick,

    Ravi de te retrouver.
    Meilleurs vœux également.
    (Désolé de n'être pas plus actif sur le Forum)

    Je teste ces pistes et reviens,
    au plus vite...

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  12. #12
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Bonjour.

    Fais les 2 tests qu'importe la version de Excel ou le parent.caller.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
        what = CDate(ladate)
        Set rgt = Range("liste_jours_fériés").Find(what:=what, LookIn:=xlFormulas, lookat:=xlPart)
        If rgt Is Nothing Then
            what = CStr(DateValue(ladate))
            Set rgt = Range("liste_jours_fériés").Find(what:=what, LookIn:=xlFormulas, lookat:=xlPart)
        End If
    Cordialement

    Docmarti.

  13. #13
    Invité
    Invité(e)
    Par défaut
    avec le code de mon calendrier perpétuel!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub test()
    MsgBox  Ferie(CDate("01/01/2017")) 
    MsgBox  Ferie(CDate("02/01/2017")) 
    End Sub

    Code tu oublis ça : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     what = CDate(ladate)
        Set rgt = Range("liste_jours_fériés").Find(what:=what, LookIn:=xlFormulas, lookat:=xlPart)
        If rgt Is Nothing Then
            what = CStr(DateValue(ladate))
            Set rgt = Range("liste_jours_fériés").Find(what:=what, LookIn:=xlFormulas, lookat:=xlPart) EndIf

  14. #14
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Salut.

    Je sais que ta question initiale concerne un problème vba que tu ne t'expliques pas, mais je réponds quand même

    Nul besoin de VBA pour tester si une date est ouvrée ou non... Je l'explique dans mon billet de blog sur le sujet.

    Formule pour savoir si un jour saisi en A4 est ouvré ou pas, sur base du tableau des jours fériés t_JoursFériés

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(NB.JOURS.OUVRES.INTL(A4;A4;$B$1;t_JoursFériés)>0;"Ouvré";"Férié")
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  15. #15
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Sur Excel 2010, il semblerait que ... MAIS Le code fonctionne.
    C'est bien pour ça que je l'ai écrit comme ça ;-)
    2010 aussi pour moi.
    eric

  16. #16
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Le code d'Eric
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        If appelVBA Then
            Set rgt = Range("liste_jours_fériés").Find(ladate, LookIn:=xlFormulas)
        Else
            Set rgt = Range("liste_jours_fériés").Find(Format(ladate, "Short Date"), LookIn:=xlFormulas)
        End If
    demontre que le parametre What doit etre de type String si l'appelant est la feuille et doit etre de type Date si l'appelant est VBA.

    C'est interessant.
    Cordialement

    Docmarti.

  17. #17
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Oui, j'ai l'impression que les conversions entre excel et vba, internes à vba, en passant parfois par les paramètres régionaux et les formats sur feuille font un vrai plat de spaghetti indémêlable...

  18. #18
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 921
    Points
    55 921
    Billets dans le blog
    131
    Par défaut
    Perso, je n'aime pas le .find à cause de cela.

    Pourquoi ne pas utiliser match en VBA? Ca permet de passer par la valeur numérique de la date qui est la même en anglais qu'en français.

    Nom : 2018-01-22_201752.png
Affichages : 281
Taille : 150,3 Ko
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  19. #19
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Il y a un sérieux problème culturel entre Excel et vba!

    Excel utilise le paramètres régionaux pour les date alors que Vba parle le grand breton mad in Usa!

    D'où l'obligation de reformater les dates si tu ne veux pas que le 4 janvier devienne un poisson d'avril!

  20. #20
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour à tous, Bonne année à ceux que je n'ai pas rencontrés,

    Je reviens. (mes excuses pour ce retard)

    La fonction est effective dans les 2 environnements Excel et VBA en reprenant le code d'Eric

    Bien netendu, je vais reprendre tous les codes propsés et revenir à nouveau, ainsi que la solution de Pierre.

    Merci DocMarti pour cet utilitaire qui peut servir à d'autres.

    Au passage, j'avais emprunté à notre - regretté - voisin du laboratoire un exposé sur la recherche de date que je mets en pièce jointe à toute fin utile.

    Dans le cas où je ne reviendrais que lundi Bon Week-End à tout le monde.
    Fichiers attachés Fichiers attachés

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [XL-2013] Problème d'affichage de résultat fonction index
    Par GillesBZH dans le forum Excel
    Réponses: 6
    Dernier message: 15/03/2017, 15h58
  2. Problème dans l'appel de fonction personnalisée
    Par hichemnho dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/05/2014, 18h40
  3. Réponses: 1
    Dernier message: 08/05/2014, 14h53
  4. Problème avec fonction personnalisée
    Par zazizou dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 21/06/2012, 19h00
  5. [XL-2007] Fonction personnalisée - Retourner le résultat dans plusieurs cellules
    Par rquilliet dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 05/10/2011, 18h28

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