Modifier un tableau Excel avec un contrôle Active X
Rico 95
Messages postés18Date d'inscriptionmardi 13 mars 2007StatutMembreDernière intervention21 mai 2008
-
5 sept. 2007 à 19:09
cs_etniqs
Messages postés201Date d'inscriptionmardi 7 octobre 2003StatutMembreDernière intervention10 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
A voir également:
Modifier un tableau Excel avec un contrôle Active X
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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.
Rico 95
Messages postés18Date d'inscriptionmardi 13 mars 2007StatutMembreDernière intervention21 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"
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 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
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_etniqs
Messages postés201Date d'inscriptionmardi 7 octobre 2003StatutMembreDernière intervention10 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