Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

ajouter une feuille dans un classeur

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

J

jm-sta

Guest
bonjour à tous,

voici mon problème:
je veux créer, de façon automatique, à partir d'éléments pris sur une même ligne dans un tableau, un nouvel onglet dans le même classeur.
Ces onglets nouvellement créés auront un format prédéfini (selon une trame prédéfinie) et le nom de l'onglet devra être automatique également (égale à une cellule du tableau).

exemple:
le classeur initial = un onglet récap avec un tableau des événements, à chaque création d'un évènement (nouvelle ligne : évènement n), créer un onglet (évènement n).

merci de votre aide et explications...

JM
 
Re : ajouter une feuille dans un classeur

Bonjour à skoobi et job75,
merci de vos actions, suis bloqué de chez bloqué ........😕😕

La VBA semble simple, mais ai encore du mal à comprendre, peut etre mon idée est elle trop farfelue???

encore merci
 
Re : ajouter une feuille dans un classeur

Bonjour,
Depuis un ordi en Normandie... Voici la macro et votre fichier. La feuille "modele" doit toujours être la dernière (à droite). Elle peut être masquée.

Private Sub CommandButton1_Click()
'Analyse Feuil1
If ActiveCell <> "" And ActiveCell.Column = 1 And ActiveCell.Row > 2 Then
a = ActiveCell
b = ActiveCell.Offset(0, 1)
c = ActiveCell.Offset(0, 2)
d = ActiveCell.Offset(0, 3)
e = Array("", "", "", "", "", "", "", "", "", "", "", "")
For i = 0 To 11
If ActiveCell.Offset(i, 0) = a Or ActiveCell.Offset(i, 0) = "" Then
e(i) = ActiveCell.Offset(i, 4)
Else: Exit For
End If
Next
'Activation ou création fiche
On Error Resume Next
Sheets(a).Activate
If ActiveSheet.Name <> a Then
Sheets("modele").Copy before:=Sheets("modele")
Sheets(Sheets.Count - 1).Name = a
Sheets(a).Visible = True
End If
'Remplissage fiche
Sheets(a).[C19] = a
Sheets(a).[D20] = b
Sheets(a).[C21] = c
Sheets(a).[F27] = d
For i = 0 To 11
Sheets(a).[B38].Offset(i, 0) = e(i)
Next
End If
End Sub

A+
 
Dernière édition:
Re : ajouter une feuille dans un classeur

Dans la feuille "modele", j'ai supprimé la formule =AUJOURDHUI() de la cellule H15. Dans la fiche, cette cellule est renseignée uniquement à la création.
Je pense que c'est mieux, mais vous n'êtes pas obligé de prendre cette version.

Private Sub CommandButton1_Click()
'Analyse Feuil1
ActiveCell.Select
If ActiveCell <> "" And ActiveCell.Column = 1 And ActiveCell.Row > 2 Then
a = ActiveCell
b = ActiveCell.Offset(0, 1)
c = ActiveCell.Offset(0, 2)
d = ActiveCell.Offset(0, 3)
e = Array("", "", "", "", "", "", "", "", "", "", "", "")
For i = 0 To 11
If ActiveCell.Offset(i, 0) = a Or ActiveCell.Offset(i, 0) = "" Then
e(i) = ActiveCell.Offset(i, 4)
Else: Exit For
End If
Next
'Activation ou création fiche
On Error Resume Next
Sheets(a).Activate
If ActiveSheet.Name <> a Then
Sheets("modele").Copy before:=Sheets("modele")
Sheets(Sheets.Count - 1).Name = a
Sheets(a).Visible = True
End If
'Remplissage fiche
If Sheets(a).[H15] = "" Then
Sheets(a).[H15] = Now
End If

Sheets(a).[C19] = a
Sheets(a).[D20] = b
Sheets(a).[C21] = c
Sheets(a).[F27] = d
For i = 0 To 11
Sheets(a).[B38].Offset(i, 0) = e(i)
Next
End If
End Sub

A+
 

Pièces jointes

Re : ajouter une feuille dans un classeur

Bonjour Job75,

viens de porendre connaissance de votre travail, avant même le moindre test, je tiens à vous remercier de ce travail.

Je reviens vers vous des les essais!!

merci encore
 
Re : ajouter une feuille dans un classeur

Re Job75,

super, on est à 95% du résultat,
et en plus, avec de l'intuition, je vais pouvoir adapter les 'formules'!!

mais maintenant, je voudrai:
1 - changer le bouton : son nom, son format, son action,
2 - ouvrir la 'fiche' dans un nouveau classeur dont le nom du classeur serait le nom de l'onglet

merci d'avance
 
Re : ajouter une feuille dans un classeur

Re Job 75

je reformule, désolé, j'ai écris trop vite!!!😕😕

est il possible de :
1 - changer le bouton : son nom, son format, son action,...
2 - ouvrir la 'fiche' dans un nouveau classeur dont le nom du classeur serait le nom de l'onglet

merci d'avance
🙂
 
Re : ajouter une feuille dans un classeur

Bonjour le forum,
bonjour jm-sta, je réponds à vos 2 questions.

