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 :

Soucis avec excel


Sujet :

Langage Delphi

  1. #1
    Membre habitué Avatar de poussinphp
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 428
    Points : 176
    Points
    176
    Par défaut Soucis avec excel
    Bonjour,

    Je doit faire un petit utilitaire qui vérifie le contenu de feuilles excel pour corriger les problèmes lors de l'insertion. J'ai un petit soucis concernant l'utilisation des fichiers.

    Les feuilles sont protégé. Dans excel il suffit de faire "ôter la protection de la feuille" mais en delphi comment fait t'on ça?

  2. #2
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    Si tu utilises TExcelApplication et que tu veux effectuer une action que tu ne sais pas écrire en Delphi voici comment faire : (c'est comme ça que je faisais)

    Dans Excel tu créé une macro, tu effectue ton action (dans ton cas ôter la protection de la feuille
    tu termines ta macro, tu vas l'éditer, tu regardes le code généré en VBA, et tu essaye d'adapter logiquement en Delphi.

    Je n'ai jamais essayé de retranscrir cette fonction précise, et je ne sais pas comment ça se passe si la protection de la feuille a un mot de passe.

    Bon courage, et si tu trouves par cette méthode, écris le code Delphi ça peut en intéresser plus d'un !

  3. #3
    Membre habitué Avatar de poussinphp
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 428
    Points : 176
    Points
    176
    Par défaut
    Je vient de regarder dans vba.

    On obtient
    ActiveSheet.Unprotect
    Je cherche dans delphi avec activesheet mais ya rien. j'ai cherché partout les fonction unprotect, protect, protected.... rien

  4. #4
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 32
    Points : 30
    Points
    30
    Par défaut
    Essai dont ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      try
        vMSExcel := GetActiveOleObject('Excel.Application');
      except
        vMSExcel := CreateOleObject('Excel.Application');
      end;
      vXLWorkbooks := vMSExcel.Workbooks;
      vXLWorkbook  := vXLWorkbooks.Open(OpenDialog1.FileName, vLink, vReadOnly);
      vXLWorkbook.WorkSheets[NumeroDeLaFeuille].Unprotect;

  5. #5
    Membre habitué Avatar de poussinphp
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 428
    Points : 176
    Points
    176
    Par défaut
    ton vMSExcel fais référence à quoi?

  6. #6
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 32
    Points : 30
    Points
    30
    Par défaut
    vMSExcel est l'objet OLE Excel.Application

  7. #7
    Membre habitué Avatar de poussinphp
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 428
    Points : 176
    Points
    176
    Par défaut
    J'ai essayé et ça marche pas.

    J'ai trouvé cette fonction :
    Excel.Workbooks.Item[1].Unprotect('',0);
    Malheureusement, ça ne fais rien

  8. #8
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 32
    Points : 30
    Points
    30
    Par défaut
    Cette fonction marche, c'est sur !

    Par exemple, tu as un classeur Excel qui contient une seule feuille protégée par le mot de passe "coucou"

    1) Crée un nouveau projet et ajoute la bibliothèque "ComObj"
    2) Ajoute ces variables globales :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    vMSExcel : variant;
    vXLWorkbooks, vXLWorkbook, vReadOnly, vLink, vWorksheet : variant;
    3) Place un composant OpenDialog et un bouton
    4) Sur le clic du bouton effectue la procédure suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
      try 
        vMSExcel := GetActiveOleObject('Excel.Application'); 
      except 
        vMSExcel := CreateOleObject('Excel.Application'); 
      end; 
      vXLWorkbooks := vMSExcel.Workbooks; 
      vXLWorkbook  := vXLWorkbooks.Open(OpenDialog1.FileName, vLink, vReadOnly); 
      vWorksheet := vXLWorkbook.WorkSheets[iFeuille];
      vWorksheet.Unprotect('coucou');
      vXLWorkbook.Close(true, OpenDialog1.FileName);
      vMSExcel.Quit;
      vMSExcel := unassigned;
    Vérifie ensuite que ta feuille n'est plus protégée dans Excel !

    A+
    Julien[/code]

  9. #9
    Membre habitué Avatar de poussinphp
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    428
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 428
    Points : 176
    Points
    176
    Par défaut
    ça fonctionne !!!

    Merci beaucoup

  10. #10
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Bonjour,

    Désolé de faire remonter le thread mais je voulais savoir si tu a testé cette le code de la FAQ :
    http://delphi.developpez.com/faq/?pa...celfeuproteger

    Merci de préciser ta version d'Excel aussi.

  11. #11
    Nouveau membre du Club
    Inscrit en
    Avril 2004
    Messages
    32
    Détails du profil
    Informations forums :
    Inscription : Avril 2004
    Messages : 32
    Points : 30
    Points
    30
    Par défaut
    C'est à partir de la FAQ que j'ai appris à utiliser Excel !

    Cette procédure fonctionne aussi bien avec Excel 2000 qu'avec Excel 2003.

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

Discussions similaires

  1. [XL-2007] Soucis avec excel
    Par Alexis__ dans le forum Excel
    Réponses: 6
    Dernier message: 09/11/2009, 19h06
  2. Petits soucis avec Excel
    Par Jean-Luc53 dans le forum Excel
    Réponses: 2
    Dernier message: 03/06/2008, 11h16
  3. Réponses: 10
    Dernier message: 07/07/2006, 14h26
  4. [C#][Visual C# Express] Gros souci avec Excel
    Par poullos dans le forum EDI/Outils
    Réponses: 7
    Dernier message: 18/11/2005, 13h15

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