OVH Cloud OVH Cloud

Erreur 5

5 réponses
Avatar
Ellimac
Bonjour,

Suite =E0 une r=E9installation de poste, une macro qui=20
fonctionn=E2t, plante avec une erreur 5 (Appel de proc=E9dure=20
ou argument incorrect).
Il plante sur l'instruction .Filename :

Private Sub Document_Close()
Selection.HomeKey Unit:=3DwdStory
Selection.MoveRight Unit:=3DwdCell, Count:=3D17
s =3D Selection
f =3D "C:\MES DOCUMENTS\" & s & ".doc"
Set fs =3D Application.FileSearch
With fs
Application.ScreenUpdating =3D False
.LookIn =3D "C:\MES DOCUMENTS"
.FileName =3D "*.doc"
If .Execute > 0 Then
For i =3D 1 To .FoundFiles.Count
Fic =3D .FoundFiles(i)
If Fic =3D f Then
MsgBox "R=E9f d=E9j=E0 existante" & Chr(13) _
& "changer le n=B0 d'identification"
Exit Sub
End If
Next i
End If
End With
If s =3D "X" Then Exit Sub
ActiveDocument.SaveAs FileName:=3D"C:\MES DOCUMENTS\" &=20
s & ".doc"
End Sub

Une id=E9e du probl=E8me ? Merci en tous cas,
Camille

5 réponses

Avatar
Guy Moncomble
Bonjour à tous,
dans le message : 099101c355b1$510c9fa0$,

| Bonjour,
|
| Suite à une réinstallation de poste, une macro qui
| fonctionnât, plante avec une erreur 5 (Appel de procédure
| ou argument incorrect).
| Il plante sur l'instruction .Filename :
|
| Private Sub Document_Close()
| Selection.HomeKey Unit:=wdStory
| Selection.MoveRight Unit:=wdCell, Count:
| s = Selection
| f = "C:MES DOCUMENTS" & s & ".doc"
| Set fs = Application.FileSearch
| With fs
| Application.ScreenUpdating = False
| .LookIn = "C:MES DOCUMENTS"
| .FileName = "*.doc"
| If .Execute > 0 Then
| For i = 1 To .FoundFiles.Count
| Fic = .FoundFiles(i)
| If Fic = f Then
| MsgBox "Réf déjà existante" & Chr(13) _
| & "changer le n° d'identification"
| Exit Sub
| End If
| Next i
| End If
| End With
| If s = "X" Then Exit Sub
| ActiveDocument.SaveAs FileName:="C:MES DOCUMENTS" &
| s & ".doc"
| End Sub
|
| Une idée du problème ? Merci en tous cas,
| Camille

A priori, l'instruction dont tu parles n'est pas en cause, mais comme tu
ne donnes pas le message d'erreur !
Cela dit je pense que le problème vient de ta sélection qui, apparemment
se trouve dans un tableau. Dans ce cas, si la cellule est entièrement
sélectionnée, il faut enlever la marque de fin de tableau, donc couper
les deux derniers caractères de la sélection.
--
A+

Quand on pend un raciste, il devient tout noir.

