OVH Cloud OVH Cloud

help!!!

20 réponses
Avatar
aurore
Bonjour,

j'ouvre un classeur pour y exécuter une macro à l'intérieur
tout cela grace à vba
Mais le problème est qu'après avoir exécuter la macro il faut que je ferme
le classeur en enregistrant les modifications
Et tout cela doit se faire automatiquement

Actuellement j'ai l'instruction
Workbooks.Close
Mais le problème c'est qu'il me demande si je veux enregistrer
et si je lui dit oui il m'enregistre une copie

Si vuv avait une soluion je vous remercie d'avance !!!!!

10 réponses

1 2
Avatar
E KERGRESSE
Re,

Peut-être une piste. Recherche dans l'aide VBA Excel les propriétés
d'ATTRIBUTES.

Peut-être, y a-t-il moyen de forcer la propriété ATTRIBUTES à normal.

Dans un premier temps, il serait plus prudent de mettre un flag (un espion)
dans ton code pour tester la valeur de la propriété. Logiquement si la
valeur est 1 à l'ouverture, c'est normal que tu ne puisses pas sauvegarder
le fichier puisque le fichier est en lecture seule. Pour cela, le code
suivant devrait te permettre de vérifier l'attribut du fichier vu de ton
poste en mettant la ligne Call LireAttribut dans ton code avant l'ouverture
de ton fichier.


Public ReponseAttribut() As Variant en tête de ton module.
Public X as integer 'X =0 au tout début de ta procédure

Sub LireAttribut()

Dim fs, f, r
Dim SpecFichier as Variant

X=X+1

ReDim Preserve ReponseAttribut(2,X) ' X étant un compteur incrémentant le
nombre de fichiers testés.

SpecFichier= "Chemin + Nomde fichier.xls" ' Le chemin et "37.XLS" doivent
être contenus dans une variable dans ce cas.

Set fs = CreateObjet("Scripting.FileSystemObject")
Set f=fs.GetFile(fs.GetFileName(SpecFichier))

ReponseAttribut(0,X) = Specfichier
ReponseAttribut(1,X) = f.Attributes

Set fs = Nothing
Set f = Nothing


End Sub

Sub LectureAttributsFichiers()

Sheets.add ' Par exemple
Activesheet.Range("A1").select
For X = Lbound(ReponseAttribut,2) to UBound(ReponseAttribut,2) - 1
Activecell.offset(X,0).value=ReponseAttribut(0,X)
Activecell.offset(X,1).value=ReponseAttribut(1,X)
Next

End sub


Eventuellement pour modifier à la main,


Sub ModifierAttribut()

dim fs, f, r
Dim SpecFichier as Variant

SpecFichier= "Chemin + Nomde fichier.xls" ' Le chemin et "37.XLS" par
exemple

Set fs = CreateObjet("Scripting.FileSystemObject")
Set f=fs.GetFile(fs.GetFileName(SpecFichier))

If f.attributes And 1 Then

r = Msgbox("Le fichier est en lecture seule", vbYesNo, "Modifier
en normal")
If r = vbYes Then
f.Attributes = f.Attributes - 1
End if
End if

r = Msgbox( "Attribut en cours de " & Specfichier & " " &
f.Attributes)

set fs = Nothing
set f = Nothing


End sub

A essayer sur un nombre limité de fichiers à l'ouverture et juste avant la
fermeture de tes fichiers, pour voir si l'attribut change.

Je n'ai pas testé tout les codes, ça marche au moins pour la modification de
l'attribut.

Cordialement.


"aurore" a écrit dans le message de news:
eJT$
Re,

Tous mes fichiers sont sur un serveur et on peut les ouvrir
sur différents postes. mais il est en ouverture normal
que sur le premier poste qui l'a ouvert.

dans les autres postes, le fichier est ouvert en mode lecture seule.
J'ai aussi essayé de l'ouvrir dans une autre nouvelle session excel
et il me l'ouvre aussi en lecture seule en me prevenant par le même
message que toi.

Seulement dans mon programme vba il m'ouvre mon classeur
37.xls seulement si celui ci est fermé. Donc je comprend pas
pourquoi il ne veux pas, me l'ouvrir en lecture normal (sachant
qu'il ne m'affiche pas le message me disant que je suis en lecture
seule)

Merci pour l'écriture d'enregistrement mais le problème est
toujours le même puisque je suis en lecture seule donc il me demande
d'enregistrer
une copie de mon fichier 37.xls


Merci,




Avatar
aurore
Re,

je te remercie E KERGRESSE mais ca fais pas longtemps quqe je fais de vba
donc je n'y connai presque rien.
Même en l'addaptant je n'ai pas réussi à les faire fonctionner alors s'y
tu peux y rejeter un coup d'oeil et m'expliquer clairement (si tu as le
temps)
afin que je puisse comprendre un peu mieux
et qui sais peut-être trouvé mon erreur

Merci
Avatar
E KERGRESSE
Question :

Comme tes fichiers sont sur un serveur, as-tu les droits pour écrire sur le
répertoire du serveur ?

Cordialement.

"aurore" a écrit dans le message de news:
#
Re,

