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 6 et antérieur Discussion :

Ajout ref excel 12.0 a projet VB6


Sujet :

VB 6 et antérieur

  1. #1
    Membre régulier
    Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Mai 2008
    Messages : 137
    Points : 80
    Points
    80
    Par défaut Ajout ref excel 12.0 a projet VB6
    Bonjour,
    Sur un poste equipe d'Office2000, j'ai developpe une application vb6 utilisant des feuilles excel. Pour cela, dans le projet vb6, je rajoute bien en reference la dll "EXCEL9.OLB" (Microsoft Excel 9.0 Object Library).
    L'application marche correctement sur mon poste mais bloque lorsque je veux l'utiliser sur un poste ayant une version d'office plus recente (par exemple excel2007 ou excel2010).
    Je me dis que ca doit etre la reference manquante a la version d'excel presente sur le poste utilisateur qui doit poser probleme.
    Ma question est de savoir s'il est possible de rajouter en reference a mon projet, sur mon poste equipe de Office2000, les references aux dll manquantes (Microsoft Excel 10.0 Object Library et Microsoft Excel 12.0 Object Library) sans avoir a installer (et donc acheter) office2003 ou office2010 ?
    Il y a t-il un moyen d'inclure ces dll facilement a mon projet de sorte que celui-ci puisse tourner sans probleme sur des postes ayant office2010 par exemple ?
    Merci d'avance pour vos reponses.

  2. #2
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Citation Envoyé par Teddy7 Voir le message
    Bonjour,
    Sur un poste equipe d'Office2000, j'ai developpe une application vb6 utilisant des feuilles excel. Pour cela, dans le projet vb6, je rajoute bien en reference la dll "EXCEL9.OLB" (Microsoft Excel 9.0 Object Library).
    L'application marche correctement sur mon poste mais bloque lorsque je veux l'utiliser sur un poste ayant une version d'office plus recente (par exemple excel2007 ou excel2010).
    Je me dis que ca doit etre la reference manquante a la version d'excel presente sur le poste utilisateur qui doit poser probleme.
    Ma question est de savoir s'il est possible de rajouter en reference a mon projet, sur mon poste equipe de Office2000, les references aux dll manquantes (Microsoft Excel 10.0 Object Library et Microsoft Excel 12.0 Object Library) sans avoir a installer (et donc acheter) office2003 ou office2010 ?
    Il y a t-il un moyen d'inclure ces dll facilement a mon projet de sorte que celui-ci puisse tourner sans probleme sur des postes ayant office2010 par exemple ?
    Merci d'avance pour vos reponses.
    Bonjour
    1/ Tu ne peux pas distribuer les librairies Excel
    2/ Il est plus probable qu'il s'agit d'un problème lié aux différences de version :
    utilise déjà des gestionnaires d'erreurs afin de situer précisément l'erreur

  3. #3
    Membre régulier
    Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Mai 2008
    Messages : 137
    Points : 80
    Points
    80
    Par défaut
    Merci beaucoup Dark pour ta reponse. Cela m’ôte d'un doute.
    Sachant que tout ce que je fais c'est simplement ouvrir un fichier excel (je test avant s'il existe) et le renseigner avec des donnees, ca devrait pouvoir fonctionner quelle que soit la version d'Excel donc.
    Alors pour aller plus loin je vais tacher de 'cerner' l'erreur. Pour cela tu me suggere d'utiliser ses "gestionnaires d'erreurs afin de situer précisément l'erreur", pourrais tu preciser ce que tu entend par "gestionnaires d'erreurs" !? je ne travaille jamais sur excel et ne vois pas a quoi tu fais reference !

    Juste pour info, 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
    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
     
    Private Sub FichierExcel()
    Dim i As Integer
    On Error GoTo TraiteErreur
     
    'Test de l'existence du fichier
    chemin = Dir(App.Path & "\Documents\Liste-des-prenoms.xls")
    If chemin = "" Then 'creation du fichier
        Workbooks.Add
        Sheets("Feuil1").Select
        Sheets("Feuil1").Name = "Liste des prenoms"
        Columns(1).ColumnWidth = 10
        Columns(2).ColumnWidth = 2
        Columns(3).ColumnWidth = 12
     
        ActiveWorkbook.SaveAs filename:=App.Path & "\Documents\Liste-des-prenoms.xls", FileFormat:= _
        xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
        , CreateBackup:=False
        ActiveWorkbook.Close
        Set exc = Nothing
    End If
     
    If IsFileOpen(App.Path & "\Documents\Liste-des-prenoms.xls") = False Then 'Alors je l'ouvre
        Set appExcel = CreateObject("Excel.Application")
        Set wbExcel = appExcel.Workbooks.Open(App.Path & "\Documents\Liste-des-prenoms.xls")
        appExcel.DisplayAlerts = wdAlertsNone 'supprime les alertes de excel=> "Voulez vous sauvegarder? etc..."
        appExcel.Visible = True
    Else
        Set wbExcel = GetObject(App.Path & "\Documents\Liste-des-prenoms.xls")
        wbExcel.Activate
    End If
     
    Set FeuilleExcel = wbExcel.Sheets(1)
    FeuilleExcel.Cells.Clear
     
    Exit Sub
    End Sub
     
    Function IsFileOpen(filename As String)
    Dim filenum As Integer, errnum As Integer
     
    On Error Resume Next ' Arrête la gestion d'erreur.
    filenum = FreeFile() ' récupère un numéro de fichier libre.
    'tentative pour ouvrir un fichier
    Open filename For Input Lock Read As #filenum
    Close filenum ' ferme le fichier.
    errnum = err ' Sauvegarde du N° de l'erreur qui s'est produite.
    On Error GoTo 0 ' Reprise de la gestion d'erreur.
    'Détermine la nature de l'erreur qui s'est produite.
        Select Case errnum
            Case 0  'Pas d'erreur, Le fichier n'est pas déjà ouvert par un autre utilisateur.
                IsFileOpen = False
            Case 70  'Gestion de l'erreur "autorisation refusée",Le fichier est déjà ouvert par un autre utilisateur
             IsFileOpen = True
            ' Autre type d'erreur
            Case Else
            Error errnum
        End Select
    End Function
    Encore merci pour vos lumieres

  4. #4
    Rédacteur
    Avatar de DarkVader
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2002
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 130
    Points : 3 118
    Points
    3 118
    Par défaut
    Il en manque une partie, par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub FichierExcel()
    Dim i As Integer
    On Error GoTo TraiteErreur
     
    10 '.../...
    20 ' etc.
     
    Exit Sub
    
    TraiteErreur:
        msgbox "Erreur " & ERR.Number & " at line " & ERL & vbcrlf & ERR.description
    End Sub
    Pour aller plus loin voir dans ma signature

  5. #5
    Membre régulier
    Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Mai 2008
    Messages : 137
    Points : 80
    Points
    80
    Par défaut
    Ok, encore merci Dark, je vais mettre en pratique cette remarque et j'en saurais un peu plus sur l'erreur rencontre

    Une derniere question, un doute me vient a propos des versions Excel et des noms de fichier associes. Le fait de nommer 'en dur' dans mon programme un fichier "toto.xls" n'est-il pas prejudiciable si j'utilise ce code sur un poste ayant un excel > 2003 ? (et donc des noms de fichiers se terminant par .xlsx)

  6. #6
    Membre régulier
    Profil pro
    Analyste programmeur
    Inscrit en
    Mai 2008
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Mai 2008
    Messages : 137
    Points : 80
    Points
    80
    Par défaut
    Une question importante que je me pose a propos d'utilisation de feuille excel en passant par un programme VB6.
    Lorsque j'ai mis en place la fonctionnalite, je me suis inspire du tres bon tuto de Sebastien Curutchet (sur ce meme site : http://drq.developpez.com/vb/tutoriels/Excel/) ou l'on doit d'abord declarer la reference a Microsoft Excel dans le menu 'projet' puis ensuite passer par les declarations :

    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
     
    'Déclaration des variables
    Dim appExcel As Excel.Application 'Application Excel
    Dim wbExcel As Excel.Workbook 'Classeur Excel
    Dim wsExcel As Excel.Worksheet 'Feuille Excel
     
    'Ouverture de l'application
    Set appExcel = CreateObject("Excel.Application")
    'Ajout d'un classeur car à l'ouverture d'Excel il n'y a aucun classeur d'ouvert
    appExcel.Workbooks.Add 'Ceci n'est nécessaire que si vous n'ouvrez pas un fichier existant
    'Récupération du classeur par défaut
    Set wbExcel = appExcel.ActiveWorkbook
    'Récupération de la feuille par défaut
    Set wsExcel = wbExcel.ActiveSheet
    etc.
    Pour ne pas rencontrer de probleme de 'compatibilite' entre versions excel, j'ai trouve sur d'autre site le conseil de NE PAS faire reference a Excel dans le projet (Excel9.olb par exemple) mais de passer par les declarations suivantes :

    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
     
    Private Sub Launch Excel()
        Dim oExcel As Object
        Dim oBook As Object
        Dim oSheet as Object
     
        On Error resume next
        Set oExcel = CreateObject("Excel.Application")
        if Err.Number <> 0 then
           msgbox "Could not automate MS Excel. MS Excel must be installed."
           Exit Sub
        End If
     
        oExcel.Visible = True
        Set oBook = oExcel.Workbooks.Add()
        Set oSheet = oBook.WorkSheets("Sheet1")
     
        ' Do stuff with oSheet.
        ...
     
        'Clean up objects
     
        Set oSheet = Nothing
        Set oBook = Nothing
        Set oExcel = Nothing
    End Sub
    Que pensez de la deuxieme solution ? cela m'obligerai a revoir beaucoup de code, mais si cela peut empecher certain dysfonctionnement du a des versions d'Excel differentes sur les postes utilisateurs, cela peut en valoir la chandelle ...

    Merci pour vos conseils et éclaircissements

Discussions similaires

  1. Transfert de projet Excel/VB vers Projet VB6
    Par blueloyl dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 10/10/2006, 16h01
  2. [VBA]ajout liste excell
    Par Cibou dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/01/2006, 17h23
  3. [NetBeans] Ajouter un fichier class dans un projet
    Par Ashgenesis dans le forum NetBeans
    Réponses: 14
    Dernier message: 16/12/2005, 00h25
  4. [VB.NEt] comment ajoute-t-on un datagrid à un projet ?
    Par callo dans le forum Windows Forms
    Réponses: 2
    Dernier message: 12/12/2005, 18h25
  5. [PDE] Comment ajouter un éditeur de texte à mon projet ?
    Par simsky dans le forum Eclipse Platform
    Réponses: 2
    Dernier message: 29/06/2005, 10h40

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