1. Dans VBA, menu Execution : Mode création. Puis cliquez sur le bouton "Fiche" avec le bouton droit de la souris, allez dans Propriétés. Modifiez Caption pour modifier le libellé du bouton. Pour les dimensions, modifiez directement le bouton.
Pour modifier l'action du bouton, modifiez bien sûr la macro (sauf la 1ère ligne).

2. La création de fichiers pour les fiches ne pose pas de problème, mais je trouve cette solution moins élégante que la création d'onglets.
Vous trouverez ci-dessous la nouvelle macro (en rouge les lignes modifiées) et votre fichier. Attention :
- vous devez d'abord créer un fichier "modele" (modele.xls) contenant une seule feuille "modele"
- tous les fichiers du projet doivent être dans le même dossier : même chemin d'accès.

Private Sub CommandButton1_Click()
'Analyse Feuil1
ActiveCell.Select
If ActiveCell <> "" And ActiveCell.Column = 1 And ActiveCell.Row > 2 Then
a = ActiveCell
b = ActiveCell.Offset(0, 1)
c = ActiveCell.Offset(0, 2)
d = ActiveCell.Offset(0, 3)
e = Array("", "", "", "", "", "", "", "", "", "", "", "")
For i = 0 To 11
If ActiveCell.Offset(i, 0) = a Or ActiveCell.Offset(i, 0) = "" Then
e(i) = ActiveCell.Offset(i, 4)
Else: Exit For
End If
Next
chemin = ActiveWorkbook.Path & "\"
'Activation ou ouverture ou création fichier fiche
On Error Resume Next
Windows(a & ".xls").Activate
If Sheets(1).Name <> a Then
Workbooks.Open Filename:=chemin & a & ".xls"
If Sheets(1).Name <> a Then
On Error GoTo 0
Workbooks.Open Filename:=chemin & "modele.xls"
ActiveWorkbook.SaveAs Filename:=chemin & a & ".xls"
Sheets(1).Name = a
End If
End If

'Remplissage fiche
If Sheets(1).[H15] = "" Then
Sheets(1).[H15] = Now
End If
Sheets(1).[C19] = a
Sheets(1).[D20] = b
Sheets(1).[C21] = c
Sheets(1).[F27] = d
For i = 0 To 11
Sheets(1).[B38].Offset(i, 0) = e(i)
Next
ActiveWorkbook.Save
End If
End Sub

A+
 

Pièces jointes

Re : ajouter une feuille dans un classeur

Ci-joint une autre solution pour créer les fichiers : elle ne fait intervenir qu'un seul enregistrement en désactivant les alertes.
Par ailleur, j'ai mis le remplissage de H15 uniquement dans la création.

Private Sub CommandButton1_Click()
'Analyse Feuil1
ActiveCell.Select
If ActiveCell <> "" And ActiveCell.Column = 1 And ActiveCell.Row > 2 Then
a = ActiveCell
b = ActiveCell.Offset(0, 1)
c = ActiveCell.Offset(0, 2)
d = ActiveCell.Offset(0, 3)
e = Array("", "", "", "", "", "", "", "", "", "", "", "")
For i = 0 To 11
If ActiveCell.Offset(i, 0) = a Or ActiveCell.Offset(i, 0) = "" Then
e(i) = ActiveCell.Offset(i, 4)
Else: Exit For
End If
Next
chemin = ActiveWorkbook.Path & "\"
'Activation ou ouverture ou création fichier fiche
On Error Resume Next
Windows(a & ".xls").Activate
If Sheets(1).Name <> a Then
Workbooks.Open Filename:=chemin & a & ".xls"
If Sheets(1).Name <> a Then
On Error GoTo 0
Workbooks.Open Filename:=chemin & "modele.xls"
Sheets(1).Name = a
Sheets(1).[H15] = Now
End If
End If
'Remplissage fiche
Sheets(1).[C19] = a
Sheets(1).[D20] = b
Sheets(1).[C21] = c
Sheets(1).[F27] = d
For i = 0 To 11
Sheets(1).[B38].Offset(i, 0) = e(i)
Next
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:=chemin & a & ".xls"

End If
End Sub

A+
 

Pièces jointes

Re : ajouter une feuille dans un classeur

Bonjour Job75,

je ne comprends pas ta réponse à la question 1, je ne parviens pas à modifier ce bouton et ses commandes!!

merci d'avance
 
Re : ajouter une feuille dans un classeur

Là je ne comprends pas ce qui vous arrive. Je répète :
- Alt+F11 pour accéder à VBA
- menu Exécution, cliquer sur Mode création
- activer la feuille de calcul
- clic droit sur le bouton, le bouton est prêt à être modifié et le menu contextuel apparaît
- cliquer sur Propriétés, la fenêtre propriétés s'affiche, dans Caption modifier le libellé du bouton (ne pas changer le nom CommanButton1)
- fermer la fenêtre Propriétés et donner au bouton les dimensions désirées
- désactiver le mode création.
C'est comme ça que je fais. Si ça ne marche pas pour vous, je ne sais que faire !
A vous lire et A+
 
Re : ajouter une feuille dans un classeur

Autant pour moi,
ce doit être le stress ou la précipitation !!😕😕

cette dernière version sans les alertes me plait bien..

merci encore
😱
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…