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 :

VBA Déplacer onglets selon conditions [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Homme Profil pro
    comptable
    Inscrit en
    Octobre 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : comptable
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2016
    Messages : 13
    Points : 15
    Points
    15
    Par défaut VBA Déplacer onglets selon conditions
    Bonjour a tous!

    J'ai un fichier Excel avec plusieurs onglets:
    1. menu
    2. données 1
    3. données 2
    4 etc...

    dans l'onglet menu, j'ai un tableau, dans lequel j'indique des groupements de données. Je m'explique:

    La 1ere colonne indique un nom de groupement
    La 2eme colonne indique le nom des onglets concernés, séparé par un ";"


    Ce que je n'arrive pas à faire, c'est une macro, qui lit le tableau, et me creer un nouveau classeur pour chaque groupement, et copie chaque onglet référencé de ce groupement, dans le nouveau classeur concerné.

    en PJ mon fichier, il contient déja des macro qui aident a préparer mes données.

    J'ai vraiment besoin de votre aide. merci beaucoup si vous pouvez me l'apporter !
    Fichiers attachés Fichiers attachés

  2. #2
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Bonjour swiches, Bonjour le Forum,

    Pas d'ouverture de pièce jointe en début de discussion.

    Si le nom des onglets figurent sur une seule cellule, alors tu peux utiliser la fonction Split.
    La résultante en sera un tableau Array - à 1 dimension - que tu peux parcourir

    Exemple à adapter (adresse, type de fichier enregistré...):

    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
    Option Explicit
     
    Public Sub créat_wkb()
     
    Dim derlign As Long
    Dim c As Range
    Dim wkb_destin As Workbook
    Dim s As Variant
    Dim i As Integer
     
    Application.ScreenUpdating = False
     
    With Worksheets("Menu")
            derlign = .Cells(.Rows.Count, 1).End(xlUp).Row
            For Each c In .Range("A1:A" & derlign)
                    Workbooks.Add
                    ActiveWorkbook.SaveAs Filename:=c.Value & ".xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled
                    Set wkb_destin = ActiveWorkbook
                    s = Split(c.Offset(0, 1).Value, ";")
                    For i = LBound(s) To UBound(s)
                            ThisWorkbook.Worksheets(s(i)).Copy After:=wkb_destin.Worksheets(wkb_destin.Worksheets.Count)
                    Next i
                    Erase s
                    Application.DisplayAlerts = False
                    With wkb_destin
                            .Worksheets(1).Delete
                            .Close SaveChanges:=True
                    End With
                    Application.DisplayAlerts = True
                    Set wkb_destin = Nothing
            Next c
    End With
     
    Application.ScreenUpdating = True
     
    End Sub
    Consulte ce code ligne à ligne pour le comprendre, essaie de l'adapter et reviens pour toute question éventuelle.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


  3. #3
    Membre à l'essai
    Homme Profil pro
    comptable
    Inscrit en
    Octobre 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : comptable
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Octobre 2016
    Messages : 13
    Points : 15
    Points
    15
    Par défaut
    Ca marche nikel! merci beaucoup !

  4. #4
    Expert éminent
    Avatar de MarcelG
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2009
    Messages
    3 449
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2009
    Messages : 3 449
    Points : 7 149
    Points
    7 149
    Billets dans le blog
    7
    Par défaut
    Salut,

    Je viens d'apporter quelques retouches.

    S'il te plaît, ne te contente pas d'un simple copier/coller.
    Il serait opportun, en effet, que tu intègres toutes les méthodes et propriétés reportées dans le code proposé.
    Bien entendu, tu peux revenir pour toute question.

    Bien Cordialement.

    Marcel

    Dernier billet:
    Suppression des doublons d'un tableau structuré, gestion d'un array

    Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. sélection onglet selon condition
    Par Herbert50 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 15/04/2019, 19h40
  2. [XL-2016] Mise a jour de donner selon conditions / lier des cellules entre elles pour maj (VBA)
    Par aurelie.guegan.15 dans le forum Conception
    Réponses: 2
    Dernier message: 03/05/2017, 07h04
  3. [Toutes versions] Calcul moyenne entre deux dates selon condition par vba
    Par bboy-eazy dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 27/05/2015, 13h08
  4. [XL-2007] Déplacer des lignes dans un autre onglet selon valeur d'une cellule
    Par Accessifiante dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 06/05/2014, 16h45
  5. Débutant en VBA - Copier coller selon conditions
    Par anthony787 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/08/2010, 16h29

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