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 :

Condition Date avec FormulaLocal


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut Condition Date avec FormulaLocal
    Bonjour,

    J'ai un petit problème avec l'insertion d'une condition "< date" lorsque j'utilise FormulaLocal.

    Soit, dans le cas de ce code ci-contre, j'ai en résultat "FAUX FAUX" - aucune idée de pourquoi ça double, mais ce n'est pas mon problème (pour le moment)

    Et lorsque je double le guillemet autour du signe <, j'ai une erreur 1004.

    J'aimerai savoir comment faire pour que cela fonctionne correctement en utilisant ce critère : " < " & Résumé!$B$5 ? (qui est une date)
    En TOTAL!Z:Z j'ai aussi des dates et la formule, directement écrite dans Excel fonctionne très bien.

    Je vous mets le code ci-dessous, merci beaucoup de votre temps !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub Test_ReelConso()
    Lig_Budget = 9
     
    Do While Lig_Budget < 25
        Worksheets("Résumé").Cells(Lig_Budget, 3).FormulaLocal = "=SI(Résumé!$A$2=""TOTAL"";SOMME.SI.ENS(TOTAL!W:W;TOTAL!X:X;Résumé!A" & Lig_Budget & ");TOTAL!Z:Z;" < "&Résumé!$B$5);2)"
        Lig_Budget = Lig_Budget + 1
    Loop
     
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 176
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    L'utilisation de la propriété FormulaLocal n'est pas une bonne idée à une époque où l'on internationalise tout.
    La propriété Formula serait un meilleur choix pour rendre pérenne l'application et éviter le retour d'un utilisateur qui travaillerait avec une version excel d'une autre interface linguistique.

    Pour en savoir plus sur le sujet, je te conseille la lecture de ces deux billets
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Essayez ceci, pas testé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets("Résumé").Cells(Lig_Budget, 3).FormulaLocal = "=SI(Résumé!$A$2=""TOTAL"";SOMME.SI.ENS(TOTAL!W:W;TOTAL!X:X;A" & Lig_Budget & ";TOTAL!Z:Z;""<$B$5"");2)"
    ou bien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Worksheets("Résumé").Cells(Lig_Budget, 3).FormulaR1C1 = "=IF(Résumé!R2C1=""TOTAL"",SUMIFS(TOTAL!C[20],TOTAL!C[21]," & Lig_Budget & ",TOTAL!C[23],""<$B$5""),2)"
    Cdlt

  4. #4
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Novembre 2015
    Messages
    369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 29
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2015
    Messages : 369
    Par défaut
    Je vous remercie de votre temps, j'en suis arrivé à un résultat concluant pour cette première partie de formule. La seconde partie concernera la condition "FAUX".

    Déjà je me suis rendu compte qu'il y avait une parenthèse en trop juste après : & Lig_Budget &"). Cette parenthèse est désormais supprimée.

    Des espaces inutiles rendaient la formule inefficace, j'ai donc remplacé ces espaces par un guillemet ce qui donne la partie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TOTAL!Z:Z;""<"" &Résumé!$B$5
    Ces espaces ainsi ignorés, la formule fonctionne parfaitement.

    Je tiens de nouveau à vous remercier de votre temps.

    La seconde partie du code ne sera pas bien compliquée puisqu'il n'y a qu'une condition à rajouter qui ne concerne que du texte. Je penserai bien évidemment à doubler les guillemets si nécessaire.

    Bonne journée à vous, je vous quitte sur ce petit code !

    Je retiens bien votre proposition de passer sous .Formula pour que celle-ci soit "trans-langue", mais dans l'état actuel des choses je n'ai aucun souci sur ce point-là. S'il m'advient de rencontrer ce genre de problème je saurai changer FormulaLocal en Formula. Merci pour la proposition !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    Sub Test_ReelConso()
    Lig_Budget = 9
     
    Do While Lig_Budget < 25
        Worksheets("Résumé").Cells(Lig_Budget, 3).FormulaLocal = "=SI(Résumé!$A$2=""TOTAL"";SOMME.SI.ENS(TOTAL!W:W;TOTAL!X:X;Résumé!A" & Lig_Budget & ";TOTAL!Z:Z;""<"" &Résumé!$B$5);2)"
        Lig_Budget = Lig_Budget + 1
    Loop
     
    End Sub

  5. #5
    Expert confirmé
    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 : 68
    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
    Billets dans le blog
    7
    Par défaut
    Bonjour à vous, Bonjour au Forum,

    Utiliser une boucle Do While me semble compliquer une architecture de code qui pourrait être simple avec une seule formule.
    Ce qui n'empêche pas une certaine rigueur.

    Outre cette recommandation de travailler avec Formula et la lecture des billets de Philippe, que je salue au passage, tu peux:
    - Commencer par écrire sur Excel une formule dont le résultat est correct
    - Reporter la formulation en VBA sur la fenêtre Exécution
    puis touche Entrée
    - La procédure en découlerait simplement

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Sub laformulation()
    Const maformule As String = "la formule retournée précédemment"
    Worksheets("lawks").Range("A1:A5").Formula = maformule
    End Sub

Discussions similaires

  1. Problème avec la fonction SumIf et condition Dates
    Par Sogestion dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 15/08/2012, 14h25
  2. [MySQL] Différence entre deux dates avec condition
    Par neGo33 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 16/02/2012, 13h47
  3. extraction date avec condition
    Par nawal59 dans le forum SQL
    Réponses: 3
    Dernier message: 03/08/2010, 17h41
  4. Somme SI avec une condition Date
    Par JohnFidgeral dans le forum Excel
    Réponses: 10
    Dernier message: 12/04/2010, 01h02
  5. Condition "Or" avec format date et texte
    Par buzz73 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 10/12/2008, 13h22

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