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 d'un nouvel onglet à chaque changement de valeur


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Avril 2016
    Messages : 3
    Par défaut Création d'un nouvel onglet à chaque changement de valeur
    Pièce jointe 205960

    Bonjour,

    J'ai une liste qui se présente comme suit avec une liste en colonne "D" qui présente 60 valeurs différente.

    J'aimerais, à chaque changement de valeur, qu'un nouvel onglet soit créé avec en nom le "nom entitée commerciale" et la liste d'informations correspondantes. Si possible, j'aimerais que la mise en forme de la page 1 se copie d'un onglet à l'autre.

    Je ne m'y connait pas du tout en VBA et je n'arrive pour l'instant à rien faire. J'ai essayé de m'inspirer de cette réponse http://www.developpez.net/forums/d10...tat-d-colonne/ malheuresement seule la première valeur de la liste s'affiche et non toute la liste, aussi, la mise en forme ne se copie pas.

    Pourriez-vous m'aider ?

    Merci.

  2. #2
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Bonjour,


    tu devrais pouvoir le faire en utilisant le filtre avancé.
    Il permet de sélectionner certaines lignes avec un critère
    et de copier le résultat du filtrage dans un autre onglet.
    Voir ce tutoriel
    http://philippetulliez.developpez.co...dvancedfilter/
    Cordialement,

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Avril 2016
    Messages : 3
    Par défaut
    Bonjour,

    Merci pour votre retour. Toutefois, mon fichier fait près de 600 lignes et le critère pour lequel je veux créer un nouvel onglet (celui en colonne D) comprend près de 70 valeurs différentes, soit 70 fois l'utilisation du filtre avancé. J'ai déjà vu des personnes utiliser des macro pour cela, et j'avais trouvé un code l'année dernière qui m'avait servi que je n'ai pas archivé. Y-a-t-il une méthode ?

    MErci.

  4. #4
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    Bonjour,

    Ceci devrait aider:

    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
    Sub copie()
    col = 4
    ligne = Range("D" & Rows.Count).End(xlUp).Row
    'numero de la colonne de test et calcul du nb de ligne
    Dim d, f As Integer 'debut et fin de zone de copie
     
    For i = 6 To ligne
        d = i 'initialisation de la plage a copier
        If Not (Cells(i, col) = Cells(i + 1, col)) Then
            Sheets.Add 'ajout de feuille
            'ici il faut renommer la feuille
            f = i 'valeur différente donc fin de la plage a copier
            Sheets("Sheet1").Rows("1:5").Copy 'copie des en-têtes
            Sheets("Sheet2").Rows("1:5").PasteSpecial 'changer sheets par le nomveau nom
            Sheets("Sheet1").Rows(d & ":" & f).Copy 'copie des données
            Sheets("Sheet2").Rows("6:" & 6 + f - d).PasteSpecial 'changer sheets par le nomveau nom
            d = i + 1 'début de la plage suivante
        End If
    Next i
    End Sub
    Ce code parcours la colonne D de la ligne 6 a la derniere non vide, et copie les plages ou la colonne D garde la même valeurs.
    Il reste encore a définir le nom des nouveaux onglets.

  5. #5
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Avril 2016
    Messages : 3
    Par défaut
    Bonjour,

    Merci beaucoup.

    Pour les nouvelles feuille j'aimerais qu'elles aient le nom de la valeur qui change dans la colonne D (c'est à dire A2CE PATRIMOINE, AEP, AGEAS ou les suivantes..), que dois-je modifier sur le code ?

    Merci encore,

    Mélina

  6. #6
    Membre émérite
    Homme Profil pro
    Directeur
    Inscrit en
    Avril 2003
    Messages
    724
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur

    Informations forums :
    Inscription : Avril 2003
    Messages : 724
    Par défaut
    Salut,

    pour renommer la feuille,
    Je t'ai modifié le code de halaster08
    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
    Sub copie()
    col = 4
    ligne = Range("D" & Rows.Count).End(xlUp).Row
    'numero de la colonne de test et calcul du nb de ligne
    Dim d, f As Integer 'debut et fin de zone de copie
    Dim sh As Worksheet ' <<==modif
     
    For i = 6 To ligne
        d = i 'initialisation de la plage a copier
        If Not (Cells(i, col) = Cells(i + 1, col)) Then
            Set sh = Sheets.Add 'ajout de feuille <<==modif
            'ici il faut renommer la feuille
            sh.Name = Cells(i, col) ' ==là, je renomme la feuille==
            f = i 'valeur différente donc fin de la plage a copier
            Sheets("Sheet1").Rows("1:5").Copy 'copie des en-têtes
            Sheets("Sheet2").Rows("1:5").PasteSpecial 'changer sheets par le nomveau nom
            Sheets("Sheet1").Rows(d & ":" & f).Copy 'copie des données
            Sheets("Sheet2").Rows("6:" & 6 + f - d).PasteSpecial 'changer sheets par le nomveau nom
            d = i + 1 'début de la plage suivante
        End If
    Next i
    End Sub

  7. #7
    Expert confirmé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Juillet 2014
    Messages
    2 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2014
    Messages : 2 681
    Par défaut
    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
    Sub copie()
    col = 4
    ligne = Range("D" & Rows.Count).End(xlUp).Row
    'numero de la colonne de test et calcul du nb de ligne
    Dim d, f As Integer 'debut et fin de zone de copie
    Data = ActiveSheet.Name
    d = 6 'initialisation de la plage a copier
    For i = 6 To ligne
       ' MsgBox d
        If Not (Sheets(Data).Cells(i, col) = Sheets(Data).Cells(i + 1, col)) Then
            'MsgBox Cells(i, col) & Cells(i + 1, col)
            nom = Sheets(Data).Cells(i, col)
            Sheets.Add 'ajout de feuille
            ActiveSheet.Name = nom
            f = i 'valeur différente donc fin de la plage a copier
            Sheets(Data).Rows("1:5").Copy 'copie des en-têtes
            Sheets(nom).Rows("1:5").PasteSpecial 'changer sheets par le nomveau nom
           ' MsgBox "zone = " & d & " - " & f
            Sheets(Data).Rows(d & ":" & f).Copy 'copie des données
            Sheets(nom).Rows("6:" & 6 + f - d).PasteSpecial 'changer sheets par le nomveau nom
            d = i + 1 'début de la plage suivante
        End If
    Next i
    End Sub
    C'est bien parceque je suis gentil et que j'avais mal placé l'initialisation de d, mais tu aurais pu chercher par toi même comment renommer une feuille.

Discussions similaires

  1. Mon application web ouvre un nouvel onglet chaque fois que je clique
    Par le miky dans le forum Général Conception Web
    Réponses: 3
    Dernier message: 16/09/2014, 17h49
  2. [XL-2007] Copier plusieurs fichiers Excel dans un nouvel onglet à chaque fois
    Par OptionExplicitSu dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/06/2012, 17h48
  3. Réponses: 13
    Dernier message: 21/02/2011, 20h33
  4. Renommer onglet quand changement de valeur d'une cellule
    Par schdam dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 15/09/2010, 22h12
  5. Actualisation de worbook excel : création d'un nouvel onglet
    Par Pinechip dans le forum ODS et reporting
    Réponses: 16
    Dernier message: 27/07/2009, 18h08

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