Création d'un nouvel onglet

ArnaudBernardeau

XLDnaute Junior
Bonjour,

Je cherche à réaliser quelque chose qui est au dessus de mes compétences donc je me tourne vers vous dans l'espoir que quelqu'un puisse m'aider.

J'ai un fichier de reporting de données qui se met à jour tous les jours (je le joints en PJ). J'aimerai conserver une photo de ce fichier tous les mois afin de pouvoir me constituer un historique de mes données.

Pour cela, je souhaiterai faire deux choses que je n'arrive pas à réliser pour le moment.

1) Créer un nouvel onglet de manière automatique tous les 28 du mois avec le fichier "figé", ça serait donc une version image ou seulement les valeurs, afin que les formules ne s'appliquent plus... Chaque onglet serait nommé selon le mois de l'enregistrement.

2) Avoir une cellule avec un fichier déroulant comprenant les mois enregistrés, d'où on peut accéder aux onglets créés. Ce point là est un peu gadget il est vrai, mais j'aimerai pouvoir masquer les onglets lors de la diffusion du fichier pour des raisons de limite d'accessibilité. Si le nouvel onglet créé pouvait être masqué automatiquement dès son apparition, ça serait encore mieux mais je ne sais pas si c'est réalisable...

J'espère avoir été assez clair, je vous remercie d'avance pour votre aide.

Cordialement.
 

ArnaudBernardeau

XLDnaute Junior
Re : Création d'un nouvel onglet

Bonjour, quelqu'un pourrait-il m'aider s'il vous plaît? J'arrive à créer le nouvel onglet en copiant seulement les valeurs mais je n'arrive pas à faire le menu déroulant et à demander que chaque item de la liste affiche l'onglet correspondant...

Si une personne pouvait me dépanner, je lui en serait très reconnaissant!

Merci d'avance,
 

PMO2

XLDnaute Accro
Re : Création d'un nouvel onglet

je n'arrive pas à faire le menu déroulant et à demander que chaque item de la liste affiche l'onglet correspondant...

Bonjour,

Voir l'exemple en pièce jointe.
 

Pièces jointes

  • Exemple_pmo.xls
    78.5 KB · Affichages: 52
  • Exemple_pmo.xls
    78.5 KB · Affichages: 39
  • Exemple_pmo.xls
    78.5 KB · Affichages: 36

job75

XLDnaute Barbatruc
Re : Création d'un nouvel onglet

Bonjour ArnaudBernardeau, PMO2,

Il n'est pas du tout nécessaire de se limiter au 28 du mois.

Et il est mieux de créer (manuellement) toutes les feuilles des mois dès le début.

En J6 mettre une liste de validation classique.

Le code dans ThisWorkbook :

Code:
Private Sub Workbook_Open()
Workbook_SheetChange Sheets("Objectif"), Sheets("Objectif").[A1]
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
'---mise à jour de la feuille du mois---
If Sh.Name = "Objectif" Then
  Dim i As Byte, w As Worksheet
  Application.EnableEvents = False 'désactive les évènements
  Application.CopyObjectsWithCells = True 'pour que les objets soient copiés
  For i = 1 To 12
    Set w = Sheets(Format("1/" & i, "mmmm"))
    If i >= Month(Date) Then w.Cells.Delete 'RAZ
    If i = Month(Date) Then
      Sh.Cells.Copy w.[A1]
      w.[D11,E15].NumberFormat = "@" 'format Texte
      w.UsedRange = w.UsedRange.Value 'supprime les formules
    End If
  Next
  Sh.[A1].Copy Sh.[A1] 'vide le presse-papiers
  Application.EnableEvents = True 'réactive les évènements
End If
'---active la feuille sélectionnée---
If Not Intersect(Source, Sh.[J6]) Is Nothing Then _
  On Error Resume Next: Sheets(CStr(Sh.[J6])).Activate
End Sub
Attention : il y avait un espace superflu dans le nom de l'ongler "Objectif"...

Fichier joint.

A+
 

Pièces jointes

  • Exemple(1).xls
    470.5 KB · Affichages: 34
  • Exemple(1).xls
    470.5 KB · Affichages: 35
  • Exemple(1).xls
    470.5 KB · Affichages: 39

job75

XLDnaute Barbatruc
Re : Création d'un nouvel onglet

Re,

La suppression des cellules ne supprimait pas le graphique, il fallait une instruction spécifique.

Ensuite la redéfinition de la plage source du nouveau graphique n'est guère difficile :

Code:
Private Sub Workbook_Open()
Workbook_SheetChange Sheets("Objectif"), Sheets("Objectif").[A1]
End Sub

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
'---mise à jour de la feuille du mois---
If Sh.Name = "Objectif" Then
  Dim i As Byte, w As Worksheet
  Application.EnableEvents = False 'désactive les évènements
  Application.CopyObjectsWithCells = True 'pour que les objets soient copiés
  For i = 1 To 12
    Set w = Sheets(Format("1/" & i, "mmmm"))
    If i >= Month(Date) Then 'RAZ
      w.DrawingObjects.Delete 'supprime tous les objets
      w.Cells.Delete
    End If
    If i = Month(Date) Then
      Sh.Cells.Copy w.[A1]
      w.[D11,E15].NumberFormat = "@" 'format Texte
      w.UsedRange = w.UsedRange.Value 'supprime les formules
      If w.ChartObjects.Count Then _
        w.ChartObjects(1).Chart.SetSourceData Source:=w.[B7:C9] 'redéfinition
    End If
  Next
  Sh.[A1].Copy Sh.[A1] 'vide le presse-papiers
  Application.EnableEvents = True 'réactive les évènements
End If
'---active la feuille sélectionnée---
If Not Intersect(Source, Sh.[J6]) Is Nothing Then _
  On Error Resume Next: Sheets(CStr(Sh.[J6])).Activate
End Sub
Fichier (2).

Bonne nuit et A+
 

Pièces jointes

  • Exemple(2).xls
    156.5 KB · Affichages: 35
  • Exemple(2).xls
    156.5 KB · Affichages: 42
  • Exemple(2).xls
    156.5 KB · Affichages: 24
Dernière édition:

job75

XLDnaute Barbatruc
Re : Création d'un nouvel onglet

Bonjour ArnaudBernardeau, le forum,

Remarques sur les protections :

- il est logique de protéger la feuille "Objectif" (mot de passe toto)

- les feuilles des mois ne doivent pas être protégées mais on peut empêcher les modifications avec Application.Undo.

Fichier (3).

A+
 

Pièces jointes

  • Exemple(3).xls
    160.5 KB · Affichages: 35
  • Exemple(3).xls
    160.5 KB · Affichages: 49
  • Exemple(3).xls
    160.5 KB · Affichages: 52

ArnaudBernardeau

XLDnaute Junior
Re : Création d'un nouvel onglet

Bonjour job75,

Merci pour tes remarques et tes modifs, c'est parfait. J'avais pensé créer un graphique sur chaque feuille mois qui prendrait ses données dans les cellules fixes du même onglet. Ainsi lorsque ces cellules se remplissent (en fonction du mois), le graphique se créé. Mais cela nécessitait de ne pas copier le graphique depuis la feuille Objectif.

En tout cas ta solution fonctionne très bien, merci d'y avoir consacré du temps.

@+
 

ArnaudBernardeau

XLDnaute Junior
Re : Création d'un nouvel onglet

Re,

J'ai encore du mal à bien comprendre tout le code, du coup je n'arrive pas à régler un petit soucis:

J'ai rajouté un Bouton de Commande sur ma page Objectif avec une macro permettant de revenir sur une autre feuille. J'aimerai que ce bouton soit copié avec le reste sur les différents onglets, en conservant une même macro pour revenir sur l'onglet "Objectif", mais je n'y arrive pas.

J'ai essayé d'appeler sheets("Objectif).Shape("Bouton1").Copy dans la macro et de le coller sur les onglets mais ça ne fonctionne pas...

Aurais-tu une piste à m'indiquer stp?

@+
 

Pièces jointes

  • Exemple.xls
    136.5 KB · Affichages: 28
  • Exemple.xls
    136.5 KB · Affichages: 36
  • Exemple.xls
    136.5 KB · Affichages: 37

job75

XLDnaute Barbatruc
Re : Création d'un nouvel onglet

Bonjour ArnaudBernardeau,

Je ne vois vraiment pas l'intérêt d'un bouton pour aller sur la feuille "Objectif" puisque cette feuille existe dans la liste de validation.

Et si vous voulez aller sur la feuille "MENU" ajoutez-la dans la liste.

Sinon au lieu d'un bouton "ActiveX" mettez un bouton "Formulaire".

Par ailleurs, de retour à Paris, je constate un phénomène inexplicable sur Excel 2003.

Quand je ferme les fichiers (2) ou (3) il y a un message signalant des références externes non valides.

Cela ne vient pas du graphique car il y a ce message si on le supprime.

A+
 

Discussions similaires

Réponses
13
Affichages
140

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16