J'ai utiliser un code vba trouver sur ce forum le code marche bien une fenetre de sauvegarde se creer je dois rentrer mon nouveau fichier et je clique ok jusque la pas de souccis;
par contre dans cette fenetre il y "annuler" et losrque je clique dessus cela me génère une erreur,
que doit je rajouter au code pour que cela arrete la procedure et ferme le nouveau fichier en cours de création.
Sub Test()
Dim newWbk As Workbook, feuilCal As Worksheet, pathMesDocuments As String, nomNewClasseur As String
'définir le chemin de MesDocuments
pathMesDocuments = "E:\aMiki\XLS\test"
'définir la feuille à copier
Set feuilCal = ThisWorkbook.Sheets("Calendrier")
'créer un nouveau classeur avec une seulle feuille
Set newWbk = Application.Workbooks.Add(xlWBATWorksheet)
'copier les cellules de la feuille "Calendrier"
feuilCal.Cells.Copy
'coller les valeurs dans le nouveau classeur, puis les formats, puis les largeurs de colonnes
newWbk.Sheets(1).Range("A1").PasteSpecial xlPasteValues
newWbk.Sheets(1).Range("A1").PasteSpecial xlPasteFormats
newWbk.Sheets(1).Range("A1").PasteSpecial xlPasteColumnWidths
Application.CutCopyMode = False
'récupérer le nom à donner au nouveau classeur
nomNewClasseur = InputBox("Nom du nouveau classeur :")
'sauvegarder le classeur et le fermer
newWbk.SaveAs pathMesDocuments & "\" & nomNewClasseur & ".xls"
newWbk.Close
Re : sauvegarder une feuille d'un classeur vers un dossier à creer
bonjour, non meme en suprimant l'extension , je ne garde pas la couleur
par contre ce qui est est étonnant
c'est que sous ssous excel 203 la sauvegarde marche par contre sous excel 2010 j'ai un probleme de sauvegarde qui me dit que je ne peut pas sauvegarder dans un fichier sans macro
meme en rajoutant l'extension xlsm ou xlsx bizare
cdt
La perte de couleurs vient peut-être du fait que vous êtes sous Excel 2010 (.xlsm) et que vous enregistrez en .xls.
Si vous ne précisez pas l'extension, le fichier sera enregistré en .xlsx (Excel 2010) ou .xls (Excel 2003).
Par aiileurs il faut ajouter un contrôle d'erreur :
Code:
Sub Sauvegarde()
Dim feuilcal As Worksheet, pathMesDocuments As String, nomNewClasseur As String
'chemin d'enregitrement du fichier
pathMesDocuments = "C:\DOCUMENT\MOI"
'pathMesDocuments = ThisWorkbook.Path 'plus facile à tester...
'positionnement des feuilles
Set feuilcal = ThisWorkbook.Sheets("Feuil2")
'copier la feuille vers un nouveau document
feuilcal.Copy
'coller les valeurs
ActiveSheet.UsedRange = feuilcal.UsedRange.Value
'forcer le nom à donner au nouveau classeur
nomNewClasseur = "commande2" & " " & Format(Date, "dd mm yyyy")
'sauvegarder le classeur et le fermer
On Error Resume Next 'si le classeur a déjà été créé...
ActiveWorkbook.SaveAs pathMesDocuments & "\" & nomNewClasseur 'extension non précisée
'message de confirmation
MsgBox "Votre base de données " & IIf(Err, "n'est pas sauvegardée...", _
"est sauvegardée sous le nom : " & nomNewClasseur), vbYes + vbInformation, "Copie sauvegarde classeur"
ActiveWorkbook.Close False
End Sub
Re : sauvegarder une feuille d'un classeur vers un dossier à creer
Bonjour mouss5174,
La feuille copiée contient du code VBA. Je suppose que vous ne voulez pas garder le code ??
Alors avec ApplicationDisplayAlerts = False l'enregistrement se fera bien en .xlsx :
Code:
Sub Sauvegarde()
Dim feuilcal As Worksheet, pathMesDocuments As String, nomNewClasseur As String
'chemin d'enregitrement du fichier
pathMesDocuments = "C:\DOCUMENT\MOI"
'pathMesDocuments = ThisWorkbook.Path 'plus facile à tester...
'positionnement des feuilles
Set feuilcal = ThisWorkbook.Sheets("Feuil2")
'copier la feuille vers un nouveau document
feuilcal.Copy
'coller les valeurs
ActiveSheet.UsedRange = feuilcal.UsedRange.Value
'forcer le nom à donner au nouveau classeur
nomNewClasseur = "commande2" & " " & Format(Date, "dd mm yyyy")
'sauvegarder le classeur et le fermer
On Error Resume Next 'si le classeur a déjà été créé...
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs pathMesDocuments & "\" & nomNewClasseur 'extension non précisée
'message de confirmation
MsgBox "Votre base de données " & IIf(Err, "n'est pas sauvegardée...", _
"est sauvegardée sous le nom : " & nomNewClasseur), vbYes + vbInformation, "Copie sauvegarde classeur"
ActiveWorkbook.Close False
End Sub
Pour ce qui est des couleurs il faudrait déposer votre fichier, sur ce fil ou Accueil de Cjoint.com
que vous m'avez aider à realiser
dans ce classeur:
j'ai 1 feuille avec un tableau contenant 20 cases à cocher( que je souhaite enregistre dans un fichier en gardant les case sans pouvoir les decocher ou les cocher)
j'ai 20feuilles contenant des tableau
et 2 feuilles contenant des tableau resultant de differente addidtion (que je souhaite enregistrer dans un fichier different)
pour cela j'avais creer 3 command button sur la feuille avec les case a cocher
car une une fois les case cocher je voulais sauvegarder les 2 tableaux resutat(2 fichier different ) et le tableaux avec les case a cocher
Re : sauvegarder une feuille d'un classeur vers un dossier à creer
Re,
Je vous mets quand même le code qui pourra fonctionner sur les fichiers de l'autre fil :
Code:
Sub Sauvegarde()
Dim feuilcal As Worksheet, pathMesDocuments As String, o As Object, nomNewClasseur As String
'chemin d'enregitrement du fichier
pathMesDocuments = "C:\DOCUMENT\MOI"
'pathMesDocuments = ThisWorkbook.Path 'plus facile à tester...
'positionnement des feuilles
Set feuilcal = ThisWorkbook.Sheets("Recap")
'copier la feuille dans un nouveau document
Application.EnableEvents = False 'désactive les événements
feuilcal.Copy
Application.EnableEvents = True 'réactive les événements
'neutraliser les checkbox et les boutons ActiveX
For Each o In ActiveSheet.OLEObjects
o.Enabled = False
Next
'forcer le nom à donner au nouveau classeur
nomNewClasseur = "commande2" & " " & Format(Date, "dd mm yyyy")
'sauvegarder le classeur et le fermer
On Error Resume Next 'si le classeur a déjà été créé...
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs pathMesDocuments & "\" & nomNewClasseur
'message de confirmation
MsgBox "Votre base de données " & IIf(Err, "n'est pas sauvegardée...", _
"est sauvegardée sous le nom : " & nomNewClasseur), vbYes + vbInformation, "Copie sauvegarde classeur"
ActiveWorkbook.Close False
End Sub
J'ai donc ajouté :
- les Application.EnableEvents pour éviter le déclenchement de la macro Worksheet_Activate
- la boucle pour neutraliser (griser) les objets ActiveX s'il y en a.
Re : sauvegarder une feuille d'un classeur vers un dossier à creer
bonjour,
je ne crée pas un fichier avec seulement les cases à cocher mais une feuille qui permet de
selon les case a cocher j'additionne des tableaux pour en donner plus qu'un
mon fichier comporte exactement 30 feuilles(que j'ai proteger)
la 1eres comporte un tableaux avec les cases a cocher et le(s) bouton(s) de sauvegarde
j'ai 28 feuilles avec des tableaux
la 29et 30 feuilles sont les tableaux avec une commandes finales suivant les cases qui sont cocher
une fois la commandes passes les tableaux finaux vont etre envoyer par mail
donc je veut faire une copie de la feuille 29 vers un fichier que je crée "commande1 date" et la feuille30 vers un fichiers que crée "commande2 date" sans les code (macro)
afin de faire la verification, je veut faire une sorte de capture ecran de la feuille 1 pour aller sur un fichier créer"verifcommande date"
donc j'ai creer un fichier comme tu m'as expliquer et il est réussi et je t'en remercie
maintenant je cherche à sauvegarder les 3feuilles avec un command button
ainsi les personnes qui passeront la commande n'auront pas à aller sur les feuilles, ils gereront tous à partir d'une seules feuilles et on pourra verifier ce qui c'est fait
cdt
56 c'est le format de fichier .xls quand on est sur Excel 2007/2010.
3) Il vaut mieux (mais ce n'est pas indispensable) supprimer le code VBA dans les fichiers créés :
Code:
'supprime le code VBA de la feuille (facultatif)
Set o = ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
o.DeleteLines 1, o.CountOfLines
Sur Excel 2010 il faut avoir coché l'option Accès approuvé au modèle d'objet du projet VBA (onglet Fichier-Options-Centre de gestion de la confidentialité-Paramètres...-Paramètres des macros)
Sur Excel 2003 il faut avoir coché l'option Faire confiance au projet Visual Basic (menu Outils-Macro-Sécurité-Editeurs approuvés).
4) enfin n'oubliez pas d'adapter éventuellement le chemin d'accès dans la macro Sauvegarde.
56 c'est le format de fichier .xls quand on est sur Excel 2007/2010.
3) Il vaut mieux (mais ce n'est pas indispensable) supprimer le code VBA dans les fichiers créés :
Code:
'supprime le code VBA de la feuille (facultatif)
Set o = ActiveWorkbook.VBProject.VBComponents(ActiveSheet.CodeName).CodeModule
o.DeleteLines 1, o.CountOfLines
Sur Excel 2010 il faut avoir coché l'option Accès approuvé au modèle d'objet du projet VBA (onglet Fichier-Options-Centre de gestion de la confidentialité-Paramètres...-Paramètres des macros)
Sur Excel 2003 il faut avoir coché l'option Faire confiance au projet Visual Basic (menu Outils-Macro-Sécurité-Editeurs approuvés).
4) enfin n'oubliez pas d'adapter éventuellement le chemin d'accès dans la macro Sauvegarde.
Re : sauvegarder une feuille d'un classeur vers un dossier à creer
Bonjour le fil, le forum,
De retour de voyage je vois que rien n'a été fait sur le Module de classe.
Alors voyez ce fichier (3) avec les codes :
- dans le Module de classe Classe1 :
Code:
Public WithEvents CheckBoxGroup As MSForms.CheckBox
Private Sub CheckBoxGroup_Click()
CheckBoxGroup.ForeColor = IIf(CheckBoxGroup, &HFF&, &H80000008) 'rouge
End Sub
- dans le Module standard Module1 :
Code:
Public col As Collection
Sub InitCheck()
Dim o As OLEObject, c As Classe1
Set col = New Collection
For Each o In Sheets("Addition").OLEObjects
If TypeOf o.Object Is MSForms.CheckBox Then
Set c = New Classe1
Set c.CheckBoxGroup = o.Object
col.Add c
End If
Next
End Sub
- dans ThisWorkbook :
Code:
Private Sub Workbook_Open()
InitCheck
End Sub
Le nombre de CheckBox peut bien sûr être quelconque.
Edit : je remets dans la feuille Addition la macro CommandButton1_Click() que j'avais enlevée...
Re : sauvegarder une feuille d'un classeur vers un dossier à creer
Re,
On préférera peut-être cette solution (3bis) avec dans Module1 :
Code:
Public c(1 To 5) As New Classe1
Sub InitCheck()
Dim n As Byte
For n = 1 To 5 'numéros des CheckBox, à adapter
Set c(n).CheckBoxGroup = Sheets("Addition").OLEObjects("CheckBox" & n).Object
Next
End Sub
Edit : je remets dans la feuille Addition la macro CommandButton1_Click() que j'avais enlevée...