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

API, COM et SDKs Delphi Discussion :

Delphi, Excel : manipulation de plages de cellules


Sujet :

API, COM et SDKs Delphi

  1. #1
    Membre du Club

    Homme Profil pro
    Directeur comptable
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Points : 50
    Points
    50
    Par défaut Delphi, Excel : manipulation de plages de cellules
    Bonsoir,

    J'ai écrit cette ligne en VBA :

    Code VB : Sélectionner tout - Visualiser dans une fenêtre à part
    .Cells(cptLigne, NumColCREE).Value = "=SUM(" & Range(Cells(cptLigne, NumColCREEprem), Cells(cptLigne, NumColCREE - 1)).Address(False, False) & ")"
    Je souhaiterais la convertir sous DELPHI :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuille.cells[cptLigne, NumColCREE].value := '=SUM(' + Range[Cells[cptLigne, NumColCREEprem], Cells[cptLigne, NumColCREE - 1]].Address(False, False)+')';
    Mais je bute sur Range, DELPHI me renvoie :

    [Erreur] Unit1.pas(2605): E2003 Identificateur non déclaré : 'Range'
    Merci d'avance de votre réponse,

    Bonne soirée,

    Benoît RIVIERE

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 794
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 794
    Points : 13 470
    Points
    13 470
    Par défaut
    Excel, c'est du VB, pas du Pascal. C'est de plus une ligne interprétée et non compilée. Il n'y a aucune raison de la traduire.

    Bref, brut de fonderie :

    Feuille.cells[cptLigne, NumColCREE].value := '"=SUM(" & Range(Cells(' +IntToStr(cptLigne) +', NumColCREEprem), Cells('+ IntToStr(cptLigne) +',' +IntToStr(NumColCREE - 1) +')).Address(False, False) & ")"';

  3. #3
    Membre du Club

    Homme Profil pro
    Directeur comptable
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Points : 50
    Points
    50
    Par défaut
    Merci pour la réponse mais cela ne fonctionne pas : les fonctions Range et Cells ne sont pas interprétées par Excel... Je galère vraiment pour trouver une solution à mon problème, Google ne m'est d'aucun secours !

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 794
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 794
    Points : 13 470
    Points
    13 470
    Par défaut
    En partant du principe que cptLigne est un caractère:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Feuille.cells[cptLigne, NumColCREE].value := '=SOMME(' +cptLigne +IntToStr(NumColCREEprem) +':' +cptLigne +IntToStr(NumColCREE -1) +')';
    C'est du côté Excel qu'il faut voir ce qu'acceptent les cellules et comment sont renseignées les fonctions !

  5. #5
    Membre du Club

    Homme Profil pro
    Directeur comptable
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Points : 50
    Points
    50
    Par défaut
    cptLigne et numColCREE sont des variables integer de deux boucles For... to.

    J'aurais donc voulu éviter de transformer ma variable de colonne en caractères... Au pire en l'absence de réponse, je créerai une fonction pour convertir. J'aurais préféré passer par un Range(Cells(),Cells()) comme en VBA...

  6. #6
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 794
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 794
    Points : 13 470
    Points
    13 470
    Par défaut
    Ce qu'il faut comprendre est que VBA est du Visual Basic modifié pour répondre aux besoins spécifiques d'une application, en l’occurrence ici : Excel. Tu n'auras pas les mêmes possibilités avec Delphi !

  7. #7
    Membre du Club

    Homme Profil pro
    Directeur comptable
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Points : 50
    Points
    50
    Par défaut
    J'avais peur que cela soit le cas, ne trouvant aucune réponse ni dans les tutos du forum ni sur Google... Tu sembles confirmer mes craintes. Merci de ta réponse.

  8. #8
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 111
    Points : 171
    Points
    171
    Par défaut
    bon jour
    voici un très simple exemple qui ouvre et écrire sur 'excel'
    Fichiers attachés Fichiers attachés

  9. #9
    Membre du Club

    Homme Profil pro
    Directeur comptable
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Points : 50
    Points
    50
    Par défaut
    Merci Tarekk73 mais j'ai déjà écrit quelques routines liant Excel et Delphi. Je maîtrise à peu près les bases. Ce qui me pose problème ce sont les fonctions les moins documentées...

  10. #10
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 111
    Points : 171
    Points
    171
    Par défaut
    bon jour
    Ce qui me pose problème ce sont les fonctions les moins documentées...
    parlez vous des fonctions d'excel ...?
    si oui delphi na rien a voire avec ça ....

    moi je travail avec "excel 2007". j'ai fait un teste dans mon programme précédent j'ai ajouter le code suivent
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     NomCellule:='B6';
      RefCellule:=ExcelWs.Range[NomCellule];
      RefCellule.Value:= '=SOMME(B3:B4)'   ;
    et voila le resultat dans l'image .
    l'excel indique une erreur 'laformule contient du texte non reconnu'.
    vous remarqez aussi que la formule est bien ecrite dans la barre de formule,
    le probleme va disparaît dés que vous mettre la souris sur la "barre des formule" et vous tapez la entrer

    alors je pense que le probleme est dans l'excel et pas dans delphi. et peux etre que ce probleme ne figure pas dans les autre version d'excel
    bon courage
    Images attachées Images attachées  

  11. #11
    Membre du Club

    Homme Profil pro
    Directeur comptable
    Inscrit en
    Septembre 2007
    Messages
    37
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Directeur comptable
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2007
    Messages : 37
    Points : 50
    Points
    50
    Par défaut
    Je pense que l'erreur Excel #NOM pour RefCellule.Value:= '=SOMME(B3:B4)'; tient au fait que .value cherche à calculer le résultat de la formule SOMME et à mettre le résultat dans la cellule B6. Or Delphi communique avec Excel en anglais, il faudrait donc remplacer SOMME par SUM. Pour communiquer en Français, il faut utiliser .formulalocal.

  12. #12
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

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

    Informations forums :
    Inscription : Décembre 2012
    Messages : 111
    Points : 171
    Points
    171
    Par défaut
    Citation Envoyé par benoît14 Voir le message
    Je pense que l'erreur Excel #NOM pour RefCellule.Value:= '=SOMME(B3:B4)'; tient au fait que .value cherche à calculer le résultat de la formule SOMME et à mettre le résultat dans la cellule B6. Or Delphi communique avec Excel en anglais, il faudrait donc remplacer SOMME par SUM. Pour communiquer en Français, il faut utiliser .formulalocal.
    dans notre cas "delphi" a ecrir un texte sur une céllule excel. c'est tout..
    ce texte est une fonction excel ou non ça c'est le probleme de l'excel
    si votre "fonction excel" est 'SUM' vous mêt '=SUM(B3:B4);'
    sinon utilisez la fonction qui marche avec votre excel

    bon courage A+

Discussions similaires

  1. Trier une plage de cellules
    Par Squelet dans le forum Macros et VBA Excel
    Réponses: 15
    Dernier message: 03/12/2019, 13h04
  2. [XL-2010] Comment manipuler une plage de cellules cachées par un Autofiltre ?
    Par stargates01 dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 08/03/2014, 20h03
  3. [Toutes versions] VBA Excel Récuperer la plage des cellules d'un TCD
    Par Alaedjens dans le forum Excel
    Réponses: 1
    Dernier message: 20/01/2014, 15h36
  4. Excel, agrandir une plage de cellules sur la droite.
    Par Ldoppea dans le forum C++Builder
    Réponses: 9
    Dernier message: 12/11/2008, 17h52
  5. [VBA-E] [Excel] Protection d'une plage de cellules
    Par fikou dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 20/11/2002, 11h28

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