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 :

Macro de création de pages nommées


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    enquiquineur d'unparia
    Inscrit en
    Février 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : enquiquineur d'unparia

    Informations forums :
    Inscription : Février 2014
    Messages : 82
    Par défaut Macro de création de pages nommées
    Bonjour,
    Voici ma macro :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Public Sub CreatePage(nomPage As String)
        Dim x As Integer
        x = ActiveWorkbook.Application.Sheets.Count
        If (IsWorksheet(nomPage)) Then GoTo ExisteDeja
        Sheets.Add.Move After:=Sheets(x)
        Sheets(x + 1).Name = nomPage
    ExisteDeja:
    End Sub
    Sachanque la fonction IsWorksheet(str As String) me renvoie un boolean pour savoir si une page portant déjà ce nom éxiste.

    Et voilà, lorsque je lance ma fonction (mon classeur est vide) régulièrement (pas tout le temps), il me crée les pages en les nommant par défaut, c'est-à-dire par incrémentation : Feuil7; Feuil8; etc... (au lieu du nom spécifié en paramètre).
    Y-t-il une ligne de code qui me permette de "raffraichir" les pages, que le document excel se remette en mémoire les pages qu'il possède?

    Merci !

  2. #2
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Bonjour,

    avec un code incomplet, à part dire que mieux vaut travailler avec WorkSheets
    et Goto obsolète depuis au moins 25 ans ‼ …

  3. #3
    Membre confirmé
    Homme Profil pro
    enquiquineur d'unparia
    Inscrit en
    Février 2014
    Messages
    82
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : enquiquineur d'unparia

    Informations forums :
    Inscription : Février 2014
    Messages : 82
    Par défaut
    Bonjour, et merci pour ton aide utile .

    Voici tout le 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
     
    Public Sub Prep()
     
        Call CreatePage("FF1")
        Call CreatePage("FF2")
        Call CreatePage("FF3")
     
    End Sub
     
    Public Sub CreatePage(nomPage As String)
        Dim x As Integer
        x = ActiveWorkbook.Application.Sheets.Count
        If (IsWorksheet(nomPage) = False) Then
            Worksheets.Add.Move After:=Sheets(x)
            Worksheets(x + 1).Name = nomPage
        End If
    End Sub
     
    Public Function IsWorksheet(strName As String) As Boolean
       Dim objWorksheet As Worksheet
       IsWorksheet = False
       For Each objWorksheet In ActiveWorkbook.Worksheets
          If objWorksheet.Name = strName Then
             IsWorksheet = True
             'MsgBox "La Feuille " & strName & " existe déjà"
          End If
       Next
    End Function

  4. #4
    Expert éminent
    Avatar de Marc-L
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2013
    Messages
    9 468
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 9 468
    Par défaut

    Pour rappel, la qualité des réponses dépend de celle de la présentation initiale.
    Et quand cette dernière est incomplète … What did you expect ?‼

    Où est localisé précisément le code ?

    Quant à la fonction IsWorksheet, mis à part l'inutilité de boucler sur toutes les feuilles,
    peut être remplacée en une ou deux lignes de codes, le contrôle portant uniquement sur le classeur actif,
    est-ce cohérent avec le classeur où sont créées les feuilles ?

    Car dans le code le classeur n'est pas précisé lors de la création des feuilles …

    Sinon reste à suivre le code en mode pas à pas via la touche F8 pour trouver la source du problème …

Discussions similaires

  1. Macro qui copie une page et la modifie
    Par craac dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/10/2007, 10h14
  2. outil de création de pages pour un blog
    Par 78alex78 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 1
    Dernier message: 05/12/2006, 20h09
  3. [EasyPHP] Création de pages web
    Par LaFik dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 17/10/2006, 09h51
  4. création de page à la volée
    Par lieto dans le forum Général JavaScript
    Réponses: 10
    Dernier message: 28/06/2006, 14h53
  5. Réponses: 4
    Dernier message: 30/04/2006, 12h07

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