je te remercie E KERGRESSE mais ca fais pas longtemps quqe je fais de vba
donc je n'y connai presque rien.
Même en l'addaptant je n'ai pas réussi à les faire fonctionner alors s'y
tu peux y rejeter un coup d'oeil et m'expliquer clairement (si tu as le
temps)
afin que je puisse comprendre un peu mieux
et qui sais peut-être trouvé mon erreur

Merci




Avatar
aurore
Re,

je viens de vérifier et j'ai effectivement le droit d'écrire sur le
répertoire
du serveur.
le probléme ne vien donc pas de la

Merci
Avatar
E KERGRESSE
Donc, il faut vérifier comment sont les attributs de tes fichiers à
différents endroits de la procédure pour savoir à quel moment ça coince.

Dans ton cas, il faut essayer de savoir si le fichier que tu veux ouvrir est
en lecture seule avant l'ouverture, puis au moment où tu l'as ouvert, ou à
quel endroit le problème se pose par la suite le cas échéant.

A mettre dans un module :


' Dans un premier temps, tu ne testes seulement que le fichier 37.XLS. Tu
remplaces Chemin par le répertoire de ton fichier 37.xls dans la ligne
SpecFichier. Si le fichier est en lecture seule la réponse au message est
1, si le fichier est Normal : 0, si Archive : 32.


A mettre dans un module.


Sub LireAttribut()

Dim fs, f, r
Dim SpecFichier as Variant


SpecFichier= Chemin & "" & "37.XLS"

Set fs = CreateObjet("Scripting.FileSystemObject")
Set f=fs.GetFile(fs.GetFileName(SpecFichier))

Msgbox( f.Attributes)

Set fs = Nothing
Set f = Nothing


End Sub

Et tu lances l'exécution à partir du bouton Executer Sub dans le menu de
Visual Basic Editor.


Question : Quelle est la finalité de ta macro commande ?

Cordialement.


"aurore" a écrit dans le message de news:
#nG#
Re,

je viens de vérifier et j'ai effectivement le droit d'écrire sur le
répertoire
du serveur.
le probléme ne vien donc pas de la

Merci




Avatar
E KERGRESSE
Re,

Le mieux c'est de publier ta ou tes macro(s) sur le forum, ou si tu
préfères, envoie les moi sur un fichier txt (copier coller sur NotePad).

Par ailleurs, as-tu la possibilité de tester ton programme en local, c'est à
dire sans le serveur ? Dans un premier temps sur un seul fichier qui coince.


Cordialement.


"aurore" a écrit dans le message de news:
#nG#
Re,

je viens de vérifier et j'ai effectivement le droit d'écrire sur le
répertoire
du serveur.
le probléme ne vien donc pas de la

Merci




Avatar
aurore
Bonjour,

je viens d'effectuer le programme pour lire l'attribut de mon classeur
37.xls et le résultata affiché est 32.
cela voudrai donc dire que mon fichier est archivé. Je ne compend plus!!!
Ce n'est pas normale qu'il soit archivé puisque j'arrive à m'en servir
lorsque
je veux le modifier !!

Au fait j'ai repérer une erreeur des tes macros: ce n'est pas CreateObjet
mais CreateObject. Mais ce n'est qu'un détail!!
Merci encore pour ton aide
Avatar
E KERGRESSE
Salut Aurore,

Cela n'a pas d'importance que le fichier soit archivé, ce qu'il l'est c'est
que le résultat soit différent de 1.

Par contre, j'ai lu le message de FXM dans un fil plus haut et qui me paraît
intéressant.

Par ailleurs, as-tu la possibilité d'essayer ton programme en ramenant ton
fichier 37.xls sur ta machine ? Pour voir si c'est un problème venant du
serveur.

Cordialement.




"aurore" a écrit dans le message de news:
#
Bonjour,

je viens d'effectuer le programme pour lire l'attribut de mon classeur
37.xls et le résultata affiché est 32.
cela voudrai donc dire que mon fichier est archivé. Je ne compend plus!!!
Ce n'est pas normale qu'il soit archivé puisque j'arrive à m'en servir
lorsque
je veux le modifier !!

Au fait j'ai repérer une erreeur des tes macros: ce n'est pas CreateObjet
mais CreateObject. Mais ce n'est qu'un détail!!
Merci encore pour ton aide





Avatar
aurore
Re,

je te remercie E KERGRESSE mais grace à ton programme pour savoir
quelle est l'attribution du fichier (lecture seule, normale, archivé) j'ai
pu le modifier et forcé le fichier a se transformer en lecture normale
quelquesoit son attribution.

Pour l'instant tout fonctionne bien et j'arrive à enregistrer toutes
modifications
effectuéeslors de l'ouverture du classeur 37.xls

Merci de ton aide !
Avatar
E KERGRESSE
Bravo Aurore si tu es arrivée à faire cela, j'allais te le proposer en
dernière extrémité, si rien ne fonctionnait.

Bon courage pour la suite.

Cordialement.

"aurore" a écrit dans le message de news:
efYNu#
Re,

je te remercie E KERGRESSE mais grace à ton programme pour savoir
quelle est l'attribution du fichier (lecture seule, normale, archivé) j'ai
pu le modifier et forcé le fichier a se transformer en lecture normale
quelquesoit son attribution.

Pour l'instant tout fonctionne bien et j'arrive à enregistrer toutes
modifications
effectuéeslors de l'ouverture du classeur 37.xls

Merci de ton aide !




1 2