Mon fichier se met en lecture seule et m'oblige à faire une "Copie de ..."

Sebast

XLDnaute Impliqué
Bonjour à toutes et à tous,

Dans un fichier .xlsm (excel 2010 : PC), non partagé , je suis confronté depuis peu au problème suivant , sans raison apparente :
Lorsque je clique sur enregistrer (ou plus exactement sur l’icône représentant une disquette), j’obtiens parfois un message m’indiquant que je suis en lecture seule et donc s’inscrit dans la petite fenêtre « Copie de NomdeMonFichier.xlsm ».
Je n’ai pas changé mes habitudes et quand je consulte « Outils », je vois bien que la case » Copie de sauvegarde » n’est pas cochée. Et pourtant, ça me force à sauvegarder sous »Copie de … «
Mais ça n’est pas à chaque fois … !?

Quelqu’un a-t-il une idée expliquant cette situation ?

Merci d’avance pour vos lumières
 

Staple1600

XLDnaute Barbatruc
Re : Mon fichier se met en lecture seule et m'oblige à faire une "Copie de ..."

Bonjour à tous

Et si par inadvertance...?
readonly.png
 
C

Compte Supprimé 979

Guest
Re : Mon fichier se met en lecture seule et m'oblige à faire une "Copie de ..."

Bonjour Sebast, Staple1600

@Staple1600, notre ami dis "Dans un fichier .xlsm ... Mais ça n’est pas à chaque fois"
Donc pour moi ce n'est pas un problème avec cette case

@Sebast, il peut s'agir d'un soucis de Mode protégé

A tester, dans le menu -> Fichier -> Options
-> Centre de gestion de la confidentialité
-> Paramètres du centre ...
ScreenShot034.jpg
Désactive toutes ou une partie des cases du "Mode protégé"
ScreenShot035.jpg

A+
 

Pièces jointes

  • ScreenShot034.jpg
    ScreenShot034.jpg
    56.3 KB · Affichages: 119

Sebast

XLDnaute Impliqué
Re : Mon fichier se met en lecture seule et m'oblige à faire une "Copie de ..."

Bonjour Staple1600, bonjour BrunoM45,


Merci pour vos propositions, voici ce que j’obtiens :

Staple1600 : mon fichier n’est pas en lecture seule, j’avais bien contrôlé avant et je viens de le refaire pour être certain.

BrunoM45 : effectivement, des cases étaient bel et bien cochées. Dans cette rubrique, il est question d’Outlook, de fichiers venant d’internet mais pas formellement des fichiers Excel.
Je viens de tout désactiver, histoire de voir le résultat mais en fait, je travaille sur une copie à la maison le weekend et étonnement, je n’ai pas eu le problème chez moi. Vendredi, sur mon ordi au boulot, j’ai été confronté au souci.
Ce n’est donc que lundi que je pourrais voir ce qu’il en est réellement …

Si ça devait être la cause, peut-on cocher/décocher ces items via une macro ? Car si c’est la raison, n’est-ce pas délicat de tout ouvrir ?

J’ai réfléchi entre-temps aux macros contenues dans mon fichier capricieux et dois préciser que le code ouvre un fichier.txt puis l’enregistre en .xlsx. Il y a donc bien une sauvegarde, et pour éviter les messages intempestifs, j’ai placé l’instruction au préalable :
Application.DisplayAlerts = False, que je positionne à True en fin de macro

Je ne sais pas si ça peut avoir une incidence mais encore une fois, je n’ai rien changé par rapport à la dernière fois, où le problème n’apparaissait pas.


Encore merci pour votre aide précieuse
 

Sebast

XLDnaute Impliqué
Re : Mon fichier se met en lecture seule et m'oblige à faire une "Copie de ..."

Re,

mon code est composé d'une myriade de Sub(), on risque de perdre le fil quand on ne sait pas à quoi il répond ni comment il fonctionne. J'affiche ici la seule sub où il y a enregistrement (le fichier s'appelle Fichier_Semaine.xlsm)
Je pense qu'il faut se concentrer uniquement sur les instruction de sauvegarde ... quant au reste, soyez indulgent, il y a peut-être des maladresses mais ça marche !

Sub a1_Konvertieren()

Dim Wb As Workbook
For Each Wb In Workbooks
If Wb.Name = "Chiffres.xlsx" Then
Windows("Chiffres.xlsx").Close
End If
Next Wb

' conversion d'un fichier brut généré par l'ERP :

Workbooks.OpenText Filename:=Chemin_et_Chiffres_sans_Suffix _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDeliaveced, TextQualifier _
:=xlDoubleQuote, ConsecutiveDeliavecer:=False, Tab:=True, Semicolon:=True _
, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1) _
, Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), _
Array(22, 1), Array(23, 1)), TrailingMinusNumbers:=True
'
'
' je colle en entête de colonne le titre des rubriques

