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 :

conversion formule cellules en vb


Sujet :

Macros et VBA Excel

  1. #1
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut conversion formule cellules en vb
    bonjour a tous

    voila un exemple de conversion de la formule des cellules en colonne "C"
    peut -on ameliorer le code???

    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
     
    Sub Traduire_la_formule()
    'EXEMPLE DE FORMULE
    '=IF(TODAY()>=DATE(2011,12,15),$N$4,"")
     
        For Each cel In Range("c5:c35")    '.Cells
            letexto = cel.Formula
     
            Select Case Left(cel.Formula, 18)
     
            Case "=IF(TODAY()>=DATE("
                debut = "if date>= "
     
                'si il y a des dollards sa veut dire que se sont des adresses de cellulessinon se sont certainement des valeurs numerique ou texte
                resultat_si_vrai = IIf(InStr(letexto, "$"), Split(letexto, ",")(3) & ".value", Split(letexto, ",")(3))
     
     
                datedecomparaison = Replace(Split(Split(letexto, "(")(3), ")")(0), ",", "/")
                letexte = letexte & debut & datedecomparaison & "  then " & Replace(cel.Address, "$", "") & ".value  = " & Replace(resultat_si_vrai, "$", "") & vbCrLf
            End Select
     
            Debug.Print letexte
        Next
        MsgBox letexte
        resultat_si_vrai = ""
        datedecomparaison = ""
        letexte = ""
     
    End Sub
    merci pour le retour

    au plaisir
    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

  2. #2
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,

    en dehors d'une éventuelle amélioration du code, il faut essayer de déclarer tes variables

    L'idée est bonne, dans quel cadre aimerais tu utiliser cette procédure ?

    Quels sont les autres cas de figure ?

    A noter que ton
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    datedecomparaison = Replace(Split(Split(letexto, "(")(3), ")")(0), ",", "/")
    peut être accéléré avec un evaluate.
    En effet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Evaluate("Date(2012,03,02)")
    te retourne 40970.
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    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 374
    Billets dans le blog
    8
    Par défaut re
    bonjour jpcheck

    je ne connaissais pas la fonction "evaluate" effectivement ça doit être plus rapide

    L'idée est bonne, dans quel cadre aimerais tu utiliser cette procédure ?
    comme dans les poste précédent je suis toujours en train de travailler

    sur la conversion d'une feuille excel en hta (application) j'ai donc fini le code pour reproduire des cellules a l'identique sur un hta ou html

    pour le tableau de cellule il est deja dans les contributions ICI
    bien que ce model est dépassé . je l'ai deja amélioré en precision je mettrais le nouveau code propre

    donc dans ma feuille excel ,dans les cellules il y a des formules du genre
    "=if today()>=date(XXXX,XX,XX)...... je cherche a les traduire en vb(s)pour le hta

    pour cette formule j'ai deja fait un petit code ca a l'air de fonctionner

    mais mon projet c'est de le faire pour toutes les formules (si possible ) je pense que je vais ouvrir un projet dans le forum requis pour ca

    ensuite pour mon premier code abouti en ce qui concerne la fonction le voici
    ce code sera appellé dans l'evenement on change de la cellule "N4" du hta
    en effet quand on observe comment les evenements fonctionnent dans le hta ou html il faut prendre le truc a l'envers de excel


    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
     
    Const QT = """"
    Sub Traduire_la_formule()
    'EXEMPLE DE FORMULE qui se trouve dans la colonne b
    '=IF(TODAY()>=DATE(2011,12,15),$N$4,"")
     
    For Each cel In Range("c5:c35") '.Cells
    letexto = cel.Formula
     
    Select Case Left(cel.Formula, 18)
     
    Case "=IF(TODAY()>=DATE("
    debut = "if cdate(date)>= "
     
    'si il y a des dollards sa veut dire que se sont des adresses de cellulessinon se sont certainement des valeurs numerique ou texte
    resultat_si_vrai = IIf(InStr(letexto, "$"), Split(letexto, ",")(3) & ".value", Split(letexto, ",")(3))
     
     
    datedecomparaison = Replace(Split(Split(letexto, "(")(3), ")")(0), ",", "/")
    datedecoupé = Split(datedecomparaison, "/")
     
    datedecomparaison = "Cdate (" & QT & 15 & "/" & datedecoupé(1) & "/" & datedecoupé(0) & QT & ")"
     
    letexte = letexte & debut & datedecomparaison & "  then " & Replace(cel.Address, "$", "") & ".value  = " & Replace(resultat_si_vrai, "$", "") & vbCrLf
    Debug.Print debut & datedecomparaison & "  then " & Replace(cel.Address, "$", "") & ".value  = " & Replace(resultat_si_vrai, "$", "") & vbCrLf
     
    End Select
     
    Debug.Print letexte

    enfin beaucoup de boulot comme tu vois

    mais bon c'est fun
    l'interet de ce fichier c'est de pouvoir ce servir du fichier hta ou html comme si c'etait une feuille excel
    a l'inverse du format de html de sauvegarde en natif dans excel 2007
    merci pour l'intéret sur ce projet
    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

Discussions similaires

  1. [XL-2003] Problème de conversion formule excel -> Macro VBA
    Par bedrohung dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 14/04/2010, 18h53
  2. "recherchev" dans une formule "cellule"
    Par stef1109 dans le forum Excel
    Réponses: 4
    Dernier message: 22/07/2008, 15h16
  3. formule cellule + heure
    Par banban64 dans le forum Excel
    Réponses: 19
    Dernier message: 28/01/2008, 22h17
  4. ASP Excel Probleme de conversion de cellule
    Par mattyeux dans le forum ASP
    Réponses: 3
    Dernier message: 30/03/2007, 15h05
  5. Conversion formule => valeur décimale
    Par flagadda dans le forum ASP.NET
    Réponses: 5
    Dernier message: 13/07/2006, 10h57

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