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

Windows Discussion :

[VC6++]Sélectionner un RANGE en L1C1 sur une feuille Excel


Sujet :

Windows

  1. #1
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [VC6++]Sélectionner un RANGE en L1C1 sur une feuille Excel
    Bonjour,

    J espere poster au bon endroit.

    J utilise VC6++ pour gerer du fichier Excel.

    Je passe par Invoke ( automation ) interfacé dans une fonction AuroWrap ( classique )

    du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
        cstrNomPropriete = "Range";
        ValeurCOleVariant = "A1:C1";    
        Tampon = cstrNomPropriete.AllocSysString();
        AutoWrap(DISPATCH_PROPERTYGET, &result, Feuille_ID, Tampon, 1, ValeurCOleVariant);
        IDispatch * pXlRange = result.pdispVal;
     
        AutoWrap(DISPATCH_METHOD, &result, pXlRange, L"Select", 0);
    Ca marche très bien.

    Ce que j aimerais savoir c est si il existe une méthode pour passer a la fonction une sélection de cellules exprimée en L1C1, en ligne et colonne , plus adaptée a la programmation que la forme A1:C1.

    Une piste non aboutie que j ai fouillée et de passer par la fonction Excel Address, censée renvoyée une adresse de type A1:C3 apres l envoi des lignes et colonnes de la sélection. Mais je n arrive pas non plus a me servir de cette fonction Address.



    Merci de toute aide.
    Cordialement

    Dominique

  2. #2
    Futur Membre du Club
    Inscrit en
    Septembre 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Finalement, je m en suis sorti en traduisant lignes et colonnes en "A1:C1"

    Je pose le code ici, au cas ou certains auraient eu le meme probleme que moi :

    N'empeche la question de base reste entiere...

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
     
    void RenvoitFormatRange(int iLigne_1,int iColonne_1,int iLigne_2,int iColonne_2,CString * pcstrRange)
    {
    // transforme les lignes et colonne transmise vers la forme A1:C1 
     
    CString cstrLettre_1, cstrLettre_2; 
     
    cstrLettre_1 = TraduitColonneVersLettre(iColonne_1);
    cstrLettre_2 = TraduitColonneVersLettre(iColonne_2);
     
    pcstrRange->Format("%s%d:%s%d", cstrLettre_1, iLigne_1, cstrLettre_2, iLigne_2);
     
    }
     
    CString TraduitColonneVersLettre(int iColonne)
    {
    // Traduit un colonne en sa lettre
    // ex 5 = E
    // 300 = KN
    // 3000 = DKJ
     
    int iTampon_1 = iColonne % (26); 
    iColonne /= 26; 
    int iTampon_2 = iColonne % (26);
    iColonne /= (26); 
    int iTampon_3 = iColonne % (26); 
     
    char chLettre_1;
    char chLettre_2;
    char chLettre_3;
    char chLettres[4]; memset (chLettres, 0, 4);
     
    chLettre_1 = 'A' + iTampon_1 - 1;
     
    if (iTampon_2 != 0)
    chLettre_2 = 'A' + iTampon_2 - 1;
     
    if (iTampon_3 != 0)
    chLettre_3 = 'A' + iTampon_3 - 1;
     
    int iIndice=0;
    if (iTampon_3 != 0)
    {
    chLettres[iIndice] = chLettre_3;
    iIndice++;
    }
     
    if (iTampon_2 != 0)
    {
    chLettres[iIndice] = chLettre_2;
    iIndice++;
    }
     
    chLettres[iIndice] = chLettre_1;
     
    CString cstrLettres;
    cstrLettres.Format("%s", chLettres);
     
    return cstrLettres;
    }

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

Discussions similaires

  1. Réponses: 9
    Dernier message: 04/04/2007, 11h16
  2. [VBA-E] musique sur une feuille Excel
    Par jnmab dans le forum Excel
    Réponses: 2
    Dernier message: 01/04/2007, 11h21
  3. [VBA EXCEL]comment utiliser les boites a outils control sur une feuille excel
    Par EvaristeGaloisBis dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/02/2007, 19h04
  4. Réponses: 8
    Dernier message: 15/05/2006, 14h33
  5. ecrire sur une feuille excel avec Asp
    Par Ajay dans le forum ASP
    Réponses: 7
    Dernier message: 06/01/2006, 23h18

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