Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Lancer Macro sous un autre poste

7 réponses
Avatar
Emcy
Salut,

J'ai fait une macro qui ajoute/supprime des fichiers et=20
des repertoires. J'ai install=E9 le classeur contenant la=20
macro sur un PC. Lorsque je lance la macro =E0 partir d'un=20
autre PC qui a acc=E8s en lecture/ecriture au PC cointenant=20
le classeur, la macro p)lante. Quelqu'un a-t-il une=20
solution

7 réponses

Avatar
Chris Michel
Bonjour,

Pas de réponse toute faite:

a priori, il doit y avoir dans le code de ta macro des
références à des fichiers/dossiers existant sur un
ordinateur et pas sur l'autre, ce qui donne des chemins
non valides. Il faut que tu repères ces chemins et que tu
les élimines. Je peux pas te dire beaucoup mieux.


-----Message d'origine-----
Salut,

J'ai fait une macro qui ajoute/supprime des fichiers et
des repertoires. J'ai installé le classeur contenant la
macro sur un PC. Lorsque je lance la macro à partir d'un
autre PC qui a accès en lecture/ecriture au PC cointenant
le classeur, la macro p)lante. Quelqu'un a-t-il une
solution
.



Avatar
H.B.
C'est confus et vague à la fois... Comment les chemins sont-ils exprimés ?

Les chemins sont pris en compte par rapport la machine où est stocké le
fichier qui exécute les actes me semble-t-il
Le pb vient peut-être de là.
Dans un réseau , mieux vaut se limiter aux chemins de type LecteurRéseau...
ou bien ServeurXXXetc...
sinon beaucoup de pb pénibles peuvent surgir...

H.B.
Avatar
Emcy
Voila un exemple simplifié que j'ai fait :

Sub AjoutProfile()

Dim i As Integer
Dim Formule1, Formule2 As String
Dim FeuilTravail As Worksheet
Dim Ligne2 As Integer
Dim NomFichier As String
Dim NomDossier As String

MatriculeProfile = "essai"

NomDossier = ActiveWorkbook.Path
ChDir NomDossier
MkDir MatriculeProfile

NomFichier = NomDossier + "" + MatriculeProfile
+ "" + MatriculeProfile + ".xls"

ActiveWorkbook.SaveAs Filename:=NomFichier,
FileFormat:=xlNormal _
, Password:="", WriteResPassword:="",
ReadOnlyRecommended:úlse, _
CreateBackup:úlse
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save

End Sub

'Message d'erreur à la ligne "MkDir MatriculeProfile" =>
erreur d'accès chemin/fichier
'Remarque : la variable NomDossier pointe bien vers le
dossier de l'ordinateur réseau.

je suis obligé de résonner en relatif pour pouvoir
déplacer le dossier facilement.

tu as une solution ?


-----Message d'origine-----


C'est confus et vague à la fois... Comment les chemins
sont-ils exprimés ?


Les chemins sont pris en compte par rapport la machine
où est stocké le

fichier qui exécute les actes me semble-t-il
Le pb vient peut-être de là.
Dans un réseau , mieux vaut se limiter aux chemins de
type LecteurRéseau...

ou bien ServeurXXXetc...
sinon beaucoup de pb pénibles peuvent surgir...

H.B.



.