P.-S. Comme çà pour les strings tu connaitras toutes les ficelles (:-D
Avatar
Geo
Bonsoir Guy



Bonjour à tous,
A priori, l'instruction dont tu parles n'est pas en cause, mais
comme

tu ne donnes pas le message d'erreur !


Si : erreur 5 etc., ce n'est pas très explicite et c'est effectivement
une anomalie difficile à trouver.
et si je me souviens bien elle n'apparaît pas sur la bonne ligne.
Peut-être en ajoutant des debug.print pour isoler l'instruction qui
plante.

Cela dit je pense que le problème vient de ta sélection qui,
apparemment se trouve dans un tableau. Dans ce cas, si la cellule
est

entièrement sélectionnée, il faut enlever la marque de fin de
tableau, donc couper les deux derniers caractères de la sélection.


Et pour savoir si le fichier existe déjà, il y a quand même plus
simple que de rechercher tous les fichiers word et vérifier s'ils
portent le même nom.
Si j'ai bien compris le but du code...

A+

Avatar
Ellimac
Bonjour,

L'erreur 5 ne pointe pas forcément sur la ligne fautive,
c'est bien embêtant. Y a t'il une solution pour repérer la
cause de l'erreur ? Je ne connais pas l'utilisation de
Debug.print : si tu as des exemples je suis preneur.

Il y a d'autres moyens pour rechercher si un fichier
existe : je veux bien aussi un exemple.

Contact :

Merci
Camille


-----Message d'origine-----
Bonsoir Guy



Bonjour à tous,
A priori, l'instruction dont tu parles n'est pas en
cause, mais


comme
tu ne donnes pas le message d'erreur !


Si : erreur 5 etc., ce n'est pas très explicite et c'est
effectivement

une anomalie difficile à trouver.
et si je me souviens bien elle n'apparaît pas sur la
bonne ligne.

Peut-être en ajoutant des debug.print pour isoler
l'instruction qui

plante.

Cela dit je pense que le problème vient de ta sélection
qui,


apparemment se trouve dans un tableau. Dans ce cas, si
la cellule


est
entièrement sélectionnée, il faut enlever la marque de
fin de


tableau, donc couper les deux derniers caractères de la
sélection.



Et pour savoir si le fichier existe déjà, il y a quand
même plus

simple que de rechercher tous les fichiers word et
vérifier s'ils

portent le même nom.
Si j'ai bien compris le but du code...

A+

.




Avatar
geo
Bonjour Camille

-----Message d'origine-----
Bonjour,

L'erreur 5 ne pointe pas forcément sur la ligne fautive,
c'est bien embêtant. Y a t'il une solution pour repérer
la

cause de l'erreur ? Je ne connais pas l'utilisation de
Debug.print : si tu as des exemples je suis preneur.


Guy répète inlassablement qu'il ne fait pas hésiter à user
le bouton F1 pour consulter l'aide.
il y a un exemple donné dans l'aide à
"Print, méthode, exemple"

Ce qui n'est eput être pas très clair :
Ces instructions ne sont intéressantes que quand
on "surveille" le déroulement de la macro, donc surtout
quand on la lance à la main dans VBE.
Il faut que la fenêtre "Exécution" soit affichée.
Debug.print affiche dans cette fenêtre ce qu'on lui a
demandé, constante ou variable.
Si tu mets :
debug.print "ligne 20 " & f
il va afficher cette valeur quand il sera passé sur cette
instruction.
Au pire tu mets un debug.print entre chaque ligne
debug.print "ligne 1"
debug.print "ligne 2"
et tu sais exactement où ton programme est passé et par
déduction l'endroit exact du blocage.


Il y a d'autres moyens pour rechercher si un fichier
existe : je veux bien aussi un exemple.


Déja dans ton code tu recherche tous les fichiers en .doc
pourquoi ne pas rechercher ton fichier seulement ?
.FileName = s & ".doc"
If .Execute > 0 Then 'existe déjà
MsgBox "Réf déjà existante" & Chr(13) _
& "changer le n° d'identification"
Exit Sub
End If

Il y a aussi l'instruction Dir qui dans ton cas serait
encore un peu plus simple,
des exemples dans l'aide à :
"Dir, fonction, exemple"

A+

Avatar
Guy Moncomble
Bonjour à tous,
dans le message : 081401c3566e$d7d9c3b0$,

| Guy répète inlassablement qu'il ne fait pas hésiter à user
| le bouton F1 pour consulter l'aide.

Je ne m'en lasse pas !

| Il y a aussi l'instruction Dir qui dans ton cas serait
| encore un peu plus simple,
| des exemples dans l'aide à :
| "Dir, fonction, exemple"

Je crois qu'il est préférable d'utiliser FileDateTime qui, avec une
bonne gestion d'erreurs, sait faire la différence entre un chemin erroné
et un fichier inexistant. Pour l'utiliser avec Word97, il faut
référencer Microsoft scripting.
--
A+

Quand on pend un raciste, il devient tout noir.