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

Rechercher des sujets similaires à "erreur execution 462 serveur distant existe pas dispo"