vba et nouveau classeur

  • Initiateur de la discussion Initiateur de la discussion bellic
  • 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 !

bellic

XLDnaute Junior
Bonsoir à tous,


Voila j'ai commencé à ecrir une macro me permettant suivant un nom tapé dans un inputbox, m'ouvrir un nouveau classeur excel prenant ce nom.
Cependant je voudrais que dans ce nouveau classeur, chaque onglet s'appel honoraire1 (pour sheet 1), honoraire 2 (pour sheet 2), ainsi de suite.
J'ai un autre problème, à l'heure actuelle, tous mes nouveau classeur s'enregistre par défaut dans mes documents. Je souhaiterais qu'il s'enregistre dans un dossier situé sur mon bureau portant le nom de projet.

Voici mon début de macro :
Sub nouveau()

Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

reponse = InputBox("Nom du projet")

If reponse = False Then
Exit Sub
Else

'On créer l'objet Excel
Set xlApp = CreateObject("Excel.Application")
'On défini le nombre d'onglets (ici 5)
'xlApp.SheetsInNewWorkbook = 5
'On ajoute un classeur
Set xlBook = xlApp.Workbooks.Add
'On donne un nom au classeur
xlBook.SaveAs ("" & Val(reponse) & ".xls")
'On rend le classeur visible
xlApp.Visible = True

End If


End Sub


Merci de votre aide,

Cordialement
 
Bon soir bellic et le forum.
Pour ce qui est de renomer les feuilles voici un code à ajouter après la création du nouveau classeur.

Sub renomerfeuille()
Sheets("Feuil1").Select
Sheets("Feuil1").Name = "honoraire 1"
Sheets("Feuil2").Select
Sheets("Feuil2").Name = "honoraire 2"
Sheets("Feuil3").Select
Sheets("Feuil3").Name = "honoraire 3"
Sheets("Feuil4").Select
Sheets("Feuil4").Name = "honoraire 4"
Sheets("Feuil5").Select
Sheets("Feuil5").Name = "honoraire 5"
End Sub

A +
 
Bonsoir stefan373,
Merci de m'avoir repondu aussi rapidement,

Concernant la sub renommerfeuille, elle prend en compte que 5 feuilles, hors j'aurai besoin que toutes mes feuilles par défaut prennent le nom honoraire (avec honoriare 1 pour la première, honoraire2 pour la deuxième....), sachant que le nombre de feuille est varaible selon les projets traités....
A+
 
Re : vba et nouveau classeur

Salut Bellic,
voici une manière de procéder.

Code:
Sub Test()
Dim Nb_Feuilles As Byte, i As Byte

Nb_Feuilles = Sheets.Count
For i = 1 To Nb_Feuilles
    Sheets(i).Name = "Honoraire " & i
Next i

End Sub

Cordialement,

Étienne
 
Re : vba et nouveau classeur

Bonjour,

essaye ceci, par contre vois pas trop l'interêt de créer un objet application....
Code:
Dim s As Variant, i As Byte
s = Application.InputBox("Nom ?")
If VarType(s) = vbBoolean Then Exit Sub
For i = 1 To Worksheets.Count
    Worksheets(i).Name = s & " " & i
Next i
bonne soirée
@+

Edition : bonsoir Etienne
 
re,

Merci sa marche bien, mais comment faire pour que cela apparaissent directement en propriété du nouveau classeur, et que chaque feuille inséré dans ce classeur prennent la suite.
Ex : Lorsque j'appuit sur mon bouton => nouveau classeur =>nouveau projet (avec nom=azerty)=> directement feuille (avec Honoraire...). et que si je veux insérer une nouvelle feuille dans ce classeur, elle prennent automatiquement le nom honoraire et le chiffre suivant le nombre de feuille précédent.
j'espère être clair,
Merci
 
Re : vba et nouveau classeur

Bonjour Bellic, Etienne

rajoute peut être ceci dans le module "thisworkbook", se déclenche lors de l'insertion d'une nouvelle feuille de calcul dans le classeur :
Code:
Option Explicit
Private Sub Workbook_NewSheet(ByVal Sh As Object)
Dim ws As Worksheet
For Each ws In Worksheets
    If ws.Name <> Sh.Name Then Sh.Name = Split(ws.Name)(0) & " " & Worksheets.Count: Exit For
Next ws
End Sub

En espérant que j'ais bien compris ta demande....

bonne journée
@+
 
Re : vba et nouveau classeur

Bonjour Pierrot93, Etienne2323, et le forum,

Je voudrais que sa marche pour le nouveau classeur (et non pour la matrice).
Par conséquent ne connaissant pas le nom du nouveau classeur, je ne vois pas ou mettre cette sub...
Bonne journée
 
Re : vba et nouveau classeur

Re,

pour écrire du code par le code... :
Code:
Sub test()
Dim x As Integer, code As String
With ActiveWorkbook.VBProject.VBComponents("ThisWorkBook").CodeModule
    x = .CountOfLines
    code = "Private Sub Workbook_NewSheet(ByVal Sh As Object)" & vbCrLf
    code = code & "Dim ws As Worksheet" & vbCrLf
    code = code & "For Each ws In Worksheets" & vbCrLf
    code = code & "If ws.Name <> Sh.Name Then Sh.Name = Split(ws.Name)(0) & "" "" & Worksheets.Count: Exit For " & vbCrLf
    code = code & "Next ws" & vbCrLf
    code = code & "End Sub" & vbCrLf
    .InsertLines x + 1, code
End With
End Sub

Ecrira dans le module "thisworkbook" du classeur actif, attention au niveau de la sécurité, la case à cocher "faire confiance au projet visual basic" doit être cochée...
Sous 2003 => Barre de menu Excel => outils => Macros => Sécurité => onglet "Editeurs approuvés"

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

Discussions similaires

  • Question Question
Microsoft 365 VBA sur outlook
Réponses
14
Affichages
1 K
Retour