IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Création onglet VBA EXCEL Tri alphabétique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 13
    Par défaut Création onglet VBA EXCEL Tri alphabétique
    Bonjour à tous,

    voici mon code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Sub Creation_CS()
     
    '''''''''''''''''''''''''
    '''''signer la macro'''''
    '''''''''''''''''''''''''
     
     Dim Comptes_section As Range 'Définition de la plage de cellules
     Dim Ws As Worksheet
     Dim x As Integer
     
     'Ensuite, je lui affecte l'ensemble des cellules de la zone A2:A1048576 (Rows.Count)
     'qui contiennent des données (SpecialCells(xlCellTypeConstants))
     
     Set Comptes_section = Sheets("INDEX").Range("B3:B" & Rows.Count).SpecialCells(xlCellTypeConstants)
     
     'La boucle suivante balaie toutes les cellules de la plage définie
     
     For Each Cel In Comptes_section
        Sheets("Maquette_D").Select
        Cells.Copy
        Sheets.Add after:=Sheets("Maquette_D")
     
        ActiveSheet.Paste
     
     'Enfin, je récupère la ligne de la cellule en cours de lecture :
     
        ActiveSheet.Cells(1, 2) = Sheets("INDEX").Cells(Cel.Row, 2)
        ActiveSheet.Name = Cells(1, 2) 'nom des feuilles
     
    ' Application des mises en forme à toutes les feuilles attention il faut que les feuilles soient toutes visibles
     
            Application.ScreenUpdating = False
                   For i = 1 To Sheets.Count
                        Sheets(i).Visible = xlSheetVisible
                        Sheets(i).Activate
                        ActiveWindow.Zoom = 70 'zoom 70% sur toutes les feuilles
                    Next i
                Application.ScreenUpdating = True
     
     'Créer une ligne de code pour appliquer la mise en forme ci dessus à toutes les feuilles sauf la première
     'créer une macro qui en fonction de DR; AG; SE compile les données (calcul)
     
     'créer une ligne de code pour mettre la mise en forme du ficli en affichage 70% et sans cadriage
     Next
     End Sub
    j'aimerai que lorsque je crée mes onglets via une base (feuille index), que les onglets se crée à la suite de la feuille "Maquette_D" mais par ordre alphabétique.

    je débute en VBA mais j'ai beau tourner le code je ne trouve pas la solution ...

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Tu dis bien "à la suite d'un onglet déjà existant"
    Tu ne précises toutefois pas si entre cet onglet et un autre éventuellement lui aussi existant.
    Je vais dans ces conditions de répondre de sorte à "universaliser" :
    1) création d'un array des onglets à ajouter
    2) tri des éléments de cet array (tu as sur ce forum, qui dispose d'un moteur de recherche) une foultitude de discussions et/ou codes déposés qui traient de ce tri
    3) ajout du premier élément à la suite de ton onglet "Maquette_D"
    4) ajout des autres éléments de cet array à la suite du dernier ainsi ajouté.
    Les opérations 3 et 4 sont d'une très grande simplicité

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2014
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 13
    Par défaut
    Bonjour,

    je m'excuse pour mon manque de clarté.
    Le code que j'ai posté me permet de dupliquer les onglets selon une table qui définit le nom des onglets créés.
    Le problème est le suivant:
    les onglets se créent mais pas dans un ordre alphabétique (ils se créent dans un ordre décroissant ...)
    Mon but est le suivant:
    je souhaite que les onglets se crée a la suite d'une feuille D (qui me permettra de compiler l'ensemble des onglets créés).
    mon fichier comporte d'autres feuilles.
    Pour que ce soit plus clair je posterai un modèle de mon fichier.
    Merci de votre réponse

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    1) Nous avions bien compris
    2)
    Pour que ce soit plus clair je posterai un modèle de mon fichier.
    Je n'ouvre et n'ouvrirai jamais un classeur tiers.
    3) qu'as-tu fait (au moins tenté de faire) sur les bases/étapes que je t'ai indiquées ?

  5. #5
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonjour,

    Qq exemples en PJ

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    Sub Tri_onglet()
      Application.ScreenUpdating = False
      Dim a(256)
      n = Sheets.Count
      For i = 1 To n
         a(i) = Sheets(i).Name
      Next i
      '----  tri
      For i = 1 To n
         For j = i To n
            If a(j) < a(i) Then
              temp = a(j)
              a(j) = a(i)
              a(i) = temp
            End If
         Next j
      Next i
      '---
      For i = 1 To n
         Sheets(a(i)).Move before:=Sheets(i)
      Next i
      Sheets("accueil").Move before:=Sheets(1)
      Sheets(1).Select
    End Sub
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub tri_ongletDirect()
      Application.ScreenUpdating = False
      For i = 1 To Sheets.Count
         For j = i To Sheets.Count
            If UCase(Sheets(j).Name) < UCase(Sheets(i).Name) Then
              Sheets(i).Move before:=Sheets(j)
              Sheets(j).Move before:=Sheets(i)
            End If
         Next j
      Next i
      Sheets("accueil").Move before:=Sheets(1)
    End Sub
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    Sub trionglet2()
      Sheets.Add
      ActiveSheet.Name = "Tempo_jb"
      For i = 1 To Sheets.Count
         Cells(i, 1) = "'" & Sheets(i).Name
      Next i
      Range("A1:A256").Sort Key1:=Range("A1")
      For i = 1 To Sheets.Count
         nonglet = Cells(i, 1)
         Sheets(nonglet).Move before:=Sheets(i)
         Sheets("Tempo_jb").Activate
      Next i
      Application.DisplayAlerts = False
      Sheets("Tempo_jb").Delete
      Sheets("accueil").Move before:=Sheets(1)
      Sheets(1).Activate
    End Sub
    Boisgontier
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [AC-2000] Création de boutons de tri alphabétique
    Par ThieBEN dans le forum IHM
    Réponses: 22
    Dernier message: 22/10/2010, 12h07
  2. [VBA EXCEL] Tri croissant
    Par ancel17 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 27/10/2007, 11h46
  3. [VBA-Excel] Tri autoamtique de Date
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/01/2007, 10h55
  4. [VBA-Excel] Tri de listview ne fonctionne pas avec des nombres à virgule
    Par marsupilami34 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/09/2006, 15h32
  5. [VBA-E] [Excel] Tri automatique
    Par bovi dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 01/10/2002, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo