Modifier un tableau Excel avec un contrôle Active X

Rico 95 Messages postés 18 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 21 mai 2008 - 5 sept. 2007 à 19:09
cs_etniqs Messages postés 201 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 10 mai 2016 - 7 sept. 2007 à 18:17
Bonjour à tous,

J'ai créé un contrôle Active X en vue de modifier un tableau Excel en tâche de fond de manière périodique mais malheureusement celui ci fonctionne partiellement à l'éxécution le message d'erreur suivant apparaît:

"Erreur d'éxécution 9
Indice en dehors de la page"

J'explique:

J'ai créé un projet contrôle Active X.

Dans un "Form" j'ai inséré un Timer avec un interval de 30000 ms et avec le code suivant

Private Sub Timer1_Timer()



MsgBox ("Une demi-minute ecoulée")
Ecriture ("A")


End Sub

Dans un "module" j'ai écrit le code suivant:

Public Function Ecriture(Valeur As Variant)


'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")


'Inscription de la valeur dans le classeur
      
    appExcel.Workbooks("Lancement d un EXE par VBA_2.XLS").Worksheets("Feuil1").Cells(1, 1) = "B"


End Function

Je crée le controle Projet1.ocx et je l'inscrit dans le registre avec Regsvr32 du Windows: inscription OK

Je nome une feuille Excel avec le nom "Lancement d un EXE par VBA_2.XLS" j'ouvre le VBA, j'y met un userform puis j'y ajoute mon contrôle que j'ai créé: OK

J'ouvre ma feuille Excel:

Le contrôle Active X s'éxécute car au boutde 30s j'ai le message de mon Timer "Une demi-minute ecoulée" mais juste après j'ai ce fameux message d'erreur cité tout au dessus.

Je ne comprend pas comment je peut avoir ce message alors que mon classeur Excel est ouvert et que la feuille existe !!!

Merci d'avance à celui ou celle qui pourra éclairer ma lanterne

Rico

5 réponses

cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
6 sept. 2007 à 00:44
Je vois 3 choses:

premièrement, tu déclares une variable Valeur qui n'est pas utilisée
deuxièmement, tu utilises une Function qui ne retourne rien, donc une Sub pourrait suffire
troisièmement, tu ne mets pas le chemin complet du Workbook, mais seulement son nom.

MPi
0
cs_etniqs Messages postés 201 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 10 mai 2016
6 sept. 2007 à 15:36
donc : tu plantes à l'ouverture du fichier
0
Rico 95 Messages postés 18 Date d'inscription mardi 13 mars 2007 Statut Membre Dernière intervention 21 mai 2008
6 sept. 2007 à 21:13
J'ai corrigé ces 3 choses

Pour le module:

Public Sub Ecriture()


'Déclaration des variables
    Dim appExcel As Excel.Application 'Application Excel
   


'Ouverture de l'application
    Set appExcel = CreateObject("Excel.Application")


'Inscription de la valeur dans le classeur
     
    appExcel.Workbooks("C:\Documents and Settings\Administrateur\Mes documents\VB6 - VBA\Taux de remplissage\Essai Timer ameliore en Active X\Test.xls").Worksheets("Feuil1").Cells(1, 1) = "B"
   
End Sub

Et pour le Timer:

Option Explicit


Private Sub Timer1_Timer()


MsgBox ("Une demi-minute écoulée")


Ecriture

End Sub

Et j'ai toujours le même message d'erreur

Visiblement le problème n'est pas là

Peux tu m'éclairer d'avantage ?

 Rico
0
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 23
7 sept. 2007 à 11:20
Essaie en ouvrant le classeur avant d'y inscrire des données.
Il n'est pas nécessaire qu'il soit visible, mais je pense qu'il doit obligatoirement être ouvert (?)

MPi
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_etniqs Messages postés 201 Date d'inscription mardi 7 octobre 2003 Statut Membre Dernière intervention 10 mai 2016
7 sept. 2007 à 18:17
yep, ok avec ça,

tu devrais tout décomposer avec gestion d'erreur :

on error goto fin :

sub ecriture
   ....
   top = 1
   appExcel.open ""
   top = top +1
   top = top +1
   appExcel.Worksheets("").activate
   top = top +1
   activesheet.range("a1).value = "B"  ' voir si c'est pas le cells qui plante
   exit sub
fin :
   msgbox "erreur avant ligne : " & top
   err.clear
end sub
de plus tu colles une fonction d'erreur

coïto ergo sum
0
Rejoignez-nous