Erreur d'exécution 462 - Le serveur distant n'existe pas ou n'est pas dispo
Hello le forum,
Je sèche complètement, après des heures de recherche et de tentative rien n'y fait, voici mon problème :
Contexte
Depuis Outlook, j'exécute une macro qui ouvre le dernier fichier télécharger (que je télécharge au préalable depuis mon ERP), je créer un nouvel Excel, j'insert mes données et j'enregistre le nouveau au format .CSV
Problème
Lors du premier passage de la macro, aucun soucis, tout ce passe correctement. Mais dès la deuxième utilisation, j'ai l'erreur 462.
J'ai remarqué que un processus EXCEL.EXE restait actif, j'ai donc penser que c'était ça mon problème.
Je me suis donc orentié sur le fait de tuer le processus.
Mais j'ai malheureusement encore l'erreur.
L'erreur survient toujours à la même ligne, et s'agit simplement d'une boucle sur toutes les lignes.For x = 2 To wbDownloaded.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
Mais d'après mes recherches, cette erreur survient lorsqu'on intervient sur le fichier.
Peut-être que je ne quitte pas correctement mes instances d'Excel...
Ci-dessous vous trouverez mon code, si quelqu'un connais le réel problème ou à une solution je suis preneur 😬
Merci d'avance,
Kilian
Sub CSV_Edit()
'Déclaration des variables
Dim appExcel As Excel.Application 'Application Excel
Dim wbDownloaded As Excel.Workbook, wbDHLFile As Excel.Workbook 'Classeur Excel
Dim wsDownloaded As Excel.Worksheet 'Feuille Excel
Dim sDHLFile$, sPath$, sDownloadedFile$ 'Lien
Dim InBox$, sCI$, sCopyPath$, sDescrArt$, ArtNumber$, CUR$ ' Texte
Dim Valeur#, ArtQty! ' Divers (Single et Double)
Dim MyData As New DataObject
'On Error GoTo Error
InBox = InputBox("Etes-vous sur d'avoir extrait la CI de ProConcept ?" & Chr(10) & Chr(10) & "Si oui, merci d'indiquer le numéro de CI", "Numéro de CI.", "")
If InBox = "" Then
MsgBox "Merci de renseigner un numéro de CI", vbOKOnly
Exit Sub
Else
sCI = InBox
End If
' Chemin et nom du dernier fichier .xlsx télécharger
sDownloadedFile = LastFileNameOfDirectory("C:\Users\MyName\Downloads\", "xlsx")
'Chemin du fichier
sPath = "MyPath"
'Nom du fichier
sDHLFile = sPath & sCI & ".csv"
'Ouverture de l'application
Set appExcel = CreateObject("Excel.Application")
appExcel.Visible = False
'Ouverture d'un fichier Excel
Set wbDownloaded = appExcel.Workbooks.Open(sDownloadedFile, 0, 0)
Set wbDHLFile = appExcel.Workbooks.Add
With wbDHLFile ' Dans le fichier DHL (CSV)
For x = 2 To wbDownloaded.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
For n = 1 To 41 ' Boucle sur 41 colonnes
Select Case wbDownloaded.Sheets(1).Cells(1, n) ' En-tête
Case "Net value incl. tax", "Valeur nette ttc"
Valeur = wbDownloaded.Sheets(1).Cells(x, n) ' Valeur de l'article net ttc
Case "Short description", "Description courte"
sDescrArt = Replace(wbDownloaded.Sheets(1).Cells(x, n), ",", " ") ' Description de l'article
sDescrArt = RemoveSpecial(sDescrArt)
Case "CUR"
CUR = wbDownloaded.Sheets(1).Cells(x, n)
Case "Main reference", "Référence principale"
ArtNumber = wbDownloaded.Sheets(1).Cells(x, n)
Case "Quantity", "Quantité"
ArtQty = wbDownloaded.Sheets(1).Cells(x, n)
End Select
Next
.Sheets(1).Cells(x - 1, 1) = 1
.Sheets(1).Cells(x - 1, 2) = "INV_ITEM"
.Sheets(1).Cells(x - 1, 3) = sDescrArt
.Sheets(1).Cells(x - 1, 4) = "8466.9430"
.Sheets(1).Cells(x - 1, 5) = ArtQty ' Quantité article
.Sheets(1).Cells(x - 1, 6) = "EA"
.Sheets(1).Cells(x - 1, 7) = Valeur / ArtQty ' Valeur par article
.Sheets(1).Cells(x - 1, 8) = CUR ' Devise
.Sheets(1).Cells(x - 1, 9) = "0.1"
.Sheets(1).Cells(x - 1, 10) = ""
.Sheets(1).Cells(x - 1, 11) = "CH"
.Sheets(1).Cells(x - 1, 12) = "SON"
.Sheets(1).Cells(x - 1, 13) = ArtNumber ' N° Article
.Sheets(1).Cells(x - 1, 14) = ""
Next
.SaveAs FileName:=sDHLFile, FileFormat:=xlCSV, CreateBackup:=False
.Saved = True
.Close
wbDownloaded.Close
End With
Set wbDownloaded = Nothing
Set wbDHLFile = Nothing
appExcel.Quit
Set appExcel = Nothing
KillProcess (RecupPid)
sCopyPath = InputBox("Le fichier est prêt et disponible à l'adresse : ", "Création CSV réussi", sDHLFile)
Exit Sub
Error:
MsgBox Err.Number & " - " & Err.Description, vbOKOnly + vbInformation, "Error " & Err.Number ' Affichage de l'erreur
End Sub
Bonsoir Kilian1906
Quelle est cette volonté de ne pas vouloir passer par des variables
Pour Commencer, déclarer une variable de type long
Dim dLig As long
Ensuite
...
dLig = wbDownloaded.Sheets(1).Range("A" & Rows.Count).End(xlUp).Row
For x = 2 To dLig
....
Ensuite pourquoi créer une autre instance d'Excel !?
A+
Hello BrunoM45,
De BrunoM45 :
Quelle est cette volonté de ne pas vouloir passer par des variables
Il s'agit d'une habitude, mais effectivement je peux passer par une variable.
C'est chose faite maintenant, mais évidement ça ne change rien à l'erreur.
De BrunoM45 :
Ensuite pourquoi créer une autre instance d'Excel !?
L'ouverture d'application depuis une autre est nouveau pour moi et ce n'est pas un concept qui m'est bien familié.
Mais j'imagine que lorsque tu dis plusieurs instances, tu parles de :
'Ouverture d'un fichier Excel
Set wbDownloaded = appExcel.Workbooks.Open(sDownloadedFile, 0, 0)
Set wbDHLFile = appExcel.Workbooks.Add
Comment faire pour n'ouvrir qu'une seule instance et pouvoir insérer les informations dont j'ai besoin dans un autre classeur ?
Merci, A+
Kilian
Hello,
Suite à ta réponse, j'ai un peu chercher et cela ma parru évident maintenant...
Effectivement ouvrant un classeur et en créant un nouveau classeur, j'utilisais deux fois deux instances de appExcel...
En résumer, en replaçant :
'Ouverture d'un fichier Excel
Set wbDownloaded = appExcel.Workbooks.Open(sDownloadedFile, 0, 0)
Set wbDHLFile = appExcel.Workbooks.Add
Par :
'Ouverture d'un fichier Excel
Set wbDownloaded = appExcel.Workbooks.Open(sDownloadedFile, 0, 0)
Set wbDHLFile = Workbooks.Add
Je n'ai plus aucun problème...
Si ceci peux aider d'autres personnes un cas similaire.
Merci, A+
Kilian
Salut Kilian1906
Quand je parle de créer une nouvelle instance, c'est ça
'Ouverture de l'application
Set appExcel = CreateObject("Excel.Application")
🤔
Hello,
Pourquoi ne pas la créer ?
Je lance Excel depuis Outlook, ne suis-je donc pas obliger de devoir créer l'instance d'Excel ?
Merci, A+
Kilian
Re,
Désolé, j'ai loupé l'épisode
Contexte
Depuis Outlook, j'exécute une macro qui ouvre le dernier fichier télécharger
Donc, si c'est logique... Ok