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 :

renommer des onglets


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mars 2003
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 126
    Par défaut renommer des onglets
    Bonjour,

    j'ai un code VBA qui ouvre différents classeurs et copie certaines feuilles dans un nouveau classeur.
    Je demande une copier en valeur et format des données et en plus de renommer la feuille.

    Tout fonctionne sauf le fait de renommer les feuilles, certaines feuilles sont bien renommées mais pas toutes.

    Celles qui ne fonctionnent pas sont:
    - ReportingWB.Sheets(1).Name = "PNLCumul"
    - ReportingWB.Sheets(2).Name = "BS"
    - ReportingWB.Sheets(3).Name = "Encours Clients"
    - ReportingWB.Sheets(4).Name = "Top 20 Clients"
    - ReportingWB.Sheets(5).Name = "Encours Fournisseurs"
    - ReportingWB.Sheets(6).Name = "Top 20 Fournisseurs"

    Les autres fonctionnent.

    Est-ce que quelqu'un peu m'aider?

    Merci

    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
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    Sub CopierDonneesEtMettreEnForme()
        Dim ReportingWB As Workbook
        Dim PNLCumulWB As Workbook
        Dim BSWB As Workbook
        Dim EncoursClientsWB As Workbook
        Dim Top20ClientsWB As Workbook
        Dim EncoursFournisseursWB As Workbook
        Dim Top20FournisseursWB As Workbook
        Dim EvolutionStockWB As Workbook
        Dim AnalyseEncoursWB As Workbook
     
        ' Ouvrir le fichier "PNL - ODBC BOB.xlsx"
        Set PNLCumulWB = Workbooks.Open("Q:\Comptabilite\Reporting\2023\Fichiers de travail\PNL - ODBC BOB.xlsx")
     
        ' Copier les données de l'onglet "PNLCumul" en valeurs et mise en forme
        PNLCumulWB.Sheets("PNLCumul").UsedRange.Copy
        Set ReportingWB = Workbooks.Add
        With ReportingWB.Sheets(1)
            .Cells(1, 1).PasteSpecial Paste:=xlPasteValues
            .Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
        End With
        ReportingWB.Sheets(1).Name = "PNLCumul"
     
        ' Ouvrir le fichier "Balance Sheet - ODBC BOB.xlsx"
        Set BSWB = Workbooks.Open("Q:\Comptabilite\Reporting\2023\Fichiers de travail\Balance Sheet - ODBC BOB.xlsx")
     
        ' Copier les données de l'onglet "BS" en valeurs et mise en forme
        BSWB.Sheets("BS").UsedRange.Copy
        With ReportingWB.Sheets.Add
            .Cells(1, 1).PasteSpecial Paste:=xlPasteValues
            .Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
        End With
        ReportingWB.Sheets(2).Name = "BS"
     
        ' Ouvrir le fichier "Encours client par echeance.xlsx"
        Set EncoursClientsWB = Workbooks.Open("Q:\Comptabilite\Reporting\2023\Fichiers de travail\Encours client par echeance.xlsx")
     
        ' Actualiser le tableau croisé dynamique et copier les données de l'onglet "Reporting" en valeurs et mise en forme
        EncoursClientsWB.Sheets("Reporting").PivotTables("Tableau croisé dynamique9").RefreshTable
        EncoursClientsWB.Sheets("Reporting").UsedRange.Copy
        With ReportingWB.Sheets.Add
            .Cells(1, 1).PasteSpecial Paste:=xlPasteValues
            .Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
        End With
        ReportingWB.Sheets(3).Name = "Encours Clients"
     
        ' Ouvrir le fichier "Top 20 Clients.xlsx"
        Set Top20ClientsWB = Workbooks.Open("Q:\Comptabilite\Reporting\2023\Fichiers de travail\Top 20 Clients.xlsx")
     
        ' Actualiser le tableau croisé dynamique et copier les données de l'onglet "Top20Clients" en valeurs et mise en forme
        Top20ClientsWB.Sheets("Top20Clients").PivotTables("Tableau croisé dynamique1").RefreshTable
        Top20ClientsWB.Sheets("Top20Clients").UsedRange.Copy
        With ReportingWB.Sheets.Add
            .Cells(1, 1).PasteSpecial Paste:=xlPasteValues
            .Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
        End With
        ReportingWB.Sheets(4).Name = "Top 20 Clients"
     
        ' Ouvrir le fichier "Encours fournisseur par echeance.xlsx"
        Set EncoursFournisseursWB = Workbooks.Open("Q:\Comptabilite\Reporting\2023\Fichiers de travail\Encours fournisseur par echeance.xlsx")
     
        ' Actualiser le tableau croisé dynamique et copier les données de l'onglet "Reporting" en valeurs et mise en forme
        EncoursFournisseursWB.Sheets("Reporting").PivotTables("Tableau croisé dynamique9").RefreshTable
        EncoursFournisseursWB.Sheets("Reporting").UsedRange.Copy
        With ReportingWB.Sheets.Add
            .Cells(1, 1).PasteSpecial Paste:=xlPasteValues
            .Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
        End With
        ReportingWB.Sheets(5).Name = "Encours Fournisseurs"
     
        ' Ouvrir le fichier "Top 20 Fournisseurs.xlsx"
        Set Top20FournisseursWB = Workbooks.Open("Q:\Comptabilite\Reporting\2023\Fichiers de travail\Top 20 Fournisseurs.xlsx")
     
        ' Actualiser le tableau croisé dynamique et copier les données de l'onglet "Top20Fournisseurs" en valeurs et mise en forme
        Top20FournisseursWB.Sheets("Top20Fournisseurs").PivotTables("Tableau croisé dynamique1").RefreshTable
        Top20FournisseursWB.Sheets("Top20Fournisseurs").UsedRange.Copy
        With ReportingWB.Sheets.Add
            .Cells(1, 1).PasteSpecial Paste:=xlPasteValues
            .Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
        End With
        ReportingWB.Sheets(6).Name = "Top 20 Fournisseurs"
     
        ' Ouvrir le fichier "Analyse encours de stock.xlsx"
        Set EvolutionStockWB = Workbooks.Open("Q:\Comptabilite\Reporting\2023\Fichiers de travail\Analyse encours de stock.xlsx")
     
        ' Actualiser le tableau croisé dynamique et copier les données de l'onglet "Evolution Stock PC" en valeurs et mise en forme
        EvolutionStockWB.Sheets("Evolution Stock PC").PivotTables("Tableau croisé dynamique1").RefreshTable
        EvolutionStockWB.Sheets("Evolution Stock PC").UsedRange.Copy
        With ReportingWB.Sheets.Add
            .Cells(1, 1).PasteSpecial Paste:=xlPasteValues
            .Cells(1, 1).PasteSpecial Paste:=xlPasteFormats
        End With
        ReportingWB.Sheets(7).Name = "Evolution Stock PC"
     
        ' Actualiser les tableaux croisés dynamiques dans l'onglet "Données Graph"
       ' ReportingWB.Sheets("Données Graph").PivotTables("Tableau croisé dynamique1").RefreshTable
        'ReportingWB.Sheets("Données Graph").PivotTables("Tableau croisé dynamique2").RefreshTable
       ' ReportingWB.Sheets("Données Graph").PivotTables("Tableau croisé dynamique9").RefreshTable
       ' ReportingWB.Sheets("Données Graph").PivotTables("Tableau croisé dynamique10").RefreshTable
       ' ReportingWB.Sheets("Données Graph").PivotTables("Tableau croisé dynamique11").RefreshTable
     
        ' Copier les onglets de graphiques
        EvolutionStockWB.Sheets("Graphique1").Copy After:=ReportingWB.Sheets("Evolution Stock PC")
        ReportingWB.Sheets(8).Name = "Graphique1"
        EvolutionStockWB.Sheets("Graphique2").Copy After:=ReportingWB.Sheets("Graphique1")
        ReportingWB.Sheets(9).Name = "Graphique2"
        EvolutionStockWB.Sheets("Graphique3").Copy After:=ReportingWB.Sheets("Graphique2")
        ReportingWB.Sheets(10).Name = "Graphique3"
        EvolutionStockWB.Sheets("Graphique4").Copy After:=ReportingWB.Sheets("Graphique3")
        ReportingWB.Sheets(11).Name = "Graphique4"
        EvolutionStockWB.Sheets("Graphique5").Copy After:=ReportingWB.Sheets("Graphique4")
        ReportingWB.Sheets(12).Name = "Graphique5"
        EvolutionStockWB.Sheets("Graphique6").Copy After:=ReportingWB.Sheets("Graphique5")
        ReportingWB.Sheets(13).Name = "Graphique6"
     
        ' Fermer les fichiers source
        PNLCumulWB.Close SaveChanges:=False
        BSWB.Close SaveChanges:=False
        EncoursClientsWB.Close SaveChanges:=False
        Top20ClientsWB.Close SaveChanges:=False
        EncoursFournisseursWB.Close SaveChanges:=False
        Top20FournisseursWB.Close SaveChanges:=False
        EvolutionStockWB.Close SaveChanges:=False
     
        ' Enregistrer le fichier "reporting.xlsx" sous Q:\Comptabilite\Reporting\2023\Fichiers de travail\
        ReportingWB.SaveAs "Q:\Comptabilite\Reporting\2023\Fichiers de travail\reporting.xlsx", FileFormat:=xlOpenXMLWorkbook
        ReportingWB.Close SaveChanges:=False
     
        ' Libérer la mémoire
        Set PNLCumulWB = Nothing
        Set BSWB = Nothing
        Set EncoursClientsWB = Nothing
        Set Top20ClientsWB = Nothing
        Set EncoursFournisseursWB = Nothing
        Set Top20FournisseursWB = Nothing
        Set EvolutionStockWB = Nothing
        Set ReportingWB = Nothing
    End Sub

  2. #2
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, essaie en remplaçant chaque ligne où tu renommes une feuille avec ReportingWB.Sheets(ReportingWB.Sheets.Count).Name = "NomDeLaFeuille".
    Cela devrait garantir que tu renommes toujours la dernière feuille ajoutée.

  3. #3
    Membre confirmé
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mars 2003
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 126
    Par défaut
    Citation Envoyé par Franc Voir le message
    Bonjour, essaie en remplaçant chaque ligne où tu renommes une feuille avec ReportingWB.Sheets(ReportingWB.Sheets.Count).Name = "NomDeLaFeuille".
    Cela devrait garantir que tu renommes toujours la dernière feuille ajoutée.
    Bonjour,

    merci pour votre réponse rapide. Le problème est toujours présent.

  4. #4
    Membre confirmé
    Homme Profil pro
    Responsable du parc et des réseaux de télécommunication
    Inscrit en
    Mars 2003
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable du parc et des réseaux de télécommunication
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2003
    Messages : 126
    Par défaut
    Bonjour,

    après plusieurs tests et modifications du code, je n'arrive toujours pas à renommer tous les onglets.

    une idée?

    Merci à tous

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 171
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 171
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Avez-vous un message d'erreur ?
    A partir du moment où l'on insère une feuille dans un classeur existant ou dans un nouveau classeur, celle-ci est active donc pourquoi utilisez-vous ce type d'instruction ReportingWB.Sheets(1).Name = "PNLCumul" au lieu de ActiveSheet.Name = "PNLCumul"
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

Discussions similaires

  1. [LibreOffice][Tableur] Renommer automatiquement des onglets sous calc.
    Par toon186 dans le forum OpenOffice & LibreOffice
    Réponses: 4
    Dernier message: 14/09/2014, 09h16
  2. [XL-2007] Comment faire pour renommer automatiquement des onglets ?
    Par rogerfon dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 24/05/2013, 13h37
  3. [VB.NET] Couleurs des onglets d'un TabControl
    Par ineznia dans le forum Windows Forms
    Réponses: 6
    Dernier message: 09/04/2004, 13h18
  4. [] [Réseau] Renommer des fichiers dans un site FTP
    Par JerBi dans le forum VB 6 et antérieur
    Réponses: 10
    Dernier message: 22/08/2003, 00h35
  5. Changer dynamiquement la position des onglets
    Par ginnovy dans le forum C++Builder
    Réponses: 2
    Dernier message: 11/09/2002, 18h24

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