Dispatcher feuille excel en plusieurs onglets

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

V

VH1929

Guest
Bonjour

Je souhaiterais dispatcher une feuille excel en plusieurs onglets portant chacun le nom du contenu de la colonne C
 

Pièces jointes

Re : Dispatcher feuille excel en plusieurs onglets

Bonjour VH1929, bienvenue sur XLD,

Créer les feuilles si elles n'existent pas ne pose aucun problème :

Code:
Sub Onglets()
Dim r As Range
Set r = Range("C3", Range("C" & Rows.Count).End(xlUp))
If r.Row < 3 Then Exit Sub
Application.ScreenUpdating = False
On Error Resume Next
For Each r In r
  If IsError(Sheets(CStr(r))) Then
    Sheets.Add After:=Sheets(Sheets.Count)
    Sheets(Sheets.Count).Name = r
  End If
  'et après ???
Next
End Sub
Comme vous ne dites pas ce qu'il faut faire ensuite avec ces feuilles je suppose que votre niveau en VBA vous permet de continuer tout seul 🙄

A+
 
Re : Dispatcher feuille excel en plusieurs onglets

Bonsoir à tous


Job75 (tu ne m'en voudras pas 😉)
Avant d'aller au dodo, juste une petite modif sur ton code (histoire de souhaiter une bonne nuit ) 😉
Code:
Sub OngletsBis()
Dim r As Range
Set r = Range("C3", Range("C" & Rows.Count).End(xlUp))
If r.Row < 3 Then Exit Sub
Application.ScreenUpdating = False
On Error Resume Next
For Each r In r
  If IsError(Sheets(CStr(r))) Then
    Sheets.Add(After:=Sheets(Sheets.Count)).Name = r
  End If
  'et après ???
Next
End Sub
 
Re : Dispatcher feuille excel en plusieurs onglets

Tout d abord merci pour votre réponse.

Je sui complétement novice en VBA donc un peu beaucoup perdu

j ai testé le code , j ai bien les feuille créés mais je souhaiterais le report des données et du tableau

de plus comment utiliser cette macro pour d autres tableau avec la même demande mais avec des colonnes et lignes supplémentaires

me
 
Re : Dispatcher feuille excel en plusieurs onglets

Bonjour VH1929, hello JM,

(...) je souhaiterais le report des données et du tableau

de plus comment utiliser cette macro pour d autres tableau avec la même demande mais avec des colonnes et lignes supplémentaires

Vous ne voyez pas que c'est très vague comme explications ?

Quand on veut se lancer dans la programmation il faut être très précis, VBA a horreur du flou artistique.

A+
 
Re : Dispatcher feuille excel en plusieurs onglets

Bonsoir VH1929,

Novice en VBA il va falloir vous accrocher pour comprendre cette macro :

Code:
Sub MAJ_feuilles()
Dim F As Worksheet, col%, P As Range, ncol%, d As Object, i&, j%
Application.ScreenUpdating = False
On Error Resume Next
Set F = Feuil1 'CodeName, à adapter
col = 3 'n° de colonne, à adapter
F.AutoFilterMode = False 's'il y a le filtre automatique
Set P = F.Rows("2:" & F.Cells(F.Rows.Count, col).End(xlUp).Row).Cells
ncol = P(1, F.Columns.Count).End(xlToLeft).Column 'dernière colonne
Set d = CreateObject("Scripting.Dictionary") 'pour éviter les doublons
For i = 2 To P.Rows.Count
  If P(i, col) <> "" And Not d.exists(P(i, col).Value) Then
    d(P(i, col).Value) = ""
    '---création de la feuille si elle n'existe pas---
    If IsError(Sheets(CStr(P(i, col)))) Then _
      Sheets.Add(After:=Sheets(Sheets.Count)).Name = P(i, col)
    With Sheets(CStr(P(i, col)))
      '---mise en forme---
      .Cells.Delete 'RAZ
      P.Rows(0).Copy .[A1]
      For j = 1 To ncol
        .Columns(j).ColumnWidth = P(, j).ColumnWidth
      Next
      '---filtrage et remplissage de la feuille---
      P.AutoFilter col, P(i, col) 'filtre automatique
      P.SpecialCells(xlCellTypeVisible).Copy .[A2]
    End With
  End If
Next
F.AutoFilterMode = False 'suppression du filtre
F.Activate
End Sub
J'ai mis des commentaires pour vous guider.

Fichier joint.

A+
 

Pièces jointes

Dernière édition:
Re : Dispatcher feuille excel en plusieurs onglets

Bonjour VH1929, le forum,

Une solution différente avec cette fois 2 macros.

Dans Module1 :

Code:
Sub Création_feuilles()
Dim col%, r As Range
Application.ScreenUpdating = False
On Error Resume Next
With Feuil1 'CodeName de la feuille source, à adapter
  col = 3 'n° de colonne, à adapter
  Set r = .Cells(3, col).Resize(Application.Match("zzz", .Columns(col)) - 2)
  If Not r Is Nothing Then
    For Each r In r
      If r <> "" Then If IsError(Sheets(CStr(r))) Then _
        Sheets.Add(After:=Sheets(Sheets.Count)).Name = r
    Next
    .Activate
  End If
End With
End Sub
Dans ThisWorkbook :

Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
Dim col%, af As Boolean, P As Range, ncol%, i%
With Feuil1 'CodeName de la feuille source, à adapter
  col = 3 'n° de colonne, à adapter
  If Application.CountIf(.Columns(col), Sh.Name) Then
    Application.ScreenUpdating = False
    af = .AutoFilterMode 'état du filtre automatique
    .AutoFilterMode = False
    Set P = .UsedRange.Offset(1).EntireRow.Cells
    ncol = P(1, .Columns.Count).End(xlToLeft).Column 'dernière colonne
    '---mise en forme---
    Sh.Cells.Delete 'RAZ
    P.Rows(0).Copy Sh.[A1]
    For i = 1 To ncol
      Sh.Columns(i).ColumnWidth = P(, i).ColumnWidth
    Next
    '---filtrage et remplissage de la feuille---
    P.AutoFilter col, Sh.Name 'filtre automatique
    P.SpecialCells(xlCellTypeVisible).Copy Sh.[A2]
    .AutoFilterMode = af 'remise à l'état initial
  End If
End With
End Sub
Elle se déclenche quand on active une feuille.

Fichier (2).

A+
 

Pièces jointes

Re : Dispatcher feuille excel en plusieurs onglets

Re,

Pour répondre à cette question :

de plus comment utiliser cette macro pour d autres tableau avec la même demande mais avec des colonnes et lignes supplémentaires

s'il y a plusieurs feuilles de base, on utilisera les mêmes codes dans des macros paramétrées.

Il faut que les tableaux aient tous 2 lignes de titres, en lignes 1 et 2.

Fichiers (1 bis) et (2 bis).

A+
 

Pièces jointes

Dernière édition:
Re : Dispatcher feuille excel en plusieurs onglets

Re,

Les 2 solutions jointes me paraissent meilleures.

Les tableaux sont maintenant nommés.

Ils peuvent être dans la même feuille ou dans des feuilles différentes, peu importe.

A+
 

Pièces jointes

Dernière édition:
Re : Dispatcher feuille excel en plusieurs onglets

Bonjour VH1929, job75.


Un autre contribution au problème.
Le mode d'emploi est dans la pièce jointe.


ℝOGER2327
#7360


Samedi 28 Palotin 141 (Nativité de Saint Satie, Grand Parcier de l’Église d’Art - fête Suprême Quarte)
28 Floréal An CCXXII, 5,3053h - buglosse
2014-W20-6T12:43:58Z
 

Pièces jointes

Re : Dispatcher feuille excel en plusieurs onglets

Suite...


Il manque une ligne dans la procédure Macro1. Au lieu de :​
VB:
        a = .Range(.[B1], .Cells(.Rows.Count, 1).End(xlUp)).Value
il devrait y avoir :​
VB:
        a = .Range(.[B1], .Cells(.Rows.Count, 1).End(xlUp)).Value
        ReDim Preserve a(1 To UBound(a), 1 To 1)
Mais ça n'a pas d'autre conséquence fâcheuse qu'un petit gâchis de mémoire...​


ℝOGER2327
#7361


Samedi 28 Palotin 141 (Nativité de Saint Satie, Grand Parcier de l’Église d’Art - fête Suprême Quarte)
28 Floréal An CCXXII, 6,4426h - buglosse
2014-W20-6T15:27:44Z
 
Dernière édition:
- 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

Réponses
7
Affichages
179
Réponses
5
Affichages
701
Réponses
43
Affichages
837
Réponses
4
Affichages
266
Retour