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éer des feuilles et les nommer via une plage de données [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut Créer des feuilles et les nommer via une plage de données
    Bonjour,

    Je suis débutant en programmation et je souhaiterais créer des feuilles Excel et les nommer grâce à une première feuille via une plage de données.

    J'ai de base 7 feuilles. Le premier est un lisez-moi où je souhaite insérer le bouton pour lancer la macro. La deuxième feuille "paquet" est la fameuse feuille où je souhaite en créer des nouvelles en les nommant via les valeurs en cellules A2 jusqu'à ce que la cellule ne soit plus vide. De plus je souhaite saisir également en titre à l'intérieur de chaque feuille la valeur de la cellule.

    Exemple: la cellule A2 de la feuille "paquet" est "P9703". Je souhaite qu'une nouvelle feuille se nomme P9703 et qu'à l'intérieur de cette feuille il y est la cellule B2 avec écrit "P9703"
    Je ne souhaite pas toucher aux 5 autres onglet déjà présent (pilotage, generalite, carac, territoire tarifaire et prix) et je souhaite que ces nouvelles feuilles s'insèrent après la feuille "prix"

    Je vous joint le fichier en si je ne suis pas assez clair.

    J'ai cherché partout des réponses mais je n'arrive pas à produire exactement ce que je souhaite.

    Merci d'avance pour votre aide.
    Fichiers attachés Fichiers attachés

  2. #2
    Membre émérite Avatar de Thautheme
    Homme Profil pro
    salarié
    Inscrit en
    Août 2014
    Messages
    1 373
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : salarié

    Informations forums :
    Inscription : Août 2014
    Messages : 1 373
    Points : 2 594
    Points
    2 594
    Par défaut
    Bonsoir Rafale, bonsoir le forum,

    Peut-être comme ça :

    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
    Sub Macro1()
    Dim P As Object 'déclare la variable P (onglet paquet)
    Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
    Dim PL As Range 'déclare la variable PL (PLage)
    Dim D As Object 'déclare la variable D (Dictionnaire)
    Dim CEL As Range 'déclare la variable CEL (CELlule)
    Dim TMP As Variant 'déclare la variable TMP (tableau TeMPoraire)
    Dim I As Integer 'déclare la variable I (Incrément)
     
    Set P = Sheets("paquet") 'définit l'onglet P
    DL = P.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée de la colonne 1 (=A) de l'onglet P
    Set PL = P.Range("A1:A" & DL) 'définit la plage PL
     
    'tri de la plage PL
    ActiveWorkbook.Worksheets("paquet").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("paquet").Sort.SortFields.Add Key:=Range("A1") _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("paquet").Sort
        .SetRange PL
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
     
    Set PL = PL.Offset(1, 0).Resize(PL.Rows.Count - 1) 'redéfinit la plage PL (sans l'étiquette en A1)
    Set D = CreateObject("Scripting.Dictionary") 'définit le dictionnaire D
    For Each CEL In PL 'boucle sur toutes les cellules CEL de la plage PL
        If CEL.Value <> "" Then D(CEL.Value) = "" 'alimente le dictionnaire D si la celllue n'est pas vide
    Next CEL 'prochaine cellule de la boucle
    TMP = D.keys 'récupère dans le tableau temporaire TMP la liste des éléments du dictionnaire D sans doublon
    For I = 0 To UBound(TMP) 'boucle sur tous les éléments uniques du tableau temporaire TMP
        Sheets.Add after:=Sheets(Sheets.Count) 'ajoute un onglet en dernière position
        ActiveSheet.Name = TMP(I) 'renomme l'onglet avec l'élément TMP(I) comme nom
        ActiveSheet.Range("B2").Value = TMP(I) 'place l'élément TMP(I) dans la cellule B2 du nouvel onglet
    Next I 'prochain élément de la boucle
    End Sub

  3. #3
    Candidat au Club
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Octobre 2014
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2014
    Messages : 7
    Points : 3
    Points
    3
    Par défaut merci
    Merci beaucoup!!!!

    J'ai essayé et ça fonctionne à merveille. Tu me retires une grosse épine du pied.

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

Discussions similaires

  1. [XL-2003] imprimer des feuilles excel générées à partir d'une liste de données
    Par aminix9 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 07/02/2010, 14h48
  2. [XL-2007] CheckBox ou Listbox pour sélectionner des critères et les afficher dans une autre feuille
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 20
    Dernier message: 19/08/2009, 15h19
  3. Réponses: 2
    Dernier message: 26/12/2008, 14h54
  4. récupérer des informations d'une feuille et les placer dans une autre
    Par winclass dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/12/2008, 21h34
  5. Créer des DLL manipulant les tables d'une BDD
    Par dj_techno dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/02/2007, 08h20

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