Problème connection avec Excel avec vba Autocad une fois sur 2 [Résolu]

Signaler
Messages postés
37
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
29 avril 2011
-
Messages postés
37
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
29 avril 2011
-
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

Messages postés
37
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
29 avril 2011

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!
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
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
Messages postés
37
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
29 avril 2011

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!
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
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
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
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
Messages postés
37
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
29 avril 2011

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!
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
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
Messages postés
37
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
29 avril 2011

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!
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
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
Messages postés
37
Date d'inscription
vendredi 9 juin 2006
Statut
Membre
Dernière intervention
29 avril 2011

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!