Range("W1").Select
ActiveCell.FormulaR1C1 = "Mois"
Range("X1").Select
ActiveCell.FormulaR1C1 = "Année"
Range("Y1").Select
ActiveCell.FormulaR1C1 = "Période"
'
Application.DisplayAlerts = False
'
'
Dim Chemin_et_Chiffres_avec_Suffix_xlsx As String
Chemin_et_Chiffres_avec_Suffix_xlsx = ThisWorkbook.Path & "\Chiffres.xlsx"


' ici l'enregistrement : le fichier brut généré par l'ERP est enregistré en .xlsx

ActiveWorkbook.SaveAs Filename:=Chemin_et_Chiffres_avec_Suffix_xlsx _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
'
'
'
Dim LetzteZeile As Long
LetzteZeile = Sheets("Chiffres").Range("A" & Rows.Count).End(xlUp).Row
Dim i As Long
'
' je colle des valeurs recueillies précédemment
Workbooks("Fichier_Semaine.xlsm").Activate
Sheets("Paramètres").Select
MyMonth = Range("M100").Value
MyYear = Range("N100").Value
Statut = Range("K100").Value
If Statut = True Then
Periode = "du 1er au " & Range("L100").Value & " du mois clôturé"
Else
Periode = "du 1er au " & Range("L100").Value & " du mois"
End If
'
'
'
Workbooks("chiffres.xlsx").Worksheets("Chiffres").Activate
With Sheets("Chiffres")
For i = 2 To LetzteZeile
Cells(i, 23) = MyMonth
Cells(i, 24) = MyYear
Cells(i, 25) = Periode
Next i
End With
'
'
' une fois les données prélevées, le fichier est enregistré

ActiveWorkbook.SaveAs Filename:=Chemin_et_Chiffres_avec_Suffix_xlsx _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
'
Application.DisplayAlerts = True
'
'
End Sub

Je pense avoir fait ce qu'il faut en utilisant ThisWorkbookPath mais peut-être la sauvegarde est-elle mal faite. Encore une fois, ce weekend, je n'ai pas eu le problème, c'est au boulot, sur une autre machine, fichier non partagé en réseau, mais fichier dont je n'ai pu contrôlé les paramètres (à la lumière de ce qui m'a été précisé hier).

Merci d'avance
 

Staple1600

XLDnaute Barbatruc
Re : Mon fichier se met en lecture seule et m'oblige à faire une "Copie de ..."

Bonjour à tous

Sebast
Un conseil en passant: Utilises les balises [NOPARSE]
Code:
Ici code VBA
[/NOPARSE]
Ton message sera alors plus agréable à lire
(voir ci-dessous, le résultat obtenu)
NB: Au passage, j'ai allégé d'un tout petit, petit chouia ton code ;)
Code:
Sub a1_Konvertieren()
Dim Wb As Workbook, Chemin_et_Chiffres_avec_Suffix_xlsx As String
Dim LetzteZeile As Long,  i As Long


