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

VB.NET Discussion :

Ecrire dans Excel


Sujet :

VB.NET

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mai 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut Ecrire dans Excel
    Bonjour,

    je développe actuellement une application permettant de gérer des données et je suis entrain d'écrire un programme pour écrire ces données dans excel.

    Les données se rentrent correctement mais mes lignes de codes permettant la mise en forme du tableau créent des erreurs.

    Ce code marchait parfaitement auparavant mais j'ai changer de version d'excel. Je suis revenu a l'ancienne version mais sa ne marche plus quand même.

    ma ligne de code est : feuille.range("A" & i).borders(excel.XlBordersIndex.xlEdgeLeft).linestyle = excel.XlLineStyle.xlContinuous

    l'erreur affiché est : Public member 'XlBordersIndex' on type 'Workbook' not found.

    Si quelqu un pouvais me venir en aide.

    Pendant que j'y suis, mon application marche actuellement avec ma version d'excel car je l'ai mis en réference mais si un autre utilisateur possède une autre version cela ne marche pas, comment faut il faire?

    cordialement

    Adrien

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    demandeur d'emploi
    Inscrit en
    Mai 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : demandeur d'emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 20
    Points : 36
    Points
    36
    Par défaut
    Comment tu as ajoute reference a Excel?
    Ton "excel" c'est quoi?

    Tu peux:
    1. ajouter reference avant ("early binding") - ca marche avec xlborder... mais aussi ce serait un probleme pour utilisateurs avec une version differente d'Excel...
    ou
    2. utiliser "late binding" - pas de probleme pour utilisateurs, mais c'est vrai - il y a un probleme avec xlborderindex en temps de temps:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Dim xlApp As Object
    Dim xlBook As Object
    Dim xlSheet As Object
     
    xlApp = CreateObject("Excel.Application")
    xlBook = xlApp.Workbooks.Add()
    xlSheet = xlApp.Worksheets(1)
     
    xlApp.visible = True
    ' ...
    ... xlApp.XlBordersIndex.xlEdgeLeft ...
    ' ...
    Si marche pas - creer et utiliser ton enum:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    private enum mesxlborders
    xlDiagonalDown=5	
    xlDiagonalUp=6
    xlEdgeBottom=9
    xlEdgeLeft=7
    xlEdgeRight=10
    xlEdgeTop=8
    xlInsideHorizontal=12
    xlInsideVertical=11
    end enum
     
    '...
     
    ... mesxlborders.xlEdgeLeft ...
    C'est une seule solution j'ai trouve...

    PS. ok, sans ajouter un reference - as tu "Imports Microsoft.Office.Interop.Excel" ?
    A Paris. Je cherche d'emploi (France, Maroc, Moyen Orient, autres a discuter).
    Je comprends presque tout en francais mais je n'ecris pas bien, desole

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mai 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    bonjour,

    merci déjà de votre réponse.

    alors en faite avant j'avais créer l'application avec la version excel de 2007 et ensuite je suis passe avec celle de 2013.

    quand j'ai changé la version, toutes les lignes de codes était en erreur. Ne comprenant pas j'ai donc voulu remettre mon ancienne version d'excel mais maintenant sa me met cette nouvelle erreur.
    Par contre je voudrai que l'application marche avec toutes les versions d'excel car lorsque je vais la générer plusieurs utilisateur l'utiliserons et n'aurons pas forcement la même version que moi.

    Pour ajouter excel en reference, je suis allé dans reference puis .com et j'ai inserer la librairie correspondante.

    Tous ce qui est pour écrire les donnée dans le classeur marche mais l'erreur est juste sur la ligne correspondant à la mise en forme.

    mon code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Dim excel, classeur, feuille
     
            excel = CreateObject("Excel.Application")
            excel.Visible = True
            excel = excel.Workbooks.Open(pathsauv & "\Base de donnée\Données BD\Heures Tâches.xls")
            feuille = excel.ActiveSheet
    après sa écrit des données

    apres sa met en forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     For i = 11 To ligneinser
                feuille.range("A" & i).borders(excel.XlBordersIndex.xlEdgeLeft).linestyle = excel.XlLineStyle.xlContinuous
                feuille.range("A" & i).borders(excel.XlBordersIndex.xlEdgeLeft).Weight = excel.XlBorderWeight.xlMedium
                feuille.range("A" & i).borders(excel.XlBordersIndex.xlEdgeLeft).ColorIndex = excel.Constants.xlAutomatic
    next
    quand j'utilise enum c'est vb qui ne reconnait pas et le import en haut est bien présent.

    donc je bloque totalement

  4. #4
    Nouveau membre du Club
    Homme Profil pro
    demandeur d'emploi
    Inscrit en
    Mai 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : demandeur d'emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 20
    Points : 36
    Points
    36
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
         excel = CreateObject("Excel.Application")
     ' ???????       excel = excel.Workbooks.Open(pathsauv & "\Base de donnée\Données BD\Heures Tâches.xls") '??????
    1e excel -> excel app
    2e excel -> excel wbook...

    bien sur ca marche pas...
    A Paris. Je cherche d'emploi (France, Maroc, Moyen Orient, autres a discuter).
    Je comprends presque tout en francais mais je n'ecris pas bien, desole

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mai 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    le premier c'est "classeur" et non "excel" je me suis trompe et après j'ouvre un fichier excel spécial qui est déjà en partie mis en forme (les en tête et pied de page)

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    demandeur d'emploi
    Inscrit en
    Mai 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : demandeur d'emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 20
    Points : 36
    Points
    36
    Par défaut
    Essayez ca et dites moi les resultats:

    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
    Public Class Form3
        Private Enum mesxlborders
            xlDiagonalDown = 5
            xlDiagonalUp = 6
            xlEdgeBottom = 9
            xlEdgeLeft = 7
            xlEdgeRight = 10
            xlEdgeTop = 8
            xlInsideHorizontal = 12
            xlInsideVertical = 11
        End Enum
     
        Private Enum mesxllinestyle
            xlContinuous = 1
            xlDash = -4115
            xlDashDot = 4
            xlDashDotDot = 5
            xlDot = -4118
            xlDouble = -4119
            xlLineStyleNone = -4142
            xlSlantDashDot = 13
        End Enum
     
     
        Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Dim xlApp = CreateObject("Excel.Application")
            xlApp.Visible = True
            Dim xlbook = xlApp.Workbooks.Add()
            Dim xlSheet = xlApp.Worksheets(1)
     
            For i = 10 To 20
                xlSheet.range("c" & i).value = i
     
                With xlSheet.range("c" & i).Borders(mesxlborders.xlEdgeBottom)
                    .LineStyle = mesxllinestyle.xlDashDot
                    .ColorIndex = 0
                    .TintAndShade = 0
                    .Weight = 2
                End With
     
            Next
        End Sub
    End Class
    A Paris. Je cherche d'emploi (France, Maroc, Moyen Orient, autres a discuter).
    Je comprends presque tout en francais mais je n'ecris pas bien, desole

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mai 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    bonjour,

    alors il y a juste le tintandshade qui met une erreur qui est : Public member 'TintAndShade' on type 'Border' not found.

    mais si j'enlève cette ligne de code cela marche sans problème. Je ne sais pas d'ailleurs a quo correspond cette ligne.

    Je vais donc y adapté a ma mise en forme.

    Merci car tu me débloque et je doit mettre l'application en marche dans 15 jours.

    Dernière question. dans ton premier message tu parlait pour mettre excel en reference et que sa marche pour toutes les versions d'excel et sa je n'ai pas comprise comment il fallait faire car pour le moment j'ai juste la librairie de ma version d'excel en reference et si je change sa ne marche pas?
    Les utilisateurs n'aurons surement pas la meme version d'excel donc il faudrai que l'application marche tous le temps

  8. #8
    Nouveau membre du Club
    Homme Profil pro
    demandeur d'emploi
    Inscrit en
    Mai 2014
    Messages
    20
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : demandeur d'emploi
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2014
    Messages : 20
    Points : 36
    Points
    36
    Par défaut
    1. Avec liaison tardive - reference a office dll n'est pas necessaire. Mais c'est en peu limite (par example - pas de const/enum et besoin de creation, comme j'ai fait). En theorie - pas de problemes pour tes utilisateurs.

    2. Avec liaison anticipee - reference a office dll est obligatoire, et apres on peut utiliser tous les fonctions, const, enums, etc. Aussi c'est une meilleure solution. Mais...
    a) si on utilise version plus haute que utilisateur = problemes pour utilisateur
    b) pour les eviter - on peut utiliser version plus bas, qui est compatible avec tous les versions hautes (par example. si tu as besoin d'automatiser Excel 95, 97, 2000, 2002, tu doit utiliser la bibliotheque de types pour Excel 95 pour maintenir la compatibilite avec toutes les versions; pour 2000, 2002 - utiliser la bibliotheque pour E2000, etc.)

    J'ai vu un article/tutorial sur cet forum, mais je ne suis pas sur ou. Si tu as besoin de plus info - cherchez "vb excel liaison tardive et anticipee" ou une phrase similaire.
    Un peu d'info: http://support.microsoft.com/kb/304661/fr
    A Paris. Je cherche d'emploi (France, Maroc, Moyen Orient, autres a discuter).
    Je comprends presque tout en francais mais je n'ecris pas bien, desole

Discussions similaires

  1. ecrire dans excel
    Par philguio dans le forum Windows Forms
    Réponses: 8
    Dernier message: 26/07/2009, 22h46
  2. Ecrire dans Excel via DDE quand plusieurs fichiers Excel ouverts
    Par Lolly dans le forum ODS et reporting
    Réponses: 1
    Dernier message: 09/07/2009, 17h26
  3. ecrire dans excel
    Par jeanlucsl dans le forum VB 6 et antérieur
    Réponses: 24
    Dernier message: 03/12/2007, 14h07
  4. [VB.NET] Ecrire dans EXCEL 2002 depuis VB.net
    Par vijeo dans le forum Windows Forms
    Réponses: 4
    Dernier message: 13/06/2006, 13h09

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