Avatar
Chris Michel
A vue de nez, je ne vois pas l'erreur, mais je ne connais
pas grand chose en réseau et chemins d'accès. Je suppose
que tu as jeté un coup d'oeil à la tête de tes variables
au moment du crash (est-ce que NomFichier ressemble à ce
qu'il doit?).

Est-ce que tu as demandé aux services infos de ta boite si
cela pouvait être dû à une mesure de sécurité anti-virus
empéchant des programmes de s'auto-enregistrer depuis un
autre ordi du réseau (ou un truc dans ce goût-là)?

Désolé de ne pas pouvoir t'aider.

Chris.

-----Message d'origine-----
Voila un exemple simplifié que j'ai fait :

Sub AjoutProfile()

Dim i As Integer
Dim Formule1, Formule2 As String
Dim FeuilTravail As Worksheet
Dim Ligne2 As Integer
Dim NomFichier As String
Dim NomDossier As String

MatriculeProfile = "essai"

NomDossier = ActiveWorkbook.Path
ChDir NomDossier
MkDir MatriculeProfile

NomFichier = NomDossier + "" + MatriculeProfile
+ "" + MatriculeProfile + ".xls"

ActiveWorkbook.SaveAs Filename:=NomFichier,
FileFormat:=xlNormal _
, Password:="", WriteResPassword:="",
ReadOnlyRecommended:úlse, _
CreateBackup:úlse
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save

End Sub

'Message d'erreur à la ligne "MkDir MatriculeProfile" =>
erreur d'accès chemin/fichier
'Remarque : la variable NomDossier pointe bien vers le
dossier de l'ordinateur réseau.

je suis obligé de résonner en relatif pour pouvoir
déplacer le dossier facilement.

tu as une solution ?


-----Message d'origine-----


C'est confus et vague à la fois... Comment les chemins
sont-ils exprimés ?


Les chemins sont pris en compte par rapport la machine
où est stocké le

fichier qui exécute les actes me semble-t-il
Le pb vient peut-être de là.
Dans un réseau , mieux vaut se limiter aux chemins de
type LecteurRéseau...

ou bien ServeurXXXetc...
sinon beaucoup de pb pénibles peuvent surgir...

H.B.



.

.





Avatar
Emcy
NomFichier ressemble bien à ce qu'il doit être.

A mon avis il faut déclarer le mot de passe et le login
lorque je crée les fichiers mais je ne sais pas comment
faire (j'ai pas de service info dans ma boite : on fait
de la bidouille)



-----Message d'origine-----
A vue de nez, je ne vois pas l'erreur, mais je ne
connais

pas grand chose en réseau et chemins d'accès. Je suppose
que tu as jeté un coup d'oeil à la tête de tes variables
au moment du crash (est-ce que NomFichier ressemble à ce
qu'il doit?).

Est-ce que tu as demandé aux services infos de ta boite
si

cela pouvait être dû à une mesure de sécurité anti-virus
empéchant des programmes de s'auto-enregistrer depuis un
autre ordi du réseau (ou un truc dans ce goût-là)?

Désolé de ne pas pouvoir t'aider.

Chris.

-----Message d'origine-----
Voila un exemple simplifié que j'ai fait :

Sub AjoutProfile()

Dim i As Integer
Dim Formule1, Formule2 As String
Dim FeuilTravail As Worksheet
Dim Ligne2 As Integer
Dim NomFichier As String
Dim NomDossier As String

MatriculeProfile = "essai"

NomDossier = ActiveWorkbook.Path
ChDir NomDossier
MkDir MatriculeProfile

NomFichier = NomDossier + "" + MatriculeProfile
+ "" + MatriculeProfile + ".xls"

ActiveWorkbook.SaveAs Filename:=NomFichier,
FileFormat:=xlNormal _
, Password:="", WriteResPassword:="",
ReadOnlyRecommended:úlse, _
CreateBackup:úlse
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save

End Sub

'Message d'erreur à la ligne "MkDir MatriculeProfile"
=>


erreur d'accès chemin/fichier
'Remarque : la variable NomDossier pointe bien vers le
dossier de l'ordinateur réseau.

je suis obligé de résonner en relatif pour pouvoir
déplacer le dossier facilement.

tu as une solution ?


-----Message d'origine-----


C'est confus et vague à la fois... Comment les chemins
sont-ils exprimés ?


Les chemins sont pris en compte par rapport la machine
où est stocké le

fichier qui exécute les actes me semble-t-il
Le pb vient peut-être de là.
Dans un réseau , mieux vaut se limiter aux chemins de
type LecteurRéseau...

ou bien ServeurXXXetc...
sinon beaucoup de pb pénibles peuvent surgir...

H.B.



.

.


.






Avatar
Frédéric Sigonneau
Bonsoir,

Je n'ai pas de moyen de tester mais j'ai déjà lu que ChDir ne donnait pas les
résultats attendus quand on cherche à accéder au dossier d'un ordinateur
distant. Il existe une fonction de substitution pour contourner ce problème, qui
pourrait peut-être t'aider à régler ton problème (code à recopier dans un module
standard du classeur où tu veux l'utiliser) :

'=============== 'une procédure pour remplacer ChDir avec un lecteur/répertoire réseau

Private Declare Function SetCurrentDirectoryA Lib _
"kernel32" (ByVal lpPathName As String) As Long

Sub ChDirNet(szPath As String)
'collectif, d'après Laurent Longre, mpep
Dim lReturn As Long
lReturn = SetCurrentDirectoryA(szPath)
If lReturn = 0 Then Err.Raise vbObjectError + 1, "Error setting path."
End Sub

'Example of usage

Sub GetFile()
On Error GoTo ErrHandler
ChDirNet "LOGD0FILESOGILVTWDocsTemp"
Exit Sub
ErrHandler:
MsgBox "Couldn't set path"
End Sub
'===============
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Voila un exemple simplifié que j'ai fait :

Sub AjoutProfile()

Dim i As Integer
Dim Formule1, Formule2 As String
Dim FeuilTravail As Worksheet
Dim Ligne2 As Integer
Dim NomFichier As String
Dim NomDossier As String

MatriculeProfile = "essai"

NomDossier = ActiveWorkbook.Path
ChDir NomDossier
MkDir MatriculeProfile

NomFichier = NomDossier + "" + MatriculeProfile
+ "" + MatriculeProfile + ".xls"

ActiveWorkbook.SaveAs Filename:=NomFichier,
FileFormat:=xlNormal _
, Password:="", WriteResPassword:="",
ReadOnlyRecommended:úlse, _
CreateBackup:úlse
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save

End Sub

'Message d'erreur à la ligne "MkDir MatriculeProfile" =>
erreur d'accès chemin/fichier
'Remarque : la variable NomDossier pointe bien vers le
dossier de l'ordinateur réseau.

je suis obligé de résonner en relatif pour pouvoir
déplacer le dossier facilement.

tu as une solution ?

-----Message d'origine-----


C'est confus et vague à la fois... Comment les chemins
sont-ils exprimés ?


Les chemins sont pris en compte par rapport la machine
où est stocké le

fichier qui exécute les actes me semble-t-il
Le pb vient peut-être de là.
Dans un réseau , mieux vaut se limiter aux chemins de
type LecteurRéseau...

ou bien ServeurXXXetc...
sinon beaucoup de pb pénibles peuvent surgir...

H.B.



.





Avatar
Emcy
Merci de ton aide, je vais voir si ça marche

-----Message d'origine-----
Bonsoir,

Je n'ai pas de moyen de tester mais j'ai déjà lu que
ChDir ne donnait pas les

résultats attendus quand on cherche à accéder au dossier
d'un ordinateur

distant. Il existe une fonction de substitution pour
contourner ce problème, qui

pourrait peut-être t'aider à régler ton problème (code à
recopier dans un module

standard du classeur où tu veux l'utiliser) :

'================
'une procédure pour remplacer ChDir avec un
lecteur/répertoire réseau


Private Declare Function SetCurrentDirectoryA Lib _
"kernel32" (ByVal lpPathName As String) As Long

Sub ChDirNet(szPath As String)
'collectif, d'après Laurent Longre, mpep
Dim lReturn As Long
lReturn = SetCurrentDirectoryA(szPath)
If lReturn = 0 Then Err.Raise vbObjectError +
1, "Error setting path."

End Sub

'Example of usage

Sub GetFile()
On Error GoTo ErrHandler
ChDirNet "LOGD0FILESOGILVTWDocsTemp"
Exit Sub
ErrHandler:
MsgBox "Couldn't set path"
End Sub
'================

FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


Voila un exemple simplifié que j'ai fait :

Sub AjoutProfile()

Dim i As Integer
Dim Formule1, Formule2 As String
Dim FeuilTravail As Worksheet
Dim Ligne2 As Integer
Dim NomFichier As String
Dim NomDossier As String

MatriculeProfile = "essai"

NomDossier = ActiveWorkbook.Path
ChDir NomDossier
MkDir MatriculeProfile

NomFichier = NomDossier + "" + MatriculeProfile
+ "" + MatriculeProfile + ".xls"

ActiveWorkbook.SaveAs Filename:=NomFichier,
FileFormat:=xlNormal _
, Password:="", WriteResPassword:="",
ReadOnlyRecommended:úlse, _
CreateBackup:úlse
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save

End Sub

'Message d'erreur à la ligne "MkDir MatriculeProfile"
=>


erreur d'accès chemin/fichier
'Remarque : la variable NomDossier pointe bien vers le
dossier de l'ordinateur réseau.

je suis obligé de résonner en relatif pour pouvoir
déplacer le dossier facilement.

tu as une solution ?

-----Message d'origine-----


C'est confus et vague à la fois... Comment les chemins
sont-ils exprimés ?


Les chemins sont pris en compte par rapport la machine
où est stocké le

fichier qui exécute les actes me semble-t-il
Le pb vient peut-être de là.
Dans un réseau , mieux vaut se limiter aux chemins de
type LecteurRéseau...

ou bien ServeurXXXetc...
sinon beaucoup de pb pénibles peuvent surgir...

H.B.



.





.