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 un onglet qui n'existe pas à partir d'une liste [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 109
    Points : 60
    Points
    60
    Par défaut Créer un onglet qui n'existe pas à partir d'une liste
    Bonjour tout le monde,

    Je vous expose mon problème.

    J'ai besoin de savoir s'il est possible de créer des onglets (ou feuilles) et leur attribuer un nom à partir des informations qui se trouvent dans une colonne (exemple colonne D). Il est necessaire de faire attention que ces onglets ne soient pas déjà créer.
    Ces nouveaux onglet doivent être identique à l'onglet appelé MODELE.

    J'ai parcouru un peu tous les forum EXCEL, j'ai trouvé des codes VBA qui font cela, mais ils buguent des que l'onglet existe déjà.

    Pouvez vous m'aider SVP?

    Merci à vous

    PS : J’espère ne pas avoir été trop confus ?

  2. #2
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Bonjour

    Fonction pour tester l'existence d'un feuille dont le nom est passé en paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function ExistWorkSheet(FEUILLE) As Boolean
    'Principe : évalue la formule Feuille!A1 et vérifie si elle renvoie #REF
     
             ExistWorkSheet = Evaluate("ISREF('" & FEUILLE & "'!A1)")
    End Function
    N.B : attention à la casse des noms
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 109
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par 78chris Voir le message
    Bonjour

    Fonction pour tester l'existence d'un feuille dont le nom est passé en paramètre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function ExistWorkSheet(FEUILLE) As Boolean
    'Principe : évalue la formule Feuille!A1 et vérifie si elle renvoie #REF
     
             ExistWorkSheet = Evaluate("ISREF('" & FEUILLE & "'!A1)")
    End Function
    N.B : attention à la casse des noms
    Merci à toi J'ai appliqué ton code à ce 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
    Option Explicit
     
    Sub Ajouter_Feuilles()
    Dim J As Long
    Dim Ws As Worksheet
     
      Application.ScreenUpdating = False
      Set Ws = ActiveSheet
      For J = 8 To Ws.Range("H" & Rows.Count).End(xlUp).Row
        If Not ExistWorkSheet(Ws.Range("H" & J).Value) Then
          Sheets("Modèle").Copy after:=Sheets(Sheets.Count)
          ActiveSheet.Name = Ws.Range("H" & J)
          'Range("D2") = ActiveSheet.Name ' Met le nom de la feuille dans la cellule D2
        End If
      Next J
      Ws.Select
    End Sub
     
    Function ExistWorkSheet(FEUILLE) As Boolean
    'Principe : évalue la formule Feuille!A1 et vérifie si elle renvoie #REF
     
             ExistWorkSheet = Evaluate("ISREF('" & FEUILLE & "'!A1)")
    End Function
    Est il possible de créer des liens vers les onglets crées ?

    Merci encore

  4. #4
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Re

    Oui tu peux soit créer le lien dans ton code avec soit par une formule de type =LIEN_HYPERTEXTE située dans une cellule à coté
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 109
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par 78chris Voir le message
    Re

    Oui tu peux soit créer le lien dans ton code avec soit par une formule de type =LIEN_HYPERTEXTE située dans une cellule à coté

    RE

    A nouveau Merci
    Tu pourrais me montrer stp sur le fichier ci joint?
    Je voudrai que dans l'onglet sommaire que lorsque on clic sur le compte il nous renvoi sur l'onglet en question
    Fichiers attachés Fichiers attachés

  6. #6
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Bonjour

    Crée le lien à la main en utilisant l'enregistreur macro et adapte. Si tu as un souci, tu repostes.
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 109
    Points : 60
    Points
    60
    Par défaut
    Citation Envoyé par 78chris Voir le message
    Bonjour

    Crée le lien à la main en utilisant l'enregistreur macro et adapte. Si tu as un souci, tu repostes.
    Merci à toi Je vais le faire.

    Une dernière question.
    Le code crée une erreur lorsque dans la liste des onglets à créer il y à une cellule vide. Pourrais tu m'indiquer comment faire pour qu'il ignore la ou les cellules vides ?

  8. #8
    Expert éminent sénior

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 420
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 420
    Points : 16 264
    Points
    16 264
    Par défaut
    Re

    Il serait plus logique d'éviter les cellules vides dans une liste servant au paramétrage de procédures VBA sinon intercaler un contrôle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     For J = 8 To Ws.Range("H" & Rows.Count).End(xlUp).Row
         If not isempty(Ws.Range("H" & J)) then
             If Not ExistWorkSheet(Ws.Range("H" & J).Value) Then
    Chris
    PowerQuery existe depuis plus de 13 ans, est totalement intégré à Excel 2016 &+. Utilisez-le !

    Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson.
    Confucius

    ----------------------------------------------------------------------------------------------
    En cas de résolution, n'hésitez pas cliquer sur c'est toujours apprécié...

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    109
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2007
    Messages : 109
    Points : 60
    Points
    60
    Par défaut
    Merci pour ton aide precieuse

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

Discussions similaires

  1. Table qui existe et qui n'existe pas !
    Par yannj77 dans le forum Outils
    Réponses: 2
    Dernier message: 20/12/2006, 12h20
  2. Réponses: 3
    Dernier message: 14/08/2006, 19h13
  3. [SQL Server 2005] Selection de ce qui n'existe pas
    Par transistor49 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 20/04/2006, 09h20
  4. Réponses: 8
    Dernier message: 26/01/2006, 14h47
  5. Select qui n'existe pas
    Par daijoubu dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/01/2006, 18h34

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