Création d'un fichier texte par le réseau

cs_bob87 Messages postés 3 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 25 juin 2005 - 24 juin 2005 à 18:20
cs_bob87 Messages postés 3 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 25 juin 2005 - 25 juin 2005 à 18:36
Bonjour,

j'ai fais une macro VBA qui me permet de récupérer certaines valeurs pour les enregistrer dans un fichier texte.
La macro commence dabord par créer un fichier texte vierge et ensuite enregistre les valeurs les unes après les autres, et finit enfin par refermer le fichier texte.

Le soucis que je rencontre concerne la création du fichier texte vierge. En effet, lorsque je veux créer un fichier en local, aucun problème ne se pose, tout fonctionne bien. Mais lorsque je veux que le fichier soit crée sur un ordinateur distant, une erreur apparait.
ca me dit que le chemin ou le nom de fichier est incorrect.
j'ai l'impression que VBA ne comprend pas qu'il s'agit d'une adresse réseau.
voici une partie de ma macro :

nom2 = nom & ".txt" 'permet d'avoir l'extension txt
nom3 = "C:/OSCAR/GS4/RCP/" & nom2 'donne le chemin complet ou le fichier doit etre crée

Set fs = CreateObject("Scripting.FileSystemObject")
Set a = fs.CreateTextFile(nom3, True)

si je laisse le chemin local dans la variable "nom3" : aucun probleme

si je met "//10.142.32.63/DataRcp/" & nom2 dans "nom3" : ca bloque à la ligne : "Set a = fs.CreateTextFile(nom3, True)" en me disant chemin ou nom de fichier incorrect.

Y a t'il une syntaxe particulière pour rentrer une adresse réseau. Faut-il une fonction spéciale. J'ai pourtant essayé plein de méthoque sans aucun succès !

Pouvez vous m'aider SVP ?
Merci d'avance

4 réponses

cs_Stephane Messages postés 550 Date d'inscription vendredi 5 janvier 2001 Statut Membre Dernière intervention 23 septembre 2006
25 juin 2005 à 09:41
slu

essaye des slash au lieu des anti slash, sinon je sais pas


A+



<hr size="2" width="100%">Utilisateurs du forum : Merci de lire http://www.vbfrance.com/forum.v2.aspx?ID=445871

<hr size="2" width="100%">
0
cs_bob87 Messages postés 3 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 25 juin 2005
25 juin 2005 à 11:46
j'ai essayé de mettre des slash au lieu des anti slash et le résultat est le même, toujours la même erreur.

merci quand même
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
25 juin 2005 à 12:46
Avec FileSystemObject (comme avec plein d'autre), je crois qu'il n'est pas possible de travailler avec des adresses réseau. Il faut d'abord, leur allouer une lettre logique à condition que ces ressources soient partagées.
Ainsi, à la place de
[file://10.142.32.63/DataRcp/ \\10.142.32.63\DataRcp\
] tu mettras "z:" par exemple.

Pour faire ça, il faut utiliser les API's WNetAddConnection2 et WNetCancelConnection2.

Un exemple venant de
http://www.mentalis.org/apilist/WNetAddConnection2.shtml

et que j'ai francisé, à mettre dans un module :

Option Explicit


'***************************************************************************

' POUR CONNECTER LA RESSOURCE RESEAU
'If AddConnection(RemoteName, UserName, UserPwd, LocalName) Then
' c'est bon
'Else
' c'est pas bon
'End If

' POUR DECONNECTER LA RESSOURCE RESEAU
'CancelConnection "LocalName"

' Avec RemoteName = "\\nom ou ip de la machine\dossier partagé"
' Avec UserName = "" ou "Invité" ou "Anonymous" ou le nom d'utilisateur défini pour le partage
' Avec UserPwd = TonPassword (défini pour le partage)
' Avec LocalName = "Z:" par ex


'***************************************************************************


' Constantes d'erreur
Private Const NO_ERROR As Long = 0 ' The function was successful
Private Const ERROR_BAD_USERNAME As Long = 2202& ' Mauvais nom d'utilisateur
Private Const ERROR_INVALID_PASSWORD As Long = 86& ' The password was invalid.
Private Const ERROR_ALREADY_ASSIGNED As Long = 85& ' LocalName déjà assigné
Private Const ERROR_BAD_DEVICE As Long = 1200& ' LocalName invalide
Private Const ERROR_BAD_NET_NAME As Long = 67& ' RemoteName invalide ou introuvable


' Constantes de Type de ressource
Private Const RESOURCETYPE_DISK = &H1


'
Private Type NETRESOURCE
dwScope As Long
dwType As Long
dwDisplayType As Long
dwUsage As Long
lpLocalName As String
lpRemoteName As String
lpComment As String
lpProvider As String
End Type


' Fonctions API
Private Declare Function WNetAddConnection2 _
Lib "mpr.dll" Alias "WNetAddConnection2A" _
( _
lpNetResource As NETRESOURCE, _
ByVal lpPassword As String, _
ByVal lpUserName As String, _
ByVal dwFlags As Long _
) As Long

Private Declare Function WNetCancelConnection2 _
Lib "mpr.dll" Alias "WNetCancelConnection2A" _
( _
ByVal lpName As String, _
ByVal dwFlags As Long, _
ByVal fForce As Long _
) As Long


Function AddConnection(RemoteName As String, UserName As String, UserPwd As String, LocalName As String) As Boolean
Dim Retour As Long
Dim SharedResource As NETRESOURCE


SharedResource.lpRemoteName = RemoteName
SharedResource.lpLocalName = LocalName
SharedResource.dwType = RESOURCETYPE_DISK


' Tentative de connexion à la ressource partagée
Retour = WNetAddConnection2(SharedResource, UserPwd, UserName, 0)

Select Case Retour
Case NO_ERROR ' Ca se passe bien
AddConnection = True
Case ERROR_BAD_USERNAME
'MsgBox "Mauvais nom d'utilisateur"
AddConnection = False
Case ERROR_INVALID_PASSWORD
'MsgBox "Password invalide"
AddConnection = False
Case ERROR_ALREADY_ASSIGNED
'MsgBox "LocalName déjà assigné"
AddConnection = False
Case ERROR_BAD_DEVICE
'MsgBox "LocalName invalide"
AddConnection = False
Case ERROR_BAD_NET_NAME
'MsgBox "RemoteName invalide ou introuvable"
AddConnection = False
Case Else
'MsgBox "Erreur n° " & Retour & " non gérée par l'appli."
AddConnection = False
End Select

End Function


Function CancelConnection(LocalName As String)
Dim Retour As Long


' Pour fermer la connexion
Retour = WNetCancelConnection2(LocalName, 0, 0)

End Function

-------------------------------------------------
Dresseur de puces, .... normal pour un loup !?
0
cs_bob87 Messages postés 3 Date d'inscription mercredi 9 mars 2005 Statut Membre Dernière intervention 25 juin 2005
25 juin 2005 à 18:36
Merci beaucoup pour cette solution
le problème c'est que je suis débutant et que je ne sais pas trop comment faire pour intéger ce code au mien.
est ce que je dois mettre tous ce code dans ma macro ?
a quoi correspond la partie encadrée par des *** ?
0
Rejoignez-nous