Créer un nvx classeur depuis un classeur open

Résolu/Fermé
Mistral_13200 Messages postés 634 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 21 mars 2024 - 5 janv. 2010 à 08:02
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 5 janv. 2010 à 16:59
Bonjour à tous,

Tout d’abord, en cette période de vœux permettez moi de vous présenter tous les miens pour que cette année soit faite de joie et de partage.

Voilà j’ai deux problèmes.
Le premier. A partir d’un classeur « A » Excel, comportant une dizaine de feuilles dont une seule est active à la fois, je souhaiterais créer automatiquement, dans le même répertoire ou se trouve le classeur « A », un nouveau classeur « B » dans lequel je ne copierais qu’une seule feuille du classeur « A ». La feuille copiée portera le même nom et le classeur portera le nom contenu dans une cellule d’une feuille appelée « Menu ».

Le second. Toujours à partir du même classeur « A » je souhaiterais envoyer automatiquement, et sans aucune intervention, une feuille, je dis bien une seule feuille, par Internet. L’adresse Internet sera inscrite dans une cellule de la feuille à envoyer. Il est bien entendu que cette fonction devra être valable pour les navigateurs les plus courants.

J'utilise Office 2003.

En vous remerciant par avance pour votre aide.
Cordialement.
Mistral
A voir également:

2 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
5 janv. 2010 à 10:14
Bonjour,
Pour ta deuxième interrogation, je ne sais pas (encore). Par contre pour la première :
Tu ouvres ton classeur, tape ALT + F11, une fenêtre Visual Basic s'ouvre.
Insertion / Module
Dans la fenêtre copie/colle ce code :

Sub copie_feuille_et_enregistre_sous_nom_feuille()
Dim chemin As String, nomfic As String
chemin = ActiveWorkbook.Path 'stocke dans une variable le chemin d'accès (répertoire) de ton classeur
nomfic = ActiveSheet.Name 'stocke dans une variable le nom de la feuille active
ActiveSheet.Copy 'copie la feuille active dans un nouveau classeur
ActiveWorkbook.SaveAs (chemin & "\" & nomfic & " " & Format(Date, "dd mm yyyy")) 'enregistre ce nouveau classeur dans le même répertoire, sous le nom de la feuille active + la date du jour
ActiveWorkbook.Close 'ferme ce nouveau classeur
End Sub


Pour tester cette procédure, active la feuille que tu veux copier, tape ALT + F8, sélectionnes copie_feuille_et_enregistre_sous_nom_feuille et cliques sur "exécuter".
Pour voir le résultat, va voir dans ton répertoire...
Teste ceci et reviens en cas de problème et/ou pour ta deuxième question.
0
Mistral_13200 Messages postés 634 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 21 mars 2024 4
5 janv. 2010 à 16:20
Bonjour,

J'ai testé la solution pour la création et la sauvegarde d'un classeur et cela fonctionne dans l'absolu. Rajouter la date de création me convient également très bien.
Par contre ce n'est pas la feuille active que je souhaite sauvegarder alors comment remplacer :

nomfic = ActiveSheet.Name

par le nom de la feuille à sauvegarder qui se trouvera dans une cellule de la feuille « Menu ».

D’avance merci.
Cordialement
Mistral
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745 > Mistral_13200 Messages postés 634 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 21 mars 2024
5 janv. 2010 à 16:23
En fait, si je t'ai mis nomfic = ActiveSheet.Name c'est juste que je pensais que tu allais d'abord te placer sur la feuille que tu voulais copier.
Pour choisir de manière définitive ta feuille :
nomfic = Sheets("nom_de_ta_feuille").Name
0
Mistral_13200 Messages postés 634 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 21 mars 2024 4 > pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024
5 janv. 2010 à 16:41
Quelle rapidité...
Mais cela ne réponds pas exactement à mes attentes.
Le nom de la feuille qui sera copiée n'est pas toujours le même.
Pour cela j'ai pensé qu'il était plus judicieux de mettre ce nom dans un cellule de la feuille principale appelée "Menu".
Il faut donc récupérer dans la variable nomfic le nom de la feuille(Menu) et le contenu de la cellule.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745 > Mistral_13200 Messages postés 634 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 21 mars 2024
5 janv. 2010 à 16:59
Si tu veux...
nomfic = Sheets("Menu").Range("A1").Value
'A1 à remplacer par l'adresse de la cellule "à renseigner"
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 745
5 janv. 2010 à 10:27
RE-
Pour ta 2ème question j'ai trouvé ceci :

Sub EnvoiMail()
  Workbooks("UnClasseur").SendMail Recipients:="tartem.pion@mimi.com", _
                          Subject:="Test envoi classeur", _
                          ReturnReceipt:=True
End Sub

ici :
https://forums.commentcamarche.net/forum/affich-2253001-macro-excel-envoi-email-avec-piece-jointe
0
Mistral_13200 Messages postés 634 Date d'inscription mardi 5 août 2008 Statut Membre Dernière intervention 21 mars 2024 4
5 janv. 2010 à 10:34
Merci pour ces réponses.
Je vais tester tout ça et je te tiens au courant.
Encore merci
Cordialement
Mistral
0