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 :

Erreur lors de l'Exécution d'une appli traitant un classeur Excel.


Sujet :

VB 6 et antérieur

  1. #1
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Erreur lors de l'Exécution d'une appli traitant un classeur Excel.
    Bonjour à tous, j'ai fait avec vb une petite appli qui doit m'ouvrir un classeur Excel précis avec des boutons représentants les différents onglets de ce meme classeur.
    Quand j'appui sur un boutton il doit m'ouvrir mon fichier et me renvoyer vers la feuille concernée. Mais je rencontre un probème : l'appli se lance mais des que j'appui sur un boutton il m'ouvre le classeur sans me renvoyer vers la feuille concernée. De plus, des que j'appui sur un autre boutton pour changer de feuilles, il me met une erreur d'execution "Indice Hors de la plage". Je ne vois pas où est le problème... Je suis un pur novice
    J'ai d'abord rajouter un module à mon projet contenant 3 variables, et dans mon forms j'ai fait une fonction me permettant de verifier si le fichier est deja ouvert au cas ou je souhaiterai voir une feuille, puis une autre,.. Quelqu'un pourrait m'aider et m'apporter une solution ? Merci bien !
    Voici le code :


    Module :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public appExcel As Excel.Application
    Public wbExcel As Excel.Workbook 'Classeur Excel
    Public wsExcel As Excel.Worksheet 'Feuille Excel
    Et dans mon Forms :


    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
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    Function VerifOuvertureClasseur(Fichier As String) As Boolean
    Dim x As Integer
    On Error Resume Next
    x = FreeFile()
    Open Fichier For Input Lock Read As #x
    Close x
    If Err.Number = 0 Then VerifOuvertureClasseur = False
    If Err.Number = 70 Then VerifOuvertureClasseur = True
    End Function
     
    Private Sub Command1_Click(Index As Integer)
     
    'Ouverture d'un fichier Excel
    If VerifOuvertureClasseur("S:\PROD-GAR\Revue de perf GAR\2010\TDB_liaison.xls") Then
    Set wsExcel = wbExcel.Worksheets(13)
    Else
    Set appExcel = CreateObject("Excel.Application")
    Set wbExcel = appExcel.Workbooks.Open("S:\PROD-GAR\Revue de perf GAR\2010\TDB_liaison.xls")
    appExcel.Visible = True
    'wsExcel correspond à la première feuille du fichier
    Set wsExcel = wbExcel.Worksheets(13)
    End If
    End Sub
     
    Private Sub Command2_Click(Index As Integer)
     
    'Ouverture d'un fichier Excel
    If VerifOuvertureClasseur("S:\PROD-GAR\Revue de perf GAR\2010\TDB_liaison.xls") Then
    Set wsExcel = wbExcel.Worksheets(12)
    Else
    Set appExcel = CreateObject("Excel.Application")
    Set wbExcel = appExcel.Workbooks.Open("S:\PROD-GAR\Revue de perf GAR\2010\TDB_liaison.xls")
    appExcel.Visible = True
    'wsExcel correspond à la première feuille du fichier
    Set wsExcel = wbExcel.Worksheets(12)
    End If
    End Sub
     
    Private Sub Command3_Click(Index As Integer)
     
    'Ouverture d'un fichier Excel
    If VerifOuvertureClasseur("S:\PROD-GAR\Revue de perf GAR\2010\TDB_liaison.xls") Then
    Set wsExcel = wbExcel.Worksheets(7)
    Else
    Set appExcel = CreateObject("Excel.Application")
    Set wbExcel = appExcel.Workbooks.Open("S:\PROD-GAR\Revue de perf GAR\2010\TDB_liaison.xls")
    appExcel.Visible = True
    'wsExcel correspond à la première feuille du fichier
    Set wsExcel = wbExcel.Worksheets(7)
    End If
    End Sub
     
    Private Sub Command4_Click(Index As Integer)
     
    'Ouverture d'un fichier Excel
    If VerifOuvertureClasseur("S:\PROD-GAR\Revue de perf GAR\2010\TDB_liaison.xls") Then
    Set wsExcel = wbExcel.Worksheets(9)
    Else
    Set appExcel = CreateObject("Excel.Application")
    Set wbExcel = appExcel.Workbooks.Open("S:\PROD-GAR\Revue de perf GAR\2010\TDB_liaison.xls")
    appExcel.Visible = True
    'wsExcel correspond à la première feuille du fichier
    Set wsExcel = wbExcel.Worksheets(9)
    End If
    End Sub
     
    Private Sub Fermer_Click()
    Workbooks("TDB_liaison.xls").Saved = True
     
    End Sub

  2. #2
    Membre expert
    Avatar de Delbeke
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2 675
    Détails du profil
    Informations personnelles :
    Âge : 70
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2 675
    Points : 3 696
    Points
    3 696
    Par défaut
    Je pense que tu devrais commencer par lire les tutoriels sur le pilotage d'office http://vb.developpez.com/cours/?page=automation#office
    En général, on ne demande de conseils que pour ne pas les suivre ou, si on les a suivis, reprocher à quelqu'un de les avoir donnés
    (ALEXANDRE DUMAS)

    N'hésitez pas à visiter ma page de contributions

  3. #3
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    pour afficher un onglet il faut l'activer :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Set wsExcel = wbExcel.Worksheets(12)
    wsExcel.Activate
    pour la deuxième erreur ton code est un peu long.. dis nous ou tu as l'erreur.

  4. #4
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Ce que j'aimerai faire c'est que mon code pour chaques bouttons verifie à chaque fois si le classeur est deja ouvert ou pas. Si il l'est, qu'il me renvoit à telle feuille, et si il ne l'est pas il m'ouvre mon classeur.
    Le code pour chaques boutons est le meme et il fait référence à une fonction (VerifOuvertureClasseur) censée vérifier si le classeur est ouvert. Mais j'ai l'impression que cela ne marche pas.


    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
     
    Function VerifOuvertureClasseur(Fichier As String) As Boolean
    Dim x As Integer
    On Error Resume Next
    x = FreeFile()
    Open Fichier For Input Lock Read As #x
    Close x
    If Err.Number = 0 Then VerifOuvertureClasseur = False
    If Err.Number = 70 Then VerifOuvertureClasseur = True
    End Function
     
    Private Sub Command1_Click(Index As Integer)
     
    'Ouverture d'un fichier Excel
    If VerifOuvertureClasseur("S:\PROD-GAR\Revue de perf GAR\2010\TDB_liaison.xls") = True Then
    Set wbExcel = appExcel.Workbooks("S:\PROD-GAR\Revue de perf GAR\2010\TDB_liaison.xls").Worksheets(13)
    Else
    Set appExcel = CreateObject("Excel.Application")
    Set wbExcel = appExcel.Workbooks.Open("S:\PROD-GAR\Revue de perf GAR\2010\TDB_liaison.xls")
    appExcel.Visible = True
    'wsExcel correspond à la première feuille du fichier
    Set wsExcel = wbExcel.Worksheets(13)
    wsExcel.Activate
    End If
    End Sub

  5. #5
    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
    GetObject serait tellement mieux que «VerifOuvertureClasseur»

  6. #6
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Re bonjour, comme ceci ? : en module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public appExcel As Excel.Application
    Public wbExcel As Excel.Workbook 'Classeur Excel
    Public wsExcel As Excel.Worksheet 'Feuille Excel
    Public MyXl As Object
    et ensuite dans le form :
    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
    Private Sub Command1_Click(Index As Integer)
     
    On Error Resume Next
    Set MyXl = GetObject("C:\Documents and Settings\Administrateur\Bureau\TDB_liaison.xls")
    If Err.Number <> 0 Then
    Application.DisplayAlerts = False
    Set appExcel = CreateObject("Excel.Application")
    Set wbExcel = appExcel.Workbooks.Open("C:\Documents and Settings\Administrateur\Bureau\TDB_liaison.xls")
    appExcel.Visible = True
    'wsExcel correspond à la première feuille du fichier
    Set wsExcel = wbExcel.Worksheets("Production hebdo")
    wsExcel.Activate
    Application.DisplayAlerts = True
    Else
    Set wsExcel = wbExcel.Worksheets("Production hebdo")
    wsExcel.Activate
    End If
    End Sub
    Le truc c'est que Excel n'est plus visible quand je clique sur le bouton... il est bien lancé mais pas visible. Je suis un peu perdut la... de l'aide svp!

  7. #7
    Expert éminent sénior


    Profil pro
    Inscrit en
    Juin 2003
    Messages
    14 008
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 14 008
    Points : 20 038
    Points
    20 038
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    On Error Resume Next
    Set MyXl = GetObject("C:\Documents and Settings\Administrateur\Bureau\TDB_liaison.xls")
    If Err.Number <> 0 Then
     
    ......
     
     
     
    On Error Goto 0
    Réactive le traitement d'erreur après ton test sur le Err.Number, avec On Erro Goto 0...



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.DisplayAlerts = False
    Application c'est l'objet application de VBA ... donc ici en VB6 tu ne peu avoir accès à ces méthodes qu'une fois cet objet créé..

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    appExcel.DisplayAlerts = False

  8. #8
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    J'ai rectifier comme tu me la dit (en rajoutant le On Error Goto 0 ainsi que le appExcel.Displayalert = False après la création de l'objet) et toujours pas de Excel visible! Simplement lancé comme je peux le voir dans le gestionnaire de taches..

  9. #9
    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 Luigi13 Voir le message
    Re bonjour, comme ceci ? : en module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Public appExcel As Excel.Application
    Public wbExcel As Excel.Workbook 'Classeur Excel
    Public wsExcel As Excel.Worksheet 'Feuille Excel
    Public MyXl As Object
    et ensuite dans le form :
    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
    Private Sub Command1_Click(Index As Integer)
    
    On Error Resume Next
    Set MyXl = GetObject("C:\Documents and Settings\Administrateur\Bureau\TDB_liaison.xls")
    If Err.Number <> 0 Then
    Application.DisplayAlerts = False
    Set appExcel = CreateObject("Excel.Application")
    Set wbExcel = appExcel.Workbooks.Open("C:\Documents and Settings\Administrateur\Bureau\TDB_liaison.xls")
    appExcel.Visible = True
    'wsExcel correspond à la première feuille du fichier
    Set wsExcel = wbExcel.Worksheets("Production hebdo")
    wsExcel.Activate
    Application.DisplayAlerts = True
    Else
    Set wsExcel = wbExcel.Worksheets("Production hebdo")
    wsExcel.Activate
    End If
    End Sub
    Le truc c'est que Excel n'est plus visible quand je clique sur le bouton... il est bien lancé mais pas visible. Je suis un peu perdut la... de l'aide svp!
    Ce n'est pas très cohérent

    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
        Dim f As String
        f = "C:\Documents and Settings\Administrateur\Bureau\TDB_liaison.xls"
     
        On Error Resume Next
     
        Set appExcel = GetObject(f)
        If Err.Number <> 0 Then    ' = &h80040111 ... ou typename(appExcel)="Nothing" then ...
            Set appExcel = CreateObject("Excel.Application")
        End If
     
        If TypeName(appExcel) <> "Nothing" Then
            Set wbExcel = appExcel.Workbooks.Open(f)
            Set wsExcel = wbExcel.Worksheets(1) '"Production hebdo")
            wsExcel.Activate
            appExcel.Visible = True
        End If

  10. #10
    Candidat au Club
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 3
    Points
    3
    Par défaut
    Merci à toi ca ma aider! tout marche maintenant!

  11. #11
    Modérateur
    Avatar de Overcrash
    Homme Profil pro
    Architecte Logiciel et responsable CRM (Salesforce)
    Inscrit en
    Mai 2008
    Messages
    1 254
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Architecte Logiciel et responsable CRM (Salesforce)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 254
    Points : 1 875
    Points
    1 875
    Par défaut


    Oublie pas le Tag Resolue


    Over
    ---
    Overcrash

    Je ne lis pas les codes qui ne sont pas indentés.
    Merci de les messages utiles en cliquant en bas à droite du message

    Bloqué par le firewall pour accéder au chat ? Essayez avec l'adresse en direct : http://87.98.168.209/

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 07/10/2009, 11h38
  2. [XL-2003] Erreur lors de l'exécution d'une procédure
    Par pacocnec dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 29/06/2009, 12h39
  3. Erreurs lors de l'exécution d'une procédure
    Par vanesa dans le forum PL/SQL
    Réponses: 2
    Dernier message: 05/01/2009, 17h48
  4. Erreur lors de l'exécution d'une requête avec ADOquery
    Par doolar dans le forum Bases de données
    Réponses: 2
    Dernier message: 03/05/2008, 13h26
  5. [PostgreSQL] [PostGreSQL] Obtention d'une erreur lors de l'exécution d'une requête
    Par cbombabill dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 06/03/2008, 11h56

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