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 :

Problème avec la gestion des onglets [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Problème avec la gestion des onglets
    Bonjour à tous,

    Je suis newbie en VBA et suis face à un problème que je n'arrive pas à comprendre...

    J'ai créé une feuille excel que j'ai appelé "vierge", avec une mise en forme particulière et des formules.

    Sur la feuille suivante que j'ai appelé "Page de Garde", je rentre des données dans des cellules, et lorsque je clique sur un bouton, une macro créée une nouvelle feuille à la suite des existantes, et rempli un certain nombre d'informations issues de la page de garde, et je renomme le nom de la feuille avec l'une de ces données (un numéro de projet en l'occurrence).

    Cependant, si une feuille existe déjà avec le même nom, Excel me met une fenêtre qui m'indique qu'une feuille existe déjà avec le même nom.

    Afin d'éviter ce problème, je fais une petite boucle for, avec un test conditionnel pour m'assurer qu'il n'existe pas déjà une feuille avec le même nom.

    Mais c'est là que ça plante... je vous laisse le code de cette partie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'boucle pour vérifier qu'aucun onglet ne porte déjà le même nom
        i = 2
        For i = 2 To NB_ONGLETS
        Sheets(i).Select
        If Sheets(i).Name = project_number Then
        Call MsgBox("Attention, ce numéro de projet existe déjà !", vbCritical, Erreur)
        End If
        Next i
    où NB_ONGLETS est le nombre d'onglets dans le classeur obtenu de cette façon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NB_ONGLETS = Sheets.Count
    et "project_number", une valeur lue dans les données entrées dans la "Page de Garde" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'copie du numéro de projet dans une variable déclarée
        Sheets("Page de Garde").Select
        Range("E8").Select
        project_number = ActiveCell.Value
    Sauf qu'arrivé sur , excel plante avec le message d'erreur : "Erreur d'execution 1004 - Erreur définie par l'application ou par l'objet"

    Est ce que qqn a une idée ?

    Merci !

    Guillaume

  2. #2
    Membre chevronné Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Points : 1 999
    Points
    1 999
    Par défaut
    Bonjour,

    Un exemple perso à asapter qui fonctionne :

    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
    Dim F1 As Worksheet 
     
    ' ------------------------------- ' 
    ' Existence de l'onglet 
    ' ------------------------------- ' 
    For Each F1 In Sheets 
        If F1.Name = MySheet Then 
                    MsgBox "La feuille " & F1.Name & " existe déja", vbInformation, "Classeur " & ThisWorkbook.Name 
                Exit Function ' ou exit sub 
          End If 
    Next
    ' ------------------------------- ' 
    ' Ajout de l'onglet 
    ' ------------------------------- ' 
    Set F1 = Sheets.Add(After:=Sheets(Sheets.Count)) 
    F1.Name = MySheet 
     
    Next

  3. #3
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 927
    Points
    55 927
    Billets dans le blog
    131
    Par défaut
    Bonsoir

    Je te conseille de créer une petite fonction perso
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function OngletExiste(Nom As String) As Boolean
        Dim sh As Object
     
        For Each sh In Sheets
            If UCase(sh.Name) = UCase(Nom) Then
                OngletExiste = True
                Exit For
            End If
        Next sh
    End Function
    Tu capitalises ainsi du code, et tu utilises cette fonction au sein de ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if ongletexiste("Feuil1") then
        Msgbox "Ce projet existe déjà"
        else
        ' Création de l'onglet
        ...
    End If
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  4. #4
    Candidat au Club
    Inscrit en
    Octobre 2009
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2009
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Salut !

    Merci à tous les deux pour vos réponses. J'ai finalement utilisé la solution de Pierre, avec une fonction.

    Bonne soirée !

    Guillaume

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

Discussions similaires

  1. Problème avec gotoAndPlay, gestion des animations
    Par Pimprenelle dans le forum ActionScript 3
    Réponses: 1
    Dernier message: 01/06/2008, 21h24
  2. Problème avec la gestion des événements
    Par Franck.H dans le forum SDL
    Réponses: 32
    Dernier message: 26/02/2007, 16h01
  3. Problème avec la "Gestion des bibliothèques dynamiques"
    Par GoustiFruit dans le forum Delphi
    Réponses: 15
    Dernier message: 31/05/2006, 09h54
  4. Problème avec la gestion des événements
    Par CynO dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 17/10/2005, 10h07

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