For Each Wb In Workbooks
If Wb.Name = "Chiffres.xlsx" Then
Windows("Chiffres.xlsx").Close
End If
Next Wb
' conversion d'un fichier brut généré par l'ERP :
Workbooks.OpenText Filename:=Chemin_et_Chiffres_sans_Suffix _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDeliaveced, TextQualifier _
:=xlDoubleQuote, ConsecutiveDeliavecer:=False, Tab:=True, Semicolon:=True _
, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1) _
, Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
, 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), _
Array(22, 1), Array(23, 1)), TrailingMinusNumbers:=True
' je colle en entête de colonne le titre des rubriques
Range("W1") = "Mois"
Range("X1")= "Année"
Range("Y1")= "Période"
Application.DisplayAlerts = False
'Chemin_et_Chiffres_avec_Suffix_xlsx = ThisWorkbook.Path & "\Chiffres.xlsx"
' ici l'enregistrement : le fichier brut généré par l'ERP est enregistré en .xlsx
ActiveWorkbook.SaveAs Filename:=Chemin_et_Chiffres_avec_Suffix_xlsx _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
LetzteZeile = Sheets("Chiffres").Range("A" & Rows.Count).End(xlUp).Row
' je colle des valeurs recueillies précédemment
Workbooks("Fichier_Semaine.xlsm").Activate
Sheets("Paramètres").Select
MyMonth = Range("M100").Value
MyYear = Range("N100").Value
Statut = Range("K100").Value
If Statut = True Then
Periode = "du 1er au " & Range("L100").Value & " du mois clôturé"
Else
Periode = "du 1er au " & Range("L100").Value & " du mois"
End If
'
Workbooks("chiffres.xlsx").Worksheets("Chiffres"). Activate
With Sheets("Chiffres")
For i = 2 To LetzteZeile
Cells(i, 23) = MyMonth
Cells(i, 24) = MyYear
Cells(i, 25) = Periode
Next i
End With
' une fois les données prélevées, le fichier est enregistré
ActiveWorkbook.SaveAs Filename:=Chemin_et_Chiffres_avec_Suffix_xlsx _
, FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
Application.DisplayAlerts = True
End Sub
 

MJ13

XLDnaute Barbatruc
Re : Mon fichier se met en lecture seule et m'oblige à faire une "Copie de ..."

Bonjour à tous

Et en mettant code=vba tu obtiendra ceci :) (une fois le dièse cliqué, c'est très simple à rajouter):

Code:
Sub a1_Konvertieren()
 Dim Wb As Workbook, Chemin_et_Chiffres_avec_Suffix_xlsx As String
 Dim LetzteZeile As Long,  i As Long


 For Each Wb In Workbooks
 If Wb.Name = "Chiffres.xlsx" Then
 Windows("Chiffres.xlsx").Close
 End If
 Next Wb
 ' conversion d'un fichier brut généré par l'ERP :
 Workbooks.OpenText Filename:=Chemin_et_Chiffres_sans_Suffix _
 , Origin:=xlWindows, StartRow:=1, DataType:=xlDeliaveced, TextQualifier _
 :=xlDoubleQuote, ConsecutiveDeliavecer:=False, Tab:=True, Semicolon:=True _
 , Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 1) _
 , Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
 Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1), Array(14, 1), Array(15 _
 , 1), Array(16, 1), Array(17, 1), Array(18, 1), Array(19, 1), Array(20, 1), Array(21, 1), _
 Array(22, 1), Array(23, 1)), TrailingMinusNumbers:=True
 ' je colle en entête de colonne le titre des rubriques
 Range("W1") = "Mois"
 Range("X1")= "Année"
 Range("Y1")= "Période"
 Application.DisplayAlerts = False
 'Chemin_et_Chiffres_avec_Suffix_xlsx = ThisWorkbook.Path & "\Chiffres.xlsx"
 ' ici l'enregistrement : le fichier brut généré par l'ERP est enregistré en .xlsx
 ActiveWorkbook.SaveAs Filename:=Chemin_et_Chiffres_avec_Suffix_xlsx _
 , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
 LetzteZeile = Sheets("Chiffres").Range("A" & Rows.Count).End(xlUp).Row
 ' je colle des valeurs recueillies précédemment
 Workbooks("Fichier_Semaine.xlsm").Activate
 Sheets("Paramètres").Select
 MyMonth = Range("M100").Value
 MyYear = Range("N100").Value
 Statut = Range("K100").Value
 If Statut = True Then
 Periode = "du 1er au " & Range("L100").Value & " du mois clôturé"
 Else
 Periode = "du 1er au " & Range("L100").Value & " du mois"
 End If
 '
 Workbooks("chiffres.xlsx").Worksheets("Chiffres"). Activate
 With Sheets("Chiffres")
 For i = 2 To LetzteZeile
 Cells(i, 23) = MyMonth
 Cells(i, 24) = MyYear
 Cells(i, 25) = Periode
 Next i
 End With
 ' une fois les données prélevées, le fichier est enregistré
 ActiveWorkbook.SaveAs Filename:=Chemin_et_Chiffres_avec_Suffix_xlsx _
 , FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
 Application.DisplayAlerts = True
 End Sub
 

Sebast

XLDnaute Impliqué
Re : Mon fichier se met en lecture seule et m'oblige à faire une "Copie de ..."

Bonsoir à tous,

merci pour vos remarques, je m'étais bien rendu compte que ça n'était pas trop agréable à lire, mais je n'avais pas trouvé où cliquer pour améliorer la lisibilité. Je le saurai à l'avenir.

Staple1600 : trouves-tu à redire sur ma façon de sauvegarder ? Autrement dit, les (rares et aléatoires) messages me forçant à faire une Copie de ... au motif que je serais en lecture seule (ce qui n'est pas vrai) peuvent-ils venir de ma méthode de sauvegarde ?
Quand je lis ton code (idem pour MJ13) je ne vois pas de changement sur ma sauvegarde : elle est donc recevable ?


Merci pour vos conseils
 

Staple1600

XLDnaute Barbatruc
Re : Mon fichier se met en lecture seule et m'oblige à faire une "Copie de ..."

Bonsoir à tous

Sebast
Ceci veut dire ce que cela veut dire ;)
Au passage, j'ai allégé d'un tout petit, petit chouia ton code
Je n'ai jamais dit que j'avais solutionné ton problème ;)

PS: Tu es germanophile?
Moi il me reste un fond de germanophobie (souvenir scolaire oblige)
(germanophobie uniquement axée sur la langue, pas sur nos charmants voisins d'outre-Rhin ;))
 
Dernière édition:

Sebast

XLDnaute Impliqué
Re : Mon fichier se met en lecture seule et m'oblige à faire une "Copie de ..."

Bonjour Staple1600,

ma question avait uniquement pour but de savoir si ce que tu avais modifié portait sur l'enregistrement.

Oui, je suis germanophile et accessoirement, ça permet de créer des variables compréhensibles sans risquer d'utiliser un mot anglais, parfois en conflit avec Excel (j'ai eu le cas au début, avec des noms comme date, time etc.).


Bonne journée
 

Staple1600

XLDnaute Barbatruc
Re : Mon fichier se met en lecture seule et m'oblige à faire une "Copie de ..."

Re

Sebast
J'attends pour répondre à ta question que tu daignes enfin joindre une copie anonymisée (et allégée) de:
  • Chiffres.xlsx
  • Fichier_Semaine.xlsm
Car sinon comment faire les tests VBA sur nos PCS, de nos potentielles solutions, à ton problème :confused: :p

Pour reproduire quasiment les mêmes conditions que sur le tien, il nous faut voir comment s'organise ton fichier brut généré par ton ERP et voir l'interaction de ton code VBA avec celui-ci.

NB: Ça ne te prendra qu'un bon quart d'heure pour remplacer les données confidentielles
(si elles existent dans ton classeur) , grâce à Edition/Remplacer par exemple.
 
Dernière édition:

Sebast

XLDnaute Impliqué
Re : Mon fichier se met en lecture seule et m'oblige à faire une "Copie de ..."

Re,

je viens de contrôler sur mon autre PC, qui s'avère finalement être sous Excel 2007 (chez moi perso : Excel 2010). Du coup, je ne trouve pas la rubrique "Mode Protégé" : y a-t-il un équivalent ?
Cependant, je viens de faire fonctionner les fichiers et contrairement à vendredi, aucun souci d'enregistrement.
Je me souviens que vendredi, j'avais beaucoup d'autres fichiers Excel ouverts en même temps, et le problème apparaissait. Aujourd'hui, comme chez moi le weekend, pas d'autres fichiers ouverts et aucun souci. Peut-être mon PC manque-t-il de mémoire (il est en 32 bit).

J'aurais tendance à dire que le problème est réglé car comme je le disais au début, je n’ai rien changé dans mon code et à première vue, il paraît quand même orthodoxe. Le souci avec Chiffres.xlsx est qu’il est alimenté par un fichier sans extension, sur lequel je n’ai pas la main pour l’anonymiser. Sauf à le faire dans Chiffres.xlsx, mais dans ce cas, on perd l’étape fichier sans extension vers fichier .xlsx.


Merci pour l’aide que tu m’as apportée
 

Staple1600

XLDnaute Barbatruc
Re : Mon fichier se met en lecture seule et m'oblige à faire une "Copie de ..."

Re

Sebast
Le souci avec Chiffres.xlsx est qu’il est alimenté par un fichier sans extension, sur lequel je n’ai pas la main pour l’anonymiser.
Il suffisait d'ouvrir ce fichier dans WordPad par exemple, pour voir sa structure et en créer un de toute pièce, avec des données bidons.
Théoriquement, ton ERP doit faire un export en CSV ou un truc du genre, non ?
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 520
Messages
2 089 299
Membres
104 092
dernier inscrit
karbone57