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 :

Générer automatiquement des feuilles avec un contenu standard [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 27
    Par défaut Générer automatiquement des feuilles avec un contenu standard
    Bonjour, je n'y connais rien en VBA.
    Mais en fouillant sur le net j'ai partiellement solutionné mon problème mais la je bloque.

    Dans la colonne A d'un feuille, j'ai une liste de noms. Je souhaite créer pour chacun de ces noms une feuille portant ce nom et étant la copie d'un feuille nommé original.

    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
    Private Sub CommandButton1_Click()
     
    Dim z As Integer
    Dim shessai2 As Worksheet
     
    For z = 1 To Range("A65536").End(xlUp).Row
     
    If Not IsEmpty(Cells(z, 1)) Then
      If Not exist_f(Cells(z, 1)) Then
        Set copie = Sheets.Add(After:=Sheets(Sheets.Count))
     
        copie.Name = Cells(z, 1).Value
     
      End If
    End If
     
    Next z
    End Sub
     
     
    Function exist_f(feuille)
    For Each sh In Sheets
      If sh.Name = feuille Then
        exist_f = True
        Exit Function
      End If
    Next
    exist_f = False
    End Function
    Mon essais permet juste de créer une feuille par nom mais je n'arrive pas à copier le contenu de l'original dans chaque feuille.
    Merci pour votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut
    Bonjour à tous,

    as t-u essayé en utilisant la fonction copy comme ceci:

    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
    Private Sub CommandButton1_Click()
     
    Dim z As Integer
    Dim shessai2 As Worksheet
     
    For z = 1 To Range("A65536").End(xlUp).Row
     
    If Not IsEmpty(Cells(z, 1)) Then
      If Not exist_f(Cells(z, 1)) Then
        Set copie = Sheets.Add(After:=Sheets(Sheets.Count))
     
        copie.Name = Cells(z, 1).Value
    Sheets("original").usedRange.Copy Destination:=copie.Range("A1")
     
      End If
    End If
     
    Next z
    End Sub
     
     
    Function exist_f(feuille)
    For Each sh In Sheets
      If sh.Name = feuille Then
        exist_f = True
        Exit Function
      End If
    Next
    exist_f = False
    End Function
    n'hésites pas si tu as d'autres questions

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 27
    Par défaut
    Et bien merci, ca répond à mon problème de copie.
    Par contre, il ne conserve pas la mise en forme originale. Y a t il un moyen de la récupérer?
    Merci

  4. #4
    Membre émérite Avatar de Nico Chg
    Homme Profil pro
    Apprenti ingénieur Business Development
    Inscrit en
    Juillet 2014
    Messages
    352
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Apprenti ingénieur Business Development
    Secteur : Agroalimentaire - Agriculture

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

    Pour garder la mise en forme, il faut copier la feuille entière, et pas la range contenue dans la feuille Original !
    Attention si tu as des noms liées à la feuille Original dont l'étendue est égal au classeur entier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    worksheets("original").Copy After:=ThisWorkbook.Sheets(1)
    'Copie de la feuille "original" en seconde position (après la feuille 1)
    WB_Report.Sheets(2).Name = ThisWorkbook.Sheets(1).cells(1, 1)
    'Renomme la feuille nouvellement copiée d'après la cellule A1 de la feuille 1
    A adapter suivant ton cas !

  5. #5
    Membre éprouvé
    Homme Profil pro
    Programmeur en temps libre
    Inscrit en
    Février 2015
    Messages
    68
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Programmeur en temps libre
    Secteur : Industrie

    Informations forums :
    Inscription : Février 2015
    Messages : 68
    Par défaut étrange...
    alors ça c'est bizare, chez moi cela marche très bien

    Même avec UsedRange, que je viens de tester. Moi, dans ma macro j'utilise range("A2:N2").

    aurais-je eu de la chance ?

    je précise que j'utilise Excel 2010.

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 27
    Par défaut
    Merci pour votre aide.

    Pour Aposto: Moi aussi je suis en 2010 mais la mise en page de la feuille original n'est pas conservée

    Pour Mercatog: le soucis avec ce code, c'est que les feuilles crées portent le nom du contenu de la colonne A de la feuille origonale et non celui de la feuille "Liste".
    Pour Nico Chg: je suis vraiment nul mais incorporé ces fonction dans mon code donne des résultats plutot exotiques!!!

    merci quand meme pour ces pistes.

  7. #7
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    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
    Private Sub CommandButton1_Click()
    Dim z As Long
     
    With Worksheets("original")
        For z = 1 To .Cells(.Rows.Count, 1).End(xlUp).Row
            If .Cells(z, 1) <> "" Then
                If Not Exist_F(.Cells(z, 1)) Then
                    .Copy After:=Sheets(Sheets.Count)
                    ActiveSheet.Name = .Cells(z, 1).Value
                End If
            End If
        Next z
    End With
    End Sub
     
     
    Function Exist_F(ByVal Feuille As String) As Boolean
     
    On Error Resume Next
    Exist_F = Sheets(Feuille).Index
    End Function

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

Discussions similaires

  1. Renommer des feuilles avec date et n° incrémenté
    Par dioubiban dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 16/02/2009, 11h47
  2. Générer automatiquement des fichiers Word
    Par laurent35000 dans le forum Access
    Réponses: 3
    Dernier message: 13/06/2008, 17h33
  3. Entrer automatiquement des données Avec MySQL, JS et php
    Par HWICE dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 11/04/2008, 16h40
  4. Générer automatiquement une feuille de données
    Par TheBlue dans le forum Windows Forms
    Réponses: 4
    Dernier message: 29/12/2007, 15h07
  5. Générer automatiquement des fiches HTML
    Par defdef dans le forum Général Conception Web
    Réponses: 6
    Dernier message: 11/05/2007, 14h04

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