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

C++Builder Discussion :

Format des cellules en Ole Excel [FAQ]


Sujet :

C++Builder

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre �clair� Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par d�faut Format des cellules en Ole Excel
    Bonjour � tous

    J'ai un petit souci avec le format des cellules.
    Je suis en train de d�velopper une classe permettant de piloter Excel en ole

    Or actuellement elle ne fonctionne que pour des colonnes de A a Z
    car je joue sur les codes ascii pour incr�menter les colonnes (initialisation a . Or d�s que j'arrive a Z, j'ai un souci car ensuite c'est AA.

    j'ai vu dans la faq que l'on pouvais changer le format de d�finition des cellules (L1C1 ou A1 pour acc�der a une cellule) mais je n'ai pas trouver comment faire

    Merci d'avance.

  2. #2
    Membre exp�riment�
    Avatar de Superstivix
    Inscrit en
    D�cembre 2003
    Messages
    250
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2003
    Messages : 250
    Par d�faut
    bonjour,

    Logiquement la FAQ te donnes toutes les r�ponses pour ce probl�me.

    Pour changer le mode d'adressage des cellules d'Excel, il faut regarder ici

    Pour acc�der � chaque cellule, tu trouveras ton bonheur ici

    Si jamais ces informations ne sont pas suffisantes pour r�soudre ton probl�me, peux-tu essayer d'�tre plus explicite sur ce que tu n'arrives pas � faire, stp.

  3. #3
    Membre �clair� Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par d�faut
    Salut Superstivix, Merci pour tes informations.

    Le lien que tu m'as envoy�, c'est pour changer le mode d'affichage des cellulles et non l'adressage car cela ne fonctionne pas.

    Voil� mon code, j'ai simplifi�

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
     
    void __fastcall TForm1::DemarerClick(TObject *Sender)
    {
            Variant NomFeuille;
            Variant NomCellule;
            Variant Cellule;
            Variant Valeur;
     
            // On Ouvre Excel;
            Excel = Variant::CreateObject("Excel.Application");
     
            // On défini les propriétés de l'instance
            Excel.OlePropertySet("Visible", true);
            Excel.OlePropertySet("Interactive", true);
     
            //Format L1C1
            Excel.OlePropertySet("ReferenceStyle", -4150);
     
            // Format A1
            //Excel.OlePropertySet("ReferenceStyle", 1);
     
     
            // On récupère l'ensemble des classeurs
            Classeurs = Excel.OlePropertyGet("Workbooks");
     
            // On ajoute un classeur
            UnClasseur = Classeurs.OleFunction("Add");
     
     
            // On accède a la feille 1
            NomFeuille = "Feuil1";
     
            Feuille = UnClasseur.OlePropertyGet("Worksheets", NomFeuille);
     
     
            // On écrit dans la première case
            //NomCellule = "A1";
            NomCellule = "L1C1";
            Cellule = Feuille.OlePropertyGet("Range", NomCellule);
     
            Valeur = "Test";
            // On affecte la valeur a la cellule
            Cellule.OlePropertySet("value", Valeur);
     
    }
    Ou les Variants Excel, Classeurs, UnClasseur et Feuille sont d�clarer comme variables de la classe.

    Quand je met le mode A1, ca marche, mais pour L1C1, j'ai une erreur.

  4. #4
    Membre exp�riment�
    Avatar de Superstivix
    Inscrit en
    D�cembre 2003
    Messages
    250
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2003
    Messages : 250
    Par d�faut
    Pour la m�thode d'adressage as-tu essay� ce qui a �t� utilis� dans ce thread?

  5. #5
    Membre �clair� Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par d�faut
    Merci � toi, ca fonctionne. En fait, j'avais exactement le m�me probl�me que vladi (auteur du post auquel tu m'a renvoy�).

    Je sais pas comment je me suis d�brouill� quand j'ai fait une recherche sur le forum car je ne l'ai pas trouv�.

    Encore Merci


    PS : tu ne pourrais pas rajouter cette m�thode dans la FAQ, cela pourrais �tre utilie pour d'autres personnes qui voudrais utiliser ce type d'adressage.

  6. #6
    Membre �clair� Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par d�faut
    J'ai tout de m�me un petit souci

    Pour moi, le num�ro de la ligne et de la colonne sont dans des variables et quand j'appelle ta fonction avec mes variables, cela plante.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Cellule = Feuille.Exec(PropertyGet("Cells") << Ligne << Colonne);
    Ou Ligne et Colonne sont des int
    Est ce qu'il ne faut pas les convertir en Variant ?

  7. #7
    Membre exp�riment�
    Avatar de Superstivix
    Inscrit en
    D�cembre 2003
    Messages
    250
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2003
    Messages : 250
    Par d�faut
    Citation Envoy� par kurul1
    PS : tu ne pourrais pas rajouter cette m�thode dans la FAQ, cela pourrais �tre utilie pour d'autres personnes qui voudrais utiliser ce type d'adressage.
    Oui je pense que �a va �tre n�cessaire.
    Moi j'ai �t� oblig� de faire tout mon code avec cette m�thode Exec car �a ne fonctionnait pas autrement mais je pensais que c'�tait du � l'install ou � ma config donc j'ai pas cherch� plus loin.

    Apparemment, je ne suis pas vraiement le seul dans ce cas donc il faudra penser � adapter la FAQ dans ce sens.

  8. #8
    Membre exp�riment�
    Avatar de Superstivix
    Inscrit en
    D�cembre 2003
    Messages
    250
    D�tails du profil
    Informations forums :
    Inscription : D�cembre 2003
    Messages : 250
    Par d�faut
    Citation Envoy� par kurul1
    J'ai tout de m�me un petit souci

    Pour moi, le num�ro de la ligne et de la colonne sont dans des variables et quand j'appelle ta fonction avec mes variables, cela plante.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Cellule = Feuille.Exec(PropertyGet("Cells") << Ligne << Colonne);
    Ou Ligne et Colonne sont des int
    Est ce qu'il ne faut pas les convertir en Variant ?
    Non, non pas besoin d'utiliser des Variants, le type int convient tr�s bien

  9. #9
    Membre �clair� Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par d�faut
    je suis un gros nul, j'ai oubli� de changer le format des cellules.

    d�sol�

  10. #10
    Membre �clair� Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par d�faut
    En fait, j'ai toujours un souci que je ne m'explique pas.

    Quand je fais un programme tout simple avec cette solution, il n'y a pas de probl�me. Par contre d�s que je l'int�gre dans mon propre programme, j'ai une violation m�moire.

    J'ai donc pens� � une autre solution, permettant de rester en mode A1.

    Il s'agit de g�n�rer le nom de la colonne en fonction de l'indice de colonne enti�re

    par exemple pour une colonne d'indice 35

    on divise 35 par 26 : il y va une fois et il reste 9. On convertit ce nombre en lettre ce qui nous donne I (9�me lettre de l'alphabet).
    ensuite on repart du diviseur et on recommence
    soit 1 / 26 : il y va 0 fois et il reste 1 (convertit en lettre = A)

    On a termin� car le diviseur est 0

    On obtient la colonne de la case qui est AI

    j'esp�re avoir �t� clair

    voil� mon 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
     
    // Méthode pour calculer l'indice
    AnsiString TForm1::IndiceColonne(int Colonne)
    {
            int Diviseur;
            int Reste;
            AnsiString Indice;
            char Carac;
     
            do
            {
                    Diviseur = Colonne / 26;
                    Reste = Colonne % 26;
     
                    // Conversion en caractère
                    Carac = Reste + 64;    // Code Ascii du A = 65
     
                    Indice += Carac;
     
                    Colonne = Diviseur;
            }while (Diviseur != 0);
     
            return Indice;
    }
    et la fonction pour inverser la chaine puisque le bit de poit fort est en premier.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    AnsiString TForm1::InverserAnsiString(AnsiString chaine)
    {
            AnsiString chaineInverser;
     
            for(int i = chaine.Length(); i > 0; i--)
            {
                    chaineInverser += chaine.SubString(i, 1);
            }
     
            return chaineInverser;
    }
    Ensuite pour obtenir l'indice de la colonne il suffit de faire

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Colonne = InverserAnsiString(IndiceColonne(Indice));
    il suffit ensuite de concat�ner cet indice de colonne � l'indice de ligne et l'on a le nom de notre cellule.

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. format des cellules dans EXCEL
    Par toutou2000 dans le forum C#
    R�ponses: 2
    Dernier message: 25/03/2009, 16h33
  2. [Pilotage d'Excel]Comment d�finir les formats des cellules
    Par Masmeta dans le forum Windows Forms
    R�ponses: 1
    Dernier message: 03/04/2008, 18h34
  3. Contr�le du format des cellules dans Excel
    Par Flashget dans le forum MATLAB
    R�ponses: 4
    Dernier message: 20/03/2007, 14h37
  4. types de format des cellules sur Excel
    Par magictom42 dans le forum Access
    R�ponses: 3
    Dernier message: 03/01/2007, 15h43
  5. Formater des cellules excel en format nombre
    Par _developpeur_ dans le forum Access
    R�ponses: 7
    Dernier message: 09/01/2006, 14h13

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