mon fichier est vide après enregistrement ?

  • Initiateur de la discussion Initiateur de la discussion jph
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

J

jph

Guest
bonjour le forum,

nul en macro, j'ai malgré tout à peu près réussi (grace au site) à mettre bout à bout 3 macros:

La première macro suivante déprotège une feuille avec le mot de passe "***", puis réalise la macro fonctionnelle éventuelle
' et enfin la reprotège avec le même mot de passe. Ainsi de suite avec toutes les feuilles.

' ensuite on peut saisir le N° de dossier en cellule C11 qui deviendra ensuite le nom du fichier XLS

' la 3ème macro enregistre le fichier sous le nom : N° de dossier.XLS
' puis le fichier est fermé et reprotégé

le problème : mon fichier a bien le nom de la cellule C11, mais IL EST VIDE ?
je dois oublié d'activer les feuilles en quittant ? ou bien une grossière erreur de syntaxe. un grand merci à ceux qui voudront bien lire ce qui suit.


Sub nomdefichierautoprotect()
'
' La première macro suivante déprotège une feuille avec le mot de passe "***", puis réalise la macro fonctionnelle éventuelle
' et enfin la reprotège avec le même mot de passe. Ainsi de suite avec toutes les feuilles.

' ensuite on peut saisir le N° de dossier en cellule C11 qui deviendra ensuite le nom du fichier XLS

' la 3ème macro enregistre le fichier sous le nom : N° de dossier.XLS
' puis le fichier est fermé et reprotégé

' 1ère macro
Dim i As Byte

'Passer les feuilles les unes après les autres
For i = 1 To Sheets.Count
Sheets(1).Activate
' Deprotection de la feuille active, le mot de passe est "123"
With ActiveSheet
.EnableSelection = xlNoRestrictions
.Unprotect Password:="123"
End With
Next i


'2ème macro : saisie du N° de dossier, que je veux voir dans la cellule C11

Dim a As Variant 'déclare la variable a
a = InputBox("Tapez un N° de dossier") 'définit la variable a
If Range("C11") = "" Then 'si C11 est vide
Range("C11") = a
Else 'sinon
Range("C11") = ""


' 3ème macro : récupère le N° de dossier pour constituer le nom du fichier XLS

ThisWorkbook.SaveAs Filename:="C:\Documents and Settings\JPH\Mes Documents\essai excel\" & Sheets("Feuil1").Range("C11").Value & ".xls"
ThisWorkbook.Saved = True


' Reprotection de la feuille active
With ActiveSheet
.EnableSelection = xlNoSelection
.Protect Password:="123", Contents:=True, UserInterfaceOnly:=True, Scenarios:=True
End With

' fin de la deuxième macro : ferme le fichier avec son nouveau nom
ThisWorkbook.Close

End Sub
 
bonsoir,

Supprime ta macro fleuve et remplace la par les 4 que je t'envoie.
Et conserve ce principe pour l'avenir :

Sub MacroPrincipale()
'Appeler successivement toutes les macros secondaires
End MacroPrincipale

Ta macro corrigée avec quelques commentaires :

Sub nomdefichierautoprotect()
Cette macro appelle successivement Macro 1,2, 3...
Macro1
Macro2
Macro3
End Sub

Sub Macro1()
Dim i As Byte
'Passer les feuilles les unes après les autres
For i = 1 To Sheets.Count
Sheets(1).Activate
' Deprotection de la feuille active, le mot de passe est "123"
With ActiveSheet
.EnableSelection = xlNoRestrictions
.Unprotect Password:="123"
End With
Next i
' Nous sommes maintenant sur la dernière feuille !
Sheets(1).Activate ' Bon maintenant on va pouvoir s'occuper du bon C11
End Sub

Sub Macro2()
Dim a As Variant ' déclare la variable a
a = InputBox("Tapez un N° de dossier") 'définit la variable a
Range("C11") = a
ThisWorkbook.SaveAs Filename:="C:\Documents and Settings\JPH\Mes Documents\essai excel\" & Sheets("Feuil1").Range("C11").Value & ".xls"
End Sub

Sub Macro3()
' Reprotection de la feuille active (et pourquoi pas de toutes les feuilles comme dans macro1 ?
With ActiveSheet
.EnableSelection = xlNoSelection
.Protect Password:="123", Contents:=True, UserInterfaceOnly:=True, Scenarios:=True
End With

ActiveWorkbook.Save
ThisWorkbook.Close
End Sub

A+
 
bonjour Galopin, et le forum

merci de ton aide....lorsque je lance ta macro, j'ai un message d'erreur quant à la ligne : End MacroPrincipale
je l'ai donc désactiver pour quand même tester les 3 macros à la main.... et là encore je me retrouve avec un fichier qui porte bien le nom de ma cellule C11, mais qui est vide???? je ne comprends rien !
comment faire si avant de refermer mon fichier je veux pouvoir saisir diverses info dans différentes cellules, et pas simplement C11.
merci d'avance de m'aider.
 
bonsoir,
Oubli MacroPrincipale, c'était juste pour illustrer le pribncipe général
Copie les 4 macros à partir de :

Sub nomdefichierautoprotect()

... jusqu'à la fin

Ces quatre macros doivent être dans un "NOUVEAU MODULE" (type Module1 comme ceux que te crée VBA quand tu fais fonctionner l'enregistreur) et non pas dans un module du type "Feuil1, Feuil2" ni dans ThisWorkbook

ça doit marcher. Je te prépare un petit ZIP et le reviens...

A+
 
bonsoir,

il est vrai que j'ai commencé tard.... je suis un peu fatigué, mais quand même, je n'y arrive pas.
actuellement quand j'ouvre mon fichier auquel je veux associer ces 4 macros, j'ai un perso.xls qui s'ouvre, et j'ai : macro1, macro2 et macro3 ainsi que module6-nomfichier autoprotect et idem mais module7.
je dois tout virer ?
lorsque je lance la macro module6 ou module7, il me demande saisir N°dossier dans C11, et puis ca mouline très vite, et je retrouve avec un fichier qui n'a plus qu'une seule feuille. je quitte et dans mon repertoire j'ai effectivement un fichier qui a le nom de mon N° de dossier... mais qui est vide ??? une histoire de fou ??? ou bien c'est moi qui déraille ???
merci de ton aide, car là je ne comprend vraiment rien...
précises moi si tuveux bien comment enregistrer les 3 macros + la macro 'globale' dans mon fichier, car je fais peut etre une erreur..
à+
 
Re :
J'ai modifié mon fichier exemple en conséquence. Supprime le précédent.
Le problème est en effet que Macro1, Macro2, et Macro3 sont des noms générés par Excel il convient donc ensuite de les personnaliser, car maintenant elles entrent en conflit avec ton perso.xls.

Pour utiliser ces macros il suffit de les copier en totalité dans le module1 de ton classeur.

Ensuite à partir d'excel il suffit d'exécuter "nomdefichierautoprotect"
lol ...après y avoir fait le ménage bien sur : à la fin il ne doit y avoir qu'une seule Sub nomdefichierautoprotect() !...

Ok ?
 

Pièces jointes

bonjour,

un grand merci !
j'ai fait le ménage... et comme je ne suis pas doué, ça été un peu pénible mais c'est fait ! donc la macro est associé à ce classeur.... mais explique-moi elle est quand même dans perso.xls ??? c'est quoi exactement ce dossier perso.xls que je ne vois pas. y at-il un moyen de le supprimer ou est-il obligatoire ?
bonne journée.

JP

Ps : puis je t'aider dans un autre domaine?
encore merci.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
3
Affichages
788
Retour