Erreur 462 sous vb6 - Excel

Signaler
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,
Je suis nouveau en prog et j'aimerais créer une appli sous vb6 qui gère un stock de plaquettes d'outil.
Pour se faire, je veux passer par un classeur excel où une feuille correspondrait à une marque de plaquette et où chaque plaquette aurait une ligne.
Le bouton qui m'embête est celui qui me crée une nouvelle marque (dans une listbox et donc une nouvelle feuille dans mon classeur excel)
Le bouton marche une fois mais à la deuxième, il m'indique une "erreur 462: le serveur distant n'existe pas"
Je soupçonne l'ouverture ou la fermeture d'Excel mais je n'arrive pas à trouver la solution...



Je joins le code de mon bouton :


Private Sub Command2_Click()
reponse = InputBox("Tapez le nom de la marque à créer:", "Nouvelle marque")
List1.AddItem reponse

If reponse <> "" Then
'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")
'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("C:\")
'Creation d'une nouvelle feuille excel
Set wsExcel = Sheets.Add
ActiveSheet.Name = reponse

' Sauvegarde sans demander confirmation excel
If ActiveWorkbook.ReadOnly Then
wbExcel.Saved = True
Else
wbExcel.Save
End If

wbExcel.Close 'Fermeture du classeur Excel
appExcel.Quit 'Fermeture de l'application Excel
Dim RetVal As Variant
RetVal = Shell("Taskkill /im Excel.exe /f", 0) '"tue" le process excel

'Désallocation mémoire
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing

End If
End Sub



Merci d'avance

9 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Bonjour,
1) Je déplace ta discussion vers VB6, qui n'est pas VB.Net (la présente section du forum)
Prends-en s'il te plait bonne note pour tes prochaines discussions VB6 ('c'est important)
2) je te serais reconnaissant de bien vouloir montrer ton vrai code (par copier/coller). Celui que tu montres n'est pas dans ce cas (la ligne Set wbExcel = appExcel.Workbooks.Open("C:\") déclencherait une erreur 1004 !)
3) présente ton code entre balises code (4ème icône dans la barre où tu réponds).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
Bonjour,
Pas de problème, je ferais gaffe à tout ça la prochaine fois...
Sinon, vous n'avez pas d'idées d'elements qui pourrait m'aider à résoudre mon problème ?
Cordialement
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
Commence s'il te plait par faire ce que je t'ai demandé (ton VRAI code et entre balises codes)
Je ne verrai qu'ensuite, hein ...
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
C'est mieux comme ça ?
Private Sub Command2_Click() 
reponse = InputBox("Tapez le nom de la marque à créer:", "Nouvelle marque")
List1.AddItem reponse
If reponse <> "" Then
'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")
'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("C:\Documents and Settings\Appli gestion plaquettes\PLAQUETTE.xls")
'Creation d'une nouvelle feuille excel
Set wsExcel = Sheets.Add
ActiveSheet.Name = reponse
' Sauvegarde sans demander confirmation excel
If ActiveWorkbook.ReadOnly Then
wbExcel.Saved = True
Else
wbExcel.Save
End If
wbExcel.Close 'Fermeture du classeur Excel
appExcel.Quit 'Fermeture de l'application Excel
Dim RetVal As Variant
RetVal = Shell("Taskkill /im Excel.exe /f", 0) '"tue" le process excel
'Désallocation mémoire
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing
End If
End Sub

Cordialement
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
C'est moins mal.
Ce ne sera bien que lorsque ton code sera indenté pour être lisible sans torticolis.
Et maintenant ?
Private Sub Command2_Click() 
reponse = InputBox("Tapez le nom de la marque à créer:", "Nouvelle marque")
List1.AddItem reponse
If reponse <> "" Then
'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")
'Ouverture d'un fichier Excel
Set wbExcel = appExcel.Workbooks.Open("C:\Documents and Settings\Appli gestion plaquettes\PLAQUETTE.xls")
'Creation d'une nouvelle feuille excel
Set wsExcel = Sheets.Add
ActiveSheet.Name = reponse
' Sauvegarde sans demander confirmation excel
If ActiveWorkbook.ReadOnly Then
wbExcel.Saved = True
Else
wbExcel.Save
End If
wbExcel.Close 'Fermeture du classeur Excel
appExcel.Quit 'Fermeture de l'application Excel
Dim RetVal As Variant
RetVal = Shell("Taskkill /im Excel.exe /f", 0) '"tue" le process excel
'Désallocation mémoire
Set wsExcel = Nothing
Set wbExcel = Nothing
Set appExcel = Nothing
End If
End Sub

Cordialement
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
1) Déjà :
La commande "Taskkill /im Excel.exe /f", 0
ne fonctionnerait pas sur toutes les plateformes !
Ne fonctionnerait par exemple pas avec XP Home !
2) je ne comprends pas pourquoi tu cherches à "tuer" toutes les instances de Excel ! contente-toi de quitter celle que tu as créée.
3) CreateObject n'est à utiliser qu'en l'absence dune instance de Excel déjà en cours. Si une instance existe déjà, il te faut t'en servir (intéresse-toi donc à la fonction GetObject, à lire dans ton aide VB6 où elle est accompagnée d'un exemple d'utilisation.
1) l'appli ne seras pas utilisée sur du xp home... Ce n'est donc pas un problème j'imagine
2) Si je la tue à chaque fois c'est parce qu'elle reste en tant que process à la fin de l'utilisation du bouton et donc entraine un beug à la reutilisation... (j'imagine que ce problème est lié à createobject réutilisé aussi.)
3)Je n'ai pas l'aide vb6... C'est là le problème: j'essaie de tout faire avec pour seule aide le net.
Messages postés
30277
Date d'inscription
mercredi 22 octobre 2003
Statut
Modérateur
Dernière intervention
23 novembre 2020
338
Cela pourra surement t'aider :
http://support.microsoft.com/kb/319832
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
232
"3)Je n'ai pas l'aide vb6... C'est là le problème: j'essaie de tout faire avec pour seule aide le net."
On ne peut raisonnablement développer sans cette aide.
Installe-là donc sans plus attendre.
Si ton appli VB6.exe est "tombée du camion", tu trouveras de quoi l'installer à l'aide de Google (mots clefs : télécharger MSDN VB6)
Important et à faire sans attendre (lus donc ma signature=.
Un forum n'est pas un substitut à l'aide. C'est un complément à cette aide, lorsqu'une difficulté subsiste après sa lecture.