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 et renomer une feuille [XL-2003]


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
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 48
    Par défaut créer et renomer une feuille
    Bonjour à tous


    voici mon petit problème je voudrais créer une feuille dans mon classeur et la renommer.

    J'arrive à créer la feuille et la renommer mais ça me recrée toujours une nouvelle feuille puis une erreur qui me fait sortir de ma macro .

    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
     
    Dim page As Variant
    Dim feuilleErreur As Worksheet
    'Boucle de test pour savoir si les deux projet ont le même nom
    If projetA = projetD Then
        MsgBox " Il n'y a pas d'erreur."
     
    Else
        MsgBox " Il y a une erreur."
      ' Je vérifie s'il y a déjà une feuille
      For Each page In Worksheets
        If page.Name = "erreurs" Then
        MsgBox "La Page est déjà crée."
        Else
        'J 'ajoute une feuille & je change le nom
        Set feuilleErreur = Sheets.Add(After:=Sheets(Sheets.Count))
        feuilleErreur.Name = "erreurs"
     
        End If
      Next page
      End If
    Merci de me dire ce qui est faux et comment rattraper le coup.

    bonne fin de journée à vous

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut heu
    bonjour

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     For Each page In Worksheets
    traduction:
    pour toute les page dans la page active ne crois tu pas qu'il y a la une erreur


    essaie plutot

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    for each page in thisworkbook
    traduction : pour toute les pages dans ce classeur


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Expert confirmé

    Avatar de Maxence HUBICHE
    Homme Profil pro
    Développeur SQLServer/Access
    Inscrit en
    Juin 2002
    Messages
    3 842
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur SQLServer/Access

    Informations forums :
    Inscription : Juin 2002
    Messages : 3 842
    Par défaut
    hmmm... désolé PatrickToulon, mais, je préfère sa solution à lui...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For each page in activeworkBook.Worksheets
    "Pour chaque page dans l'ensemble des feuille de calcul du classeur actif"


    sinon, fllyann, ton erreur est dans ton algorithme.
    A chaque feuille de calcul, tu regardes si elle s'appelle "erreurs", et, dans le cas contraire, tu en crées une...
    Donc, si tu as 2 feuilles de calcul, tu tentes 2 fois de créer une feuille "erreurs"

    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
    dim bFounded as Boolean
    <snip>
     
    For each page in ActiveWorkBook.WorkSheets
        if page.Name = "erreurs" Then
            bFounded = true
            exit For
        else
            'rien à faire
        end if
    Next
     
    If Not bFounded then
        'J 'ajoute une feuille & je change le nom
        Set feuilleErreur = Sheets.Add(After:=Sheets(Sheets.Count))
        feuilleErreur.Name = "erreurs"
    Else
        'rien à faire puisque la page "erreur" a été trouvée
    End If

  4. #4
    Membre très actif
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    364
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 364
    Par défaut
    Bonsoir,

    puisque c'est fait, un autre style :
    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
     
    Sub test()
      Dim feuilleErreur As Worksheet
      'Boucle de test pour savoir si les deux projets ont le même nom
        If projetA = projetD Then
        MsgBox " Il n'y a pas d'erreur."
      Else
        MsgBox " Il y a une erreur."
        ' Je vérifie s'il y a déjà une feuille
        For n = 1 To Sheets.Count
          If Sheets(n).Name = "erreurs" Then MsgBox "La Page est déjà créée.": Exit Sub
        Next
        Set feuilleErreur = Sheets.Add(After:=Sheets(Sheets.Count))
        feuilleErreur.Name = "erreurs"
      End If
    End Sub

  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 166
    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 166
    Billets dans le blog
    53
    Par défaut
    Bonsoir,
    Les puristes vont peut-être hurler mais moi pour contrôler l'existence d'une feuille, je provoque une erreur.
    J'ai donc écrit une fonction qui teste l'existence ou non de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function IsShtExist(wName As String) As Boolean
      ' Verify if a sheet exist
      ' Parameters
      '  wName : Sheet name
      ' Author : Philippe Tulliez
      ' Date   : 2004/04/14 v 1.0
      Dim wSheet As Worksheet
      On Error Resume Next
      Set wSheet = Worksheets(wName): If Err = 0 Then IsShtExist = True
      On Error GoTo 0
    End Function
    Donc dans le code, je ne parcours pas la collection worksheets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     If projetA = projetd Then
         MsgBox " Il n'y a pas d'erreur."
     Else
       ' Je vérifie s'il y a déjà une feuille
      If Not (IsShtExist("erreurs")) Then
        Set feuilleErreur = Sheets.Add(After:=Sheets(Sheets.Count))
        feuilleErreur.Name = "erreurs"
      End If
     End If
    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

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2010
    Messages
    48
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2010
    Messages : 48
    Par défaut
    Bonjour à tous

    désolé de ne pas avoir répondu hier mais j'ai posté et je suis parti du travail.


    merci pour toutes vos réponses, je vais les tester.

    Maxence, je supposais bien que l'erreur venait de mon algorithme mais j'arrivais pas à comprendre exactement pourquoi merci !

    Merci à vous en tout cas vos 3 solutions fonctionne très bien
    bonne continuation et à la prochaine erreur !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/01/2013, 10h42
  2. [EXCEL] Comment renomer une feuille?
    Par bob1980 dans le forum Delphi
    Réponses: 1
    Dernier message: 30/10/2006, 11h56
  3. comment créer des boutons sur une feuille en utilisant eclipse
    Par ratamahatta dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 09/06/2006, 19h17
  4. [VBA-E]Créer une feuille qui contient du code
    Par Elstak dans le forum Macros et VBA Excel
    Réponses: 13
    Dernier message: 04/04/2006, 15h58
  5. [VBA-E]Créer un fichier txt depuis une feuille Excel
    Par marie10 dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 20/02/2006, 17h36

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