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

MFC Discussion :

[MFC/Excel] Créer un nouveau tableau et le remplir


Sujet :

MFC

  1. #1
    Membre éclairé Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par défaut [MFC/Excel] Créer un nouveau tableau et le remplir
    Bonjour à tous,
    Je voudrais comment ouvrir et remplir un tableau Excel.
    J'arrive à ouvrir l'application Excel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CApplication spAppli;
    spAppli.CreateDispatch(_T("Excel.Application"));
    Mais je n'arrive pas à trouver de fonction du genre Add... ou New... ou Create..

    Je recupère une collection de Worksheet et une collection de Workbook. Est-ce utile ?

    Merci de votre aide.

  2. #2
    Membre éclairé Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par défaut
    ReBonjour,
    Apparement grâce à l'application, on récupère une collection de Workbooks, dans cette collection, on récupère le Workbook courant, puis à partir du Workbook, on récupère une collection de Worksheet, puis on récupère le Worksheet courant et enfin on peut créer et remplir un tableau.
    Seulement mon code ne compile pas...
    Voici 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
    CApplication spAppli; //Smart Pointer vers l'application Excel
    	CWorkbooks spWorkbooks;
    	CWorkbook spWorkbook;
    	CWorksheets spWorksheets;
    	CWorksheet spWorksheet;
     
    	VARIANT vIndex;
    	vIndex.vt = VT_INT;
    	vIndex.intVal = 1;
     
    	//Ouverture de l'application Excel
    	spAppli.CreateDispatch(_T("Excel.Application"));
    	AfxMessageBox(_T("Application Excel ouverte"));
     
    	//On récupère le Workbook courant dans la collection de Workbook de l'application
    	spWorkbooks = spAppli.get_Workbooks();
    	spWorkbook = spWorkbooks.get_Item(vIndex);
    	AfxMessageBox(_T("On a le Workbook"));
     
     
    	//On récupère le worksheet courant dans la collection de worksheets du workbook
    	spWorksheets = spWorkbook.get_Worksheets();
    	spWorksheet = spWorksheets.get_Item(vIndex);
    	AfxMessageBox(_T("On a le Worksheet"));

  3. #3
    Membre éclairé Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par défaut
    Alors j'ai trouvé ceci :
    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
    CApplication spAppli; //Smart Pointer vers l'application Excel
    	CWorkbook ActiveWorkbook;
    	CWorksheet ActiveWorksheet;
     
    	VARIANT vIndex;
    	vIndex.vt = VT_INT;
    	vIndex.intVal = 1;
     
    	//Ouverture de l'application Excel
    	spAppli.CreateDispatch(_T("Excel.Application"));
    	AfxMessageBox(_T("Application Excel ouverte"));
     
    	//On récupère le Workbook courant dans la collection de Workbook de l'application
    	ActiveWorkbook = spAppli.get_ActiveWorkbook();
    	AfxMessageBox(_T("On a le Workbook"));
     
     
    	//On récupère le worksheet courant dans la collection de worksheets du workbook
    	ActiveWorksheet = spAppli.get_ActiveSheet();
    	AfxMessageBox(_T("On a le Worksheet"));
    Apparement cela fonctionne..
    Du coup est-il nécessaire de récupérer le Workbook courant ? (Si on ne rajoute pas de feuille supplémentatire ?)

  4. #4
    Membre éclairé Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par défaut
    J'ai quelque peu avancé voici ou j'en suit :
    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
    CApplication spAppli;        
    	CWorkbooks spWorkbooks;		 
    	CWorksheet ActiveWorksheet;  
    	CRange spRange;              
     
    	VARIANT vAdd, vRange;
    	vAdd.vt = VT_INT;
    	vAdd.intVal = 1;
    	vRange.vt = VT_BSTR; 
     
    	//Ouverture de l'application Excel
    	spAppli.CreateDispatch(_T("Excel.Application"));
    	spAppli.put_Visible(TRUE);
    	AfxMessageBox(_T("Application Excel ouverte"));
     
    	//On récupère la collection de classeur de l'appli en cours et on en ajoute un nouveau
    	spWorkbooks = spAppli.get_Workbooks();
    	spWorkbooks.Add(vAdd);
     
    	//On récupère la feuille de calcul active
    	ActiveWorksheet = spAppli.get_ActiveSheet();
     
    	//On récupère les cellules que l'on veut modifier
    	ActiveWorksheet.get_Range(vRange);
     
     
    	spAppli.Quit();
    Mon problème est que je ne peux convertir un const char * en BSTR donc je ne peux pas passer d'argument à la fonction get_Range..
    Merci.

  5. #5
    Membre éclairé Avatar de SmOkEiSBaD
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    234
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2008
    Messages : 234
    Par défaut
    Voila la solution que j'ai trouvée :
    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
    CApplication spAppli;        //Smart Pointer vers l'application Excel
    	CWorkbooks spWorkbooks;		 //Collection de classeur
    	CWorksheet ActiveWorksheet;  //Feuille de calcul Active
    	CRange spRange;              //Bloc de cellule
    	CString sCell;
     
    	COleVariant vMissing(DISP_E_PARAMNOTFOUND, VT_ERROR); //Evite les paramètres optionnels des fonctions
     
    	VARIANT vAdd, vCell1, vCell2;
    	vAdd.vt = VT_INT;
    	vAdd.intVal = 1;
    	vCell1.vt = VT_BSTR;
    	sCell = CString("A1");
    	vCell1.bstrVal = sCell.AllocSysString();
     
     
     
    	//Ouverture de l'application Excel
    	spAppli.CreateDispatch(_T("Excel.Application"));
    	spAppli.put_Visible(TRUE);
    	AfxMessageBox(_T("Application Excel ouverte"));
     
    	//On récupère la collection de classeur de l'appli en cours et on en ajoute un nouveau
    	spWorkbooks = spAppli.get_Workbooks();
    	spWorkbooks.Add(vAdd);
     
    	//On récupère la feuille de calcul active
    	ActiveWorksheet = spAppli.get_ActiveSheet();
     
    	//On récupère les cellules que l'on veut modifier
    	spRange = ActiveWorksheet.get_Range(vCell1, vMissing);
    	spRange.put_Value(vMissing, vAdd);
    Premier Topic que je résoud tout seul o_O

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

Discussions similaires

  1. vba - coller range excel dans un nouveau tableau ppt
    Par tiber33 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 05/02/2014, 17h36
  2. [XL-2007] [Débutant] Créer un nouveau classeur à partir d'une ligne d'un tableau
    Par DerJul dans le forum Macros et VBA Excel
    Réponses: 31
    Dernier message: 04/07/2011, 14h53
  3. [XL-2003] Créer un nouveaux tableau excel..
    Par visto94 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/07/2010, 13h12
  4. Réponses: 23
    Dernier message: 17/05/2006, 16h35
  5. [Excel] Créer un tableau à partir d'un autre
    Par Ouguiya dans le forum Excel
    Réponses: 3
    Dernier message: 30/03/2006, 10h34

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