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

Langage Delphi Discussion :

[Delphi -> Excel] problème formule


Sujet :

Langage Delphi

  1. #1
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 36
    Par défaut [Delphi -> Excel] problème formule
    Bonjour,

    Je suis en cours de développement d'une application dont le fichier de sortie est un fichier Excel (je suis en Excel 2007).
    jusque la pas de problèmes.
    Il y a quelques temps j'ai ajouté des formules à ce classeur (bon j'avais déjà un peu galéré vu qu'il faut mettre les formules en anglais mais bon...).
    Aujourd'hui j'essaye d'améliorer ces formules mais rien n'y fait, je n'arrive pas à ajouter une condition "IIf" dans mon classeur. Cela me fait une erreur OLE.
    Voici les lignes concernées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     sFormule:=ConvertXlsCol(iCol-1)+'1+VALUE("'+sTempsBV+'")';
     OleAppDest.cells[1,iCol].formula:='=IIF(AND('+sFormule+'>VALUE("12:00:00");'+sFormule+'<VALUE("12:45:00"));'+sFormule+'+VALUE("00:45:00");'+sFormule+')';
    -Mon objet OLE fonctionne (je l'utilise pour ajouter d'autres infos au fichier)
    -Mon ConvertXlsCol(iCol-1) me renvoie la lettre de la colonne passée en paramétre (exemple "DF")
    -La chaine sFormule fonctionne aussi (je peux l'ajouter dans mon fichier excel avec un "=" devant et ca fonctionne).
    - la chaine sTempsBV contient "00:03:45"


    Voila depuis hier je galère sur ce problème j'ai essayé de me renseigner sur le net mais pas moyen de trouver une solution. Merci par avance pour votre aide.

    Pour infos, j'ai essayé:
    -De mettre IF à la place de IIF
    -De passer toute la formule en Français
    -De mettre toute la formule en dur sans passer par des chaines intermédiaires
    -de simplifier la condition en enlevant le AND

    Je suis au bord de la crise de nerf

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    en Excel 2007 et en français, la formule suivante ne fonctionne pas :
    =SI( ET( TEMPSVAL(C4)>TEMPSVAL("12:00:00"); TEMPSVAL(C4)<TEMPSVAL("12:45:00") ); TEMPSVAL(C4)+TEMPSVAL("00:45:00"); TEMPSVAL(C4) )
    car dans ma cellule C4, le texte "" a déjà été interprété par Excel comme 0.39209 => TEMPSVAL ne fonctionne pas dessus.

    c'est pê une piste...

    celle-ci fonctionne :
    =SI( ET( C4>TEMPSVAL("12:00:00"); C4<TEMPSVAL("12:45:00") ); C4+TEMPSVAL("00:45:00"); C4 )
    à condition de mettre le format de cellule résultat à HEURE (sinon affiche un décimal).
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 36
    Par défaut
    Bonjour,

    Merci pour ta réponse,
    Cependant, dans mon excel le VALUE se transforme en CNUM et non en TEMPSVAL

    et la formule suivante fonctionne dans excel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =SI( ET( CNUM(C1)>CNUM("12:00:00"); CNUM(C1)<CNUM("12:45:00") ); CNUM(C1)+CNUM("00:45:00"); CNUM(C1) )
    PS mes cellules sont formatées en Personalisées -> "HH:MM:SS"

  4. #4
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    CNUM fonctionne aussi ici à la place de TEMPSVAL.

    La formule est-elle fonctionnelle en OLE ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  5. #5
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 36
    Par défaut
    en OLE j'arrive à ajouter la formule suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =VALUE(C1)+VALUE("00:45:00")
    elle se transforme dans excel en
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    =CNUM(C1)+CNUM("00:45:00")
    et tout fonctionne correctement.

    Par contre, si j'essaye ca en delphi:
    Ca ne fonctionne pas.

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 931
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 931
    Billets dans le blog
    6
    Par défaut
    Je ne crois pas qu'il y ait de IIF en Delphi (sauf pê récents), ni en Excel !
    En tout cas, pas dans mon Excel 2007...

    Je ne comprends plus ton problème, puisqu'une syntaxe de formule valide répondant à l'énoncé semblait avoir été trouvée.

    Tu continues bien de vouloir écrire en OLE dans Excel une formule ?
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 36
    Par défaut
    Ce que je désire faire c'est : (à partir de Delphi)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    OleAppDest.cells[1,1].formula := '=IIF(1<2;"1";"0")';
    ou encore
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    OleAppDest.cells[1,1].formula := '=IF(1<2;"1";"0")';
    Mais en l’occurrence ni l'un ni l'autre ne fonctionnent. (Mon objet OleAppDest fait bien référence à un classeur ou j'ajoute précédemment d'autres formules.)

    En Delphi je ne peux pas ajouter la fonction "si". Il faut son équivalent en anglais.

  8. #8
    Membre Expert
    Avatar de Charly910
    Homme Profil pro
    Ingénieur TP
    Inscrit en
    Décembre 2006
    Messages
    2 510
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur TP
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 510
    Par défaut
    Bonjour,

    d'après cette discussion sur Delphi Pages, ta formule devrait fonctionner :

    http://www.delphipages.com/forum/sho...d.php?t=172974

    par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for i := 6 to 1000 do
    xls.ActiveSheet.Cells[i,1].Value := '=IF(ABS(F' + IntToStr(i) + '-G' + IntToStr(i) + '>0.009999999,"*","")';
    A+

    Charly

    c'est surement Value qu'il faut utiliser et non Formula ?

  9. #9
    Membre averti
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2012
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

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

    Informations forums :
    Inscription : Septembre 2012
    Messages : 36
    Par défaut
    Merci,
    C’était ça! en effet pour la formule "If" il faut mettre .Value après la cellule.
    Le .formula fonctionne pour les autres formules mais pas pour le IF.
    Un grand merci à Charly910

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

Discussions similaires

  1. [XL-2010] Problème formule Excel
    Par thomasdu40 dans le forum Excel
    Réponses: 14
    Dernier message: 05/06/2012, 17h04
  2. Problème formule Excel ;-(
    Par hengril8 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 12/05/2010, 08h56
  3. problème formule excel
    Par sami198025 dans le forum Excel
    Réponses: 3
    Dernier message: 15/01/2010, 23h52
  4. problème formule vba excel
    Par akmer dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/04/2008, 15h43
  5. Excel Problème de formule
    Par jbidou88 dans le forum Macros et VBA Excel
    Réponses: 25
    Dernier message: 12/05/2006, 10h20

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