Macro créer nouvelle onglet

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

bloomby

XLDnaute Occasionnel
Bonjour à tous,
je veux créer une macro qui va me permettre d'ajouter une nouvelle onglet

J'ai essayer avec l'enregistreur de macro mais ca me donne cela
HTML:
Sub Macro9()
'
' Macro9 Macro
'
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets("Sheet2").Select
    Sheets("Sheet2").Name = "P1"
    Range("A1").Select
End Sub

Le problème c'est que l'ajout du nouvelle onglet n'est pas toujours Sheets2
est-ce que vous avez des solutions

merci
 
Re : Macro créer nouvelle onglet

Bonjour Bloomby,

Faut réfléchir un petit peu :

Code:
Sheets.Add After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Select
    Sheets(Sheets.Count).Name = "P1"
    Range("A1").Select

et ne pas oublier qu'en VBA il est préférable de ne pas utiliser Select...

A+
 
Re : Macro créer nouvelle onglet

Bonjour,
Un fil existe sur le sujet;mais voici un code qui crée, un onglet par rapport à un modéle et copie certaine cellules.

Option Explicit

Sub creation()
Dim Sh As Worksheet
Dim i As Integer
Dim j As Integer
Dim nu() As String
For Each Sh In Worksheets
If Sh.Name <> "modéle" Then
If InStr(Sh.Name, "SUIVI ACCU") > 0 Then
j = CInt(Replace(Sh.Name, "modéle", ""))
If j > i Then i = j
End If
End If
Next Sh
With Sheets("modéle")
.Copy after:=Sheets(Sheets.Count)
' On Error GoTo PbNomFeuille
ActiveSheet.Name = "modéle" & i + 1 '' référence"
End With
'
' on met les noms dans un tableau
ReDim nu(Sheets.Count)
For Each Sh In Worksheets
If Sh.Name <> "modéle" Then
If InStr(Sh.Name, "modéle") > 0 Then
j = CInt(Replace(Sh.Name, "modéle", ""))
nu(j) = Sh.Name
End If
End If
Next Sh
' on recopie les données de l'avant dernier dans le dernier
For j = UBound(nu) To LBound(nu) Step -1
If nu(j) <> "" Then
i = 1
If j > 1 Then
Do
If nu(j - i) <> "" Then Exit Do
i = i + 1
If i > Sheets.Count Then Exit Do ' sortie si problème
Loop

i = j - i
Call recopie(nu(i), nu(j))
Else
Call recopie("modéle", nu(j))
End If
End If
Next j
End Sub

@+
 
Re : Macro créer nouvelle onglet

Bonjour Laplayast,
Merci de ton aide, par contre je ne crois pas que j'ai besoin d'un tel code
j'ai lue plusieurs fil j'ai fais certains tests et je crois que je vais opter pour la solution qui ressemble plus à cela.

Sname = "P1"

Sheets.Add After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Select
Sheets(Sheets.Count).Name = "P1"
Range("A1").Select

If Sheets(i).Name = Sname Then
Exit Sub
End If
 
Dernière édition:
Re : Macro créer nouvelle onglet

Re bloomby, salut laplayast,

Cela devient plus sérieux en effet, mais on peut faire simple :

Code:
Sub Macro1()
Sheets.Add After:=Sheets(Sheets.Count)
With Sheets(Sheets.Count)
Application.DisplayAlerts = False
On Error Resume Next
.Name = "P1"
If Err Then .Delete: GoTo 1
.Activate
Range("A1").Select
1 On Error GoTo 0
Application.DisplayAlerts = True
End With
'------------suite du code
End Sub

A+
 
Re : Macro créer nouvelle onglet

Re,

Oui, mais une solution plus élégante je pense :

Code:
Sub Macro1()
'--------------------
On Error Resume Next
If IsError(Sheets("P1").Name) Then
Sheets.Add After:=Sheets(Sheets.Count)
With Sheets(Sheets.Count)
.Name = "P1"
.Activate
Range("A1").Select
End With
End If
On Error GoTo 0
'------------'suite du code
End Sub
 
- 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 Question code VBA
Réponses
2
Affichages
616
L
Réponses
1
Affichages
1 K
L
C
Réponses
4
Affichages
1 K
cecenico
C
M
  • Question Question
Réponses
3
Affichages
815
Mr.Adrien
M
Retour