[VBAEx]Enreg. un onglet dans fichier à part ?
Résolu/Fermé
lml-mike
Messages postés
455
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
-
Modifié par lml-mike le 31/08/2010 à 11:31
lml-mike Messages postés 455 Date d'inscription vendredi 16 février 2007 Statut Contributeur Dernière intervention 18 novembre 2018 - 1 sept. 2010 à 16:53
lml-mike Messages postés 455 Date d'inscription vendredi 16 février 2007 Statut Contributeur Dernière intervention 18 novembre 2018 - 1 sept. 2010 à 16:53
A voir également:
- [VBAEx]Enreg. un onglet dans fichier à part ?
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Fichier rar - Guide
- Ouvrir un fichier .bin - Guide
- Fichier impossible à supprimer - Guide
10 réponses
cousinhub29
Messages postés
1049
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
27 avril 2025
359
31 août 2010 à 14:12
31 août 2010 à 14:12
Re-,
Pour les Boutons de commande, on va faire ainsi :
Par contre, le fait que tes TextBoxs ne préservent pas leur valeur, je ne le comprends pas, lorsque je fais des essais, ceux-ci ne se vident pas....
Comment les remplis-tu?
@ te relire
Pour les Boutons de commande, on va faire ainsi :
Sub Mike3() Dim Shp As Shape Sheets("Facture").Copy ActiveWindow.DisplayGridlines = False With ActiveWorkbook For Each Shp In .Sheets(1).Shapes If Shp.Name Like "CommandButton*" Then Shp.Delete Next Shp .SaveAs Filename:="C:\Factures\" & "Facture_" & Range("E2").Value & ".xlsm", _ FileFormat:=xlOpenXMLWorkbookMacroEnabled End With End Sub
Par contre, le fait que tes TextBoxs ne préservent pas leur valeur, je ne le comprends pas, lorsque je fais des essais, ceux-ci ne se vident pas....
Comment les remplis-tu?
@ te relire
cousinhub29
Messages postés
1049
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
27 avril 2025
359
31 août 2010 à 12:03
31 août 2010 à 12:03
Bonjour,
Essaie ce code :
Nota, si dans ta cellule E2, tu as déjà l'extension ".xls", tu peux l'enlever du code...
Bonne journée
Essaie ce code :
Sub Mike() Dim Shp As Shape Sheets("Facture").Copy ActiveWindow.DisplayGridlines = False With ActiveWorkbook For Each Shp In .Sheets(1).Shapes Shp.Delete Next Shp .SaveAs Filename:="C:\Factures\" & "Facture_" & Range("E2").Value & ".xls" End With End Sub
Nota, si dans ta cellule E2, tu as déjà l'extension ".xls", tu peux l'enlever du code...
Bonne journée
lml-mike
Messages postés
455
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
121
31 août 2010 à 12:21
31 août 2010 à 12:21
Salut,
Merci de te donner la peine de m'aider :-)
Malheureusement en utilisant ta solution je me retrouve confronté à un problème auquel je m'attendais pas :
http://www.noelshack.com/
___________________
En temps normal, je t'aurais simplement demandé comment enlevé ce message d'erreur...
Le problème, c'est que j'ai quelques champs dans la facture qui sont composés de Label, et de Textbox :
http://www.noelshack.com/
Donc en gros, je suis obligé de les conserver...
Tu aurais une idée pour contourner ce problème ?
Merci encore !
Merci de te donner la peine de m'aider :-)
Malheureusement en utilisant ta solution je me retrouve confronté à un problème auquel je m'attendais pas :
http://www.noelshack.com/
___________________
En temps normal, je t'aurais simplement demandé comment enlevé ce message d'erreur...
Le problème, c'est que j'ai quelques champs dans la facture qui sont composés de Label, et de Textbox :
http://www.noelshack.com/
Donc en gros, je suis obligé de les conserver...
Tu aurais une idée pour contourner ce problème ?
Merci encore !
cousinhub29
Messages postés
1049
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
27 avril 2025
359
31 août 2010 à 12:28
31 août 2010 à 12:28
Re-,
Pour le 2ème problème, le plus simple :
- Tu fais un clic droit sur les boutons que tu ne veux pas copier (en étant passé en mode création, en appuyant sur le 1er bouton de la barre d'outils "Contrôles")
- Format de l'image
- Onglet "Propriétés"
- et tu sélectionnes "Ne pas déplacer ou dimensionner avec les cellules"
Ainsi, à chaque copie, les boutons ne vont pas suivre...
Par contre, pour le 1er message, n'étant pas anglophile confirmé, je suppose que tu es sous Excel 2007??
@ te relire
Pour le 2ème problème, le plus simple :
- Tu fais un clic droit sur les boutons que tu ne veux pas copier (en étant passé en mode création, en appuyant sur le 1er bouton de la barre d'outils "Contrôles")
- Format de l'image
- Onglet "Propriétés"
- et tu sélectionnes "Ne pas déplacer ou dimensionner avec les cellules"
Ainsi, à chaque copie, les boutons ne vont pas suivre...
Par contre, pour le 1er message, n'étant pas anglophile confirmé, je suppose que tu es sous Excel 2007??
@ te relire
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lml-mike
Messages postés
455
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
121
31 août 2010 à 12:35
31 août 2010 à 12:35
Je suis sous Excel 2007, mais je travaille a Cambridge en stage, c'est pour ça que c'est en anglais ^_^
je te fais la traduction :
"Les propriétés suivantes ne peuvent pas être sauvées dans un Classeur libre de toute macro :
* Projet VB.
Pour le sauver avec ces propriétés, cliquez sur No, et ensuite choisissez un format qui accepte l'activation des macros dans le choix du type du fichier.
Pour continuer a sauver le fichier sans aucune macro, cliquez sur Yes"
En gros, il sauvegarde par défaut en désactivant les macros, il doit y avoir une propriété VB pour les activer, non ?
Merci :)
je te fais la traduction :
"Les propriétés suivantes ne peuvent pas être sauvées dans un Classeur libre de toute macro :
* Projet VB.
Pour le sauver avec ces propriétés, cliquez sur No, et ensuite choisissez un format qui accepte l'activation des macros dans le choix du type du fichier.
Pour continuer a sauver le fichier sans aucune macro, cliquez sur Yes"
En gros, il sauvegarde par défaut en désactivant les macros, il doit y avoir une propriété VB pour les activer, non ?
Merci :)
cousinhub29
Messages postés
1049
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
27 avril 2025
359
31 août 2010 à 12:41
31 août 2010 à 12:41
Re-,
sous 2007, essaie ainsi :
N'oublie pas de déterminer les propriétés de tes boutons, comme expliqué supra
Bon courage
sous 2007, essaie ainsi :
Sub Mike() Sheets("Facture").Copy ActiveWindow.DisplayGridlines = False With ActiveWorkbook .SaveAs Filename:= "C:\Factures\" & "Facture_" & Range("E2").Value & ".xlsm", _ FileFormat:= xlOpenXMLWorkbookMacroEnabled End With End Sub
N'oublie pas de déterminer les propriétés de tes boutons, comme expliqué supra
Bon courage
lml-mike
Messages postés
455
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
121
31 août 2010 à 13:42
31 août 2010 à 13:42
On y est presque :D
Les boutons sont conservés avec les codes, mais la valeurs des textboxs n'est pas conservée.
De plus j'ai rigoureusement vérifié les propriétés comme tu me l'as conseillé, mais que je mette "Ne pas déplacer ou dimensionner avec les cellules" ou non, les boutons sont quand même conservés dans les deux cas.
Peut-être ai-je fait une erreur quelque part ?
Les boutons sont conservés avec les codes, mais la valeurs des textboxs n'est pas conservée.
De plus j'ai rigoureusement vérifié les propriétés comme tu me l'as conseillé, mais que je mette "Ne pas déplacer ou dimensionner avec les cellules" ou non, les boutons sont quand même conservés dans les deux cas.
Peut-être ai-je fait une erreur quelque part ?
lml-mike
Messages postés
455
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
121
31 août 2010 à 15:14
31 août 2010 à 15:14
Je les remplie via un autre bouton :-)
Il y a 4 boutons : 1 pour la saisie, 1 pour la sauvegarde, 1 pour l'impression et le dernier pour la réinitialisation.
Celui pour la saisie (qui s'appelle saisie) saisie les textbox nommées Nom, Adresse, CP, Ville et téléphone.
Celui pour l'enregistrement c'est celui que nous sommes en train de faire,
Celui pour l'impression est un tout bête ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Celui pour la réinitialisation ajoute au numéro de facture un +1 et reinitialise les textbox.
Je remplie donc les textbox avec leur propriété .value
_____________________________
on en est donc à :
_______________________________
Donc ici si je laisse la boucle for each, je n'ai plus aucun contrôle ActiveX, cependant si je le met en comment, j'ai tous mes contrôles (même les boutons que je veux pas) mais je n'ai plus les valeurs dans mes textboxs : "Nom, "Adresse", "CP", "Ville" et "téléphone".
Peut etre que c'est parce qu'ils sont en ActiveX ?
Il y a 4 boutons : 1 pour la saisie, 1 pour la sauvegarde, 1 pour l'impression et le dernier pour la réinitialisation.
Celui pour la saisie (qui s'appelle saisie) saisie les textbox nommées Nom, Adresse, CP, Ville et téléphone.
Celui pour l'enregistrement c'est celui que nous sommes en train de faire,
Celui pour l'impression est un tout bête ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True
Celui pour la réinitialisation ajoute au numéro de facture un +1 et reinitialise les textbox.
Je remplie donc les textbox avec leur propriété .value
_____________________________
on en est donc à :
Private Sub Enregistrer_Click() Dim Shp As Shape Sheets("Facture").Copy ActiveWindow.DisplayGridlines = False With ActiveWorkbook ' tous les boutons de la feuille doivent sauter, sauf les labels et les textboxs For Each Shp In .Sheets(1).Shapes 'Ici mes boutons ont des noms précis, peut-on les identifier comme ayant la propriété de bouton ? Shp.Delete Next Shp .SaveAs Filename:="C:\Factures\" & "Facture_" & Nom.Value & "_" & Range("E2").Value & ".xlsm", _ FileFormat:=xlOpenXMLWorkbookMacroEnabled End With Enregistrer.Enabled = False Imprimer.Enabled = True End Sub
_______________________________
Donc ici si je laisse la boucle for each, je n'ai plus aucun contrôle ActiveX, cependant si je le met en comment, j'ai tous mes contrôles (même les boutons que je veux pas) mais je n'ai plus les valeurs dans mes textboxs : "Nom, "Adresse", "CP", "Ville" et "téléphone".
Peut etre que c'est parce qu'ils sont en ActiveX ?
cousinhub29
Messages postés
1049
Date d'inscription
mardi 10 août 2010
Statut
Membre
Dernière intervention
27 avril 2025
359
31 août 2010 à 15:21
31 août 2010 à 15:21
Re-,
Pour les boutons, essaie :
Pour la perte d'infos des TextBoxs, je ne vois pas trop...
Es-tu obligé d'utiliser ce type d'objets?
Une simple cellule ne suffirait pas?
@ te relire
Pour les boutons, essaie :
For Each Shp In .Sheets(1).Shapes If Shp.OLEFormat.progID = "Forms.CommandButton.1" Then Shp.Delete Next Shp
Pour la perte d'infos des TextBoxs, je ne vois pas trop...
Es-tu obligé d'utiliser ce type d'objets?
Une simple cellule ne suffirait pas?
@ te relire
lml-mike
Messages postés
455
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
121
31 août 2010 à 15:28
31 août 2010 à 15:28
If Shp.OLEFormat.progID = "Forms.CommandButton.1" Then Shp.Delete
"L'objet ne supporte pas cette propriété ou cette méthode"
Ca ne marche pas pour moi.
_____________________________
Concernant les textbox, c'est pour le cas ou la facture n'est pas nominative, dans ce cas tous les labels et les textboxs disparaissent de la feuille, donc j'en ai plutôt besoin ...
Je vais regarder sur un autre forum pour cette histoire de contenu non retranscrit...
P.S.: on peut peut-être faire quelque chose avec la propriété controls non ? Je ne m'y connais pas trop mais je l'utilise pour mes formulaires en mettant du contenu dans controls.tag et en le récupérant, je dis ça en l'air hein ^_^
"L'objet ne supporte pas cette propriété ou cette méthode"
Ca ne marche pas pour moi.
_____________________________
Concernant les textbox, c'est pour le cas ou la facture n'est pas nominative, dans ce cas tous les labels et les textboxs disparaissent de la feuille, donc j'en ai plutôt besoin ...
Je vais regarder sur un autre forum pour cette histoire de contenu non retranscrit...
P.S.: on peut peut-être faire quelque chose avec la propriété controls non ? Je ne m'y connais pas trop mais je l'utilise pour mes formulaires en mettant du contenu dans controls.tag et en le récupérant, je dis ça en l'air hein ^_^
lml-mike
Messages postés
455
Date d'inscription
vendredi 16 février 2007
Statut
Contributeur
Dernière intervention
18 novembre 2018
121
1 sept. 2010 à 16:53
1 sept. 2010 à 16:53
J'ai pu régler le problème en utilisant ta propriété :
If Shp.Name Like "CommandButton*" Then Shp.Delete
et en la remplaçant par :
If Shp.Name Like "Bouton_*" Then Shp.Delete
Comme ça, j'ai renommé chaque bouton en bouton_*nom* et le tour est joué !
Merci infiniment, c'était pas facile !!
If Shp.Name Like "CommandButton*" Then Shp.Delete
et en la remplaçant par :
If Shp.Name Like "Bouton_*" Then Shp.Delete
Comme ça, j'ai renommé chaque bouton en bouton_*nom* et le tour est joué !
Merci infiniment, c'était pas facile !!