Problème connection avec Excel avec vba Autocad une fois sur 2

Résolu
Gnain Messages postés 37 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 29 avril 2011 - 14 févr. 2010 à 19:50
Gnain Messages postés 37 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 29 avril 2011 - 15 févr. 2010 à 00:24
Bonjours,
Voici mon problème
à partir du vba Autocad je veut envoyé quelque variable dans une feuille excel.

J'utilise ce code

Sub ExtAttExcel()

'=====================
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")
'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("D:\@autocad programme\vba\@Programme _AutoCad\@Reference VBA\Panneaux\Optimisation.xls")
'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets(1)
'Pour etre visible
appExcel.Visible = True

...Code

PremiereCelluleVide = appExcel.Cells(Rows.Count, "A").End(xlUp).Row + 1
appExcel.Range("A" & PremiereCelluleVide) = RécupereNomPanneau

...Code

ActiveWorkbook.SaveAs FileName:= _
"D:\@autocad programme\vba\@Programme _AutoCad\@Reference VBA\Panneaux\test2.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False


appExcel.Quit
Set appExcel = Nothing
Set wbExcel = Nothing
Set wsExcel = Nothing

End Sub

Tout va bien la première que je start la macro
la 2e fois que je start la macro j'ai une erreur à la ligne de commande:

PremiereCelluleVide = appExcel.Cells(Rows.Count, "A").End(xlUp).Row + 1
appExcel.Range("A" & PremiereCelluleVide) = RécupereNomPanneau
Run-time error 1004
Method 'Rows' of object'_Global' failed

Si je réaissais une 3e fois c'est ok
une 4e erreur
une 5e ok....

Pouvez-vous m'aider svp

Merçi d'avance
Gnain!

10 réponses

Gnain Messages postés 37 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 29 avril 2011
15 févr. 2010 à 00:24
Bon j'ai trouver il sufisait de mettre
End
avant End Sub

.....
wbExcel.Close
AppExcel.Quit
Set AppExcel = Nothing
Set wbExcel = Nothing
Set wsExcel = Nothing

End

End Sub

Gnain!
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 févr. 2010 à 21:15
Bonjour,
dans :
PremiereCelluleVide = appExcel.Cells(Rows.Count, "A").End(xlUp).Row + 1 

appExcel n'est certes pas une feuille.
Et la propriété Rows ne s'applique pas à un classeur, mais à une feuille...
(Je suis même étonné de ce que tu n'aies pas de problème dès la 1ère utilisation de ta mlacro...)

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Gnain Messages postés 37 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 29 avril 2011
14 févr. 2010 à 21:23
J'ai remplacer
PremiereCelluleVide = appExcel.Cells(Rows.Count, "A").....
par
PremiereCelluleVide = wbExcel.Worksheets(1).(Rows.Count, "A").....

C'est toujours pareil,
ca ne fonctionne qu'une fois sur 2


Gnain!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 févr. 2010 à 21:25
Ah...
et à quoi te sert-il donc d'avoir défini :
Set wsExcel = wbExcel.Worksheets(1)
??


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0

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

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 févr. 2010 à 21:27
Et kif-kif pour le reste, hein... par exemple ici :
appExcel.Range("A" & PremiereCelluleVide) = RécupereNomPanneau


____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Gnain Messages postés 37 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 29 avril 2011
14 févr. 2010 à 21:28
J'ai remarqué qu'après une première utilisation
Excel se ferme correctement mais reste dans le
gestionnaire des tache???
suite a une 2e utilisation l'erreur survient
et il n<est plus dans le gestionnaire des tache
donc pour une 3e utilisation ca fonctionne???

Gnain!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 févr. 2010 à 21:33
Ferme donc ton classeur ouvert, avant même de quitter Excel !

wbExcel.close
appexcel.quit
... et tes nothing ...
En plus de ce que je t'ai déjà signalé, bien sûr !

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Gnain Messages postés 37 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 29 avril 2011
14 févr. 2010 à 21:37
En changant

PremiereCelluleVide = wbExcel.Worksheets(1).Cells(Rows.Count, "A").End(xlUp).Row + 1
wbExcel.Worksheets(1).Range("A" & PremiereCelluleVide) = RécupereNomPanneau

et en ajoutant a la fin du sub

wbExcel.Close
appExcel.Quit
Set appExcel = Nothing
Set wbExcel = Nothing
Set wsExcel = Nothing

End Sub
Toujours pareil?
Gnain!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
14 févr. 2010 à 22:20
Tu lis manifestement en diagonale, toi ...
Tu as déjà défini ton objet feuille ! (c'est wsExcel)
en conséquence, tu devrais écrire ;
PremiereCelluleVide = wsExcel.Cells(Rows.Count, "A").End(xlUp).Row + 1
wsExcel.Range("A" & PremiereCelluleVide) = RécupereNomPanneau 

...
sans préjudice du reste ...

____________________
Vous aimez Codes-Sources ? Il vous aide ? Cliquez ici pour l'aider à continuer
Cliquer sur "Réponse acceptée" en bas d'une solution adéquate est
0
Gnain Messages postés 37 Date d'inscription vendredi 9 juin 2006 Statut Membre Dernière intervention 29 avril 2011
14 févr. 2010 à 22:51
Merçi de t'intéresser a mon problème
mais ca ne fonctionne toujours pas
voici mon code abrégé
essaie le avec vba word si tu na pas Autocad

Sub ExtAttExcel2()
Dim AppExcel As Excel.Application 'Application Excel
Dim wbExcel As Excel.Workbook 'Classeur Excel
Dim wsExcel As Excel.Worksheet 'Feuille Excel


chemin = "C:\Documents and Settings\Sylvain Plante\Bureau\test.xls"
Set AppExcel = CreateObject("Excel.Application")
Set wbExcel = AppExcel.Workbooks.Open(chemin)
'wsExcel correspond à la première feuille du fichier
Set wsExcel = wbExcel.Worksheets(1)
'Pour etre visible
AppExcel.Visible = True

PremiereCelluleVide = wsExcel.Cells(Rows.Count, "A").End(xlUp).Row + 1
wsExcel.Range("A" & PremiereCelluleVide) = "test"

'++++++++++++++++++++ SAVE FICHIER DANS BON DOSSIER ++++++++++++++++++++++++++++++++++
ActiveWorkbook.SaveAs FileName:= _
"C:\Documents and Settings\Sylvain Plante\Bureau\test2.xls", FileFormat:= _
xlNormal, Password:="", WriteResPassword:="", ReadOnlyRecommended:=False _
, CreateBackup:=False
'+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


wbExcel.Close
AppExcel.Quit
Set AppExcel = Nothing
Set wbExcel = Nothing
Set wsExcel = Nothing

End Sub

Gnain!
0
Rejoignez-nous