XL 2019 Création automatique des onglets en fonction de critères

rmjunivers

XLDnaute Junior
bonjour et bonne année 2021!

je suis un amateur d'Excel, j'ai un souci et je sollicite votre aide.

en effet j'ai un fichier Excel avec une colonne qui contient des informations que je souhaite scinder par onglet regroupés par type d'informations.

la colonne à regrouper c'est "C"
merci de votre aide en attache le fichier.
 

Pièces jointes

  • mise_à_calendrier_relève.xlsx
    842.1 KB · Affichages: 22

JHA

XLDnaute Barbatruc
Bonjour à tous,

Si joint un début de piste par TCD

Tu peux en créer d'autres suivant tes critères mais en colonne "C" il y a 43 noms différents.
J'ai supprimé beaucoup de lignes au tableau car trop volumineux pour un envoi sur le forum.
Il te suffit de recopier les lignes manquantes à la suite du tableau.

JHA
 

Pièces jointes

  • mise_à_calendrier_relève rev1.xlsx
    764.8 KB · Affichages: 4

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Rmjunivers, JHA,
En PJ un essai avec ce que j'ai compris :
Pour chaque nom de DESC_READING_CENTER, on créé un onglet où on range que les données concernant ce centre.
Le bouton "Supprime les onglets" permet de tout supprimer pour obtenir un fichier léger, sinon il est assez lourd avec tous ces onglets.
 

Pièces jointes

  • mise_à_calendrier_relève.xlsm
    937.7 KB · Affichages: 9

sylvanu

XLDnaute Barbatruc
Supporter XLD
Voilà, avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [C2:C1000]) Is Nothing Then
        If Target = "" Then Exit Sub
        NomOnglet = Target.Value
        Sheets(NomOnglet).Select
        Sheets(NomOnglet).Range("A1").Select
    End If
Fin:
End Sub
Et comme la question suivante va être "Comment faire quand on est sur un onglet pour revenir sur l'onglet principal, car j'ai beaucoup d'onglets ?" 🤣
Il suffit de d'appuyer sur la touche "²" ( qui généralement ne sert quasiment à rien ) avec :
Code:
Sub Workbook_Open()
     Application.OnKey "²", "ActiveOnglet"
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
     Application.OnKey "²"
End Sub
et
Sub ActiveOnglet()
    Sheets("Onglets").Select
End Sub
 

Pièces jointes

  • mise_à_calendrier_relève2.xlsm
    926 KB · Affichages: 8

sylvanu

XLDnaute Barbatruc
Supporter XLD
Peut être une version plus ergonomique en PJ, puisqu'il y a de très nombreux onglets.
Tous les onglets sont masqués.
Lorsqu'on clique sur un nom, l'onglet apparait et est affiché.
Quand on clique sur l'onglet "Onglets" les onglets re disparaissent.
 

Pièces jointes

  • mise_à_calendrier_relève3.xlsm
    927.6 KB · Affichages: 6

AKOLIAI

XLDnaute Nouveau
Voilà, avec :
VB:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Fin
    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [C2:C1000]) Is Nothing Then
        If Target = "" Then Exit Sub
        NomOnglet = Target.Value
        Sheets(NomOnglet).Select
        Sheets(NomOnglet).Range("A1").Select
    End If
Fin:
End Sub
Et comme la question suivante va être "Comment faire quand on est sur un onglet pour revenir sur l'onglet principal, car j'ai beaucoup d'onglets ?" 🤣
Il suffit de d'appuyer sur la touche "²" ( qui généralement ne sert quasiment à rien ) avec :
Code:
Sub Workbook_Open()
     Application.OnKey "²", "ActiveOnglet"
End Sub
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
     Application.OnKey "²"
End Sub
et
Sub ActiveOnglet()
    Sheets("Onglets").Select
End Sub
Bonjour @sylvanu,
Je sis novice dans le domaine des MACROS VBA,
J'ai 4 onglets,
Onglet (1) : je rentre mes informations
Onglet 2
Onlget 3
Onglet 4
Le but étant de faire une sélection multiple des onglets 2, 3 et 4 pour les imprimer derrière, mais la sélection des onglets est sous conditions qui se trouve en Onglet 1,
Onglet 1 :
Si cellule A1 = X
Si Cellule A2 = X
Si Cellule A3 = Z

la macro doit sélectionner juste l'onglet 2 et 3 à la fois et les imprimer,

J'arrive à faire une selection multiple mais pas sous condition,

Merci pour l'aide :)
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Si le résultat est correct, pensez à mettre ce post en Résolu.
Pensez aux lecteurs futurs qui cherchent des solutions.
 

rmjunivers

XLDnaute Junior
bonjour à tous,

j'ai un souci le fichier les onglets sont crées mais chaque onglet reconduite tout le contenu du fichier au lieu des élément relatif au nom de l'onglet (colonne "C")… SVP quelle conduite tenir
 

Pièces jointes

  • fichier personnel updated_052021_all.xlsm
    252 KB · Affichages: 2

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonjour Rmjunivers,
En PJ un essai où j'ai rajouté la suppression des lignes inutiles :
VB:
Sub SupprimerDESC_READING_CENTER(Nom)
' Supprime toutes les lignes non concernées par le DESC_READING_CENTER
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
    With .Columns(26)
        .FormulaR1C1 = "=IF(RC[-23]=" & Nom & ",0,1)"   ' Repère les lignes concernées
        .Value = .Value                                 'supprime les formules
        .EntireRow.Sort .Cells, xlDescending            'tri pour regrouper et accélérer
        On Error Resume Next                            'si aucune SpecialCell
        .SpecialCells(xlCellTypeConstants, 1).EntireRow.Delete
        .EntireColumn.Delete                            'supprime la colonne auxiliaire
    End With
End With
With ActiveSheet.UsedRange: End With                    'actualise les barres de défilement
End Sub
 

Pièces jointes

  • mise_à_calendrier_relève3.xlsm
    934.7 KB · Affichages: 6

rmjunivers

XLDnaute Junior
Bonjour Rmjunivers,
En PJ un essai où j'ai rajouté la suppression des lignes inutiles :
VB:
Sub SupprimerDESC_READING_CENTER(Nom)
' Supprime toutes les lignes non concernées par le DESC_READING_CENTER
Application.ScreenUpdating = False
With ActiveSheet.UsedRange
    With .Columns(26)
        .FormulaR1C1 = "=IF(RC[-23]=" & Nom & ",0,1)"   ' Repère les lignes concernées
        .Value = .Value                                 'supprime les formules
        .EntireRow.Sort .Cells, xlDescending            'tri pour regrouper et accélérer
        On Error Resume Next                            'si aucune SpecialCell
        .SpecialCells(xlCellTypeConstants, 1).EntireRow.Delete
        .EntireColumn.Delete                            'supprime la colonne auxiliaire
    End With
End With
With ActiveSheet.UsedRange: End With                    'actualise les barres de défilement
End Sub
bonjour sylvanu et merci déjà pour ton aide,

j'ai essayé mais je me retrouve dans la même situation:
les onglets sont créés mais j'ai dans chaque onglet le contenu de l'onglet principal au de celui relatif au nom de l'onglet colonne "C"

je joins mon fichier.
 

Pièces jointes

  • mise_à_calendrier_relève4.xlsm
    257.4 KB · Affichages: 2

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 370
Messages
2 087 693
Membres
103 641
dernier inscrit
anouarkecita2