sauvegarder une feuille d'un classeur vers un dossier à creer

mouss5174

XLDnaute Nouveau
Bonjour,

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

cdt
thierry
 

mouss5174

XLDnaute Nouveau
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



Bonjour mouss5174, le forum,

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
A+
 

job75

XLDnaute Barbatruc
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

A+
 
Dernière édition:

mouss5174

XLDnaute Nouveau
Re : sauvegarder une feuille d'un classeur vers un dossier à creer

bonjour ,

les dossier que j'essaie d'enregistrer sont les feuilles de resultat des addidtions de tableau

https://www.excel-downloads.com/thr...e-eux-avec-un-control-x-case-a-cocher.182157/

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

cdt
 

job75

XLDnaute Barbatruc
Re : sauvegarder une feuille d'un classeur vers un dossier à creer

Re,

Tout ça ne va pas du tout.

Voilà ce que c'est que de ne pas donner toutes les billes dès le début !

Le fait de créer un fichier avec seulement les cases à cocher paraît vraiment très curieux.

Et il vaudrait mieux une feuille de résultat avec les cases à cocher dessus.

Alors ce que je vous suggère c'est d'ouvrir un nouveau fil en joignant votre fichier réel et en expliquant bien ce que vous souhaitez faire.

Pour moi ce fil est terminé.

A+
 

job75

XLDnaute Barbatruc
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.

A+
 
Dernière édition:

mouss5174

XLDnaute Nouveau
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


Re,

Tout ça ne va pas du tout.

Voilà ce que c'est que de ne pas donner toutes les billes dès le début !

Le fait de créer un fichier avec seulement les cases à cocher paraît vraiment très curieux.

Et il vaudrait mieux une feuille de résultat avec les cases à cocher dessus.

Alors ce que je vous suggère c'est d'ouvrir un nouveau fil en joignant votre fichier réel et en expliquant bien ce que vous souhaitez faire.

Pour moi ce fil est terminé.

A+
 

Pièces jointes

  • addition de tableau sans collage spécial(2).xls
    135.5 KB · Affichages: 49
  • addition de tableau sans collage spécial(2).xls
    135.5 KB · Affichages: 43
  • addition de tableau sans collage spécial(2).xls
    135.5 KB · Affichages: 36

job75

XLDnaute Barbatruc
Re : sauvegarder une feuille d'un classeur vers un dossier à creer

Bonjour mouss5174, le forum,

A partir de vos indications, j'ai créé le nouveau fichier ci-joint.

Quelques explications.

1) Les macros Addition et Sauvegarde (Module1) sont paramétrées.

Elles sont appelées par les macros événementielles des feuilles Addition, Commande1, Commande2.

2) Les fichiers créés étant destinés à des correspondants, ceux-ci sont peut-être encore sous Excel 2003.

Donc il vaut mieux que l'extension de ces fichiers soit toujours .xls.

D'où ce code dans la macro Sauvegarde :

Code:
formatfichier = IIf(Val(Application.Version) < 12, 1, 56) 'extension .xls
ActiveWorkbook.SaveAs pathMesDocuments & "\" & nomNewClasseur, formatfichier
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.

A+
 

Pièces jointes

  • Addition de tableaux et sauvegarde(1).xls
    153.5 KB · Affichages: 47

mouss5174

XLDnaute Nouveau
Re : sauvegarder une feuille d'un classeur vers un dossier à creer

bonjour,
lors de l'essai de mes tableau
cela n'aditionne pas mes cellule , cela met les chiffre les un a cote des autre

ex
dans le 1 tableau il ya 10 le deuxieme 5
au lieu de me donner 15 il me donne 105





Bonjour mouss5174, le forum,




A partir de vos indications, j'ai créé le nouveau fichier ci-joint.

Quelques explications.

1) Les macros Addition et Sauvegarde (Module1) sont paramétrées.

Elles sont appelées par les macros événementielles des feuilles Addition, Commande1, Commande2.

2) Les fichiers créés étant destinés à des correspondants, ceux-ci sont peut-être encore sous Excel 2003.

Donc il vaut mieux que l'extension de ces fichiers soit toujours .xls.

D'où ce code dans la macro Sauvegarde :

Code:
formatfichier = IIf(Val(Application.Version) < 12, 1, 56) 'extension .xls
ActiveWorkbook.SaveAs pathMesDocuments & "\" & nomNewClasseur, formatfichier
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.

A+
 

job75

XLDnaute Barbatruc
Re : sauvegarder une feuille d'un classeur vers un dossier à creer

Bonjour mouss5174,

lors de l'essai de mes tableau
cela n'aditionne pas mes cellule , cela met les chiffre les un a cote des autre

Cela se produit si les nombres à additionner sont des textes : alors le signe + concatène au lieu d'additionner.

Pour éviter ce problème, dans la macro Addition du post #22, remplacer :

Code:
Then tablo(i, j) = tablo(i, j) + t(i, j)
par :

Code:
Then tablo(i, j) = tablo(i, j) + CDbl(t(i, j))
Fichier (2).

A+
 

Pièces jointes

  • Addition de tableaux et sauvegarde(2).xls
    153 KB · Affichages: 34

mouss5174

XLDnaute Nouveau
Re : sauvegarder une feuille d'un classeur vers un dossier à creer

bonjour,
j'avais pas vu cela comme ca
je m'appretai a refaire la mise en forme
mais c'est vrai quitte a etre dans le vba autant tout pilote

merci

lorsqu'on a 40 case a cocher ne peut on pas simplifier les 40 paraphe

Private Sub CheckBox5_Click()
CheckBox5.ForeColor = IIf(CheckBox5, &HFF&, &H80000008) 'rouge
End Sub

en un
private sub checbox click
for n = 1 to 40
("checkbox",n).forecolor=......

j'ai essayer avec des oleo mais cela plante

cdt
 

job75

XLDnaute Barbatruc
Re : sauvegarder une feuille d'un classeur vers un dossier à creer

Bonjour mouss5174, le forum,

Pour traiter les 40 CheckBox le mieux est d'utiliser un Module de classe.

Pas le temps de m'en occuper, je suis au Bresil pour 15 jours.

Il y a pas mal d'exemples sur le forum.

A+
 

job75

XLDnaute Barbatruc
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...

A+
 

Pièces jointes

  • Addition de tableaux et sauvegarde(3).xls
    162.5 KB · Affichages: 47
Dernière édition:

job75

XLDnaute Barbatruc
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...

A+
 

Pièces jointes

  • Addition de tableaux et sauvegarde(3bis).xls
    161 KB · Affichages: 37
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 294
Messages
2 086 895
Membres
103 404
dernier inscrit
sultan87