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 :

Vérification du nom des feuilles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Juin 2012
    Messages : 10
    Par défaut Vérification du nom des feuilles
    Bonjour à tous
    j'ai créé une macro qui me permet à partir d'un classeur source de créer des onglets (feuilles) dans un autre classeur
    par contre une fois que ces onglets sont existants, je n'arrive pas à créer la commande qui va vérifier leur existence et donc ma macro plante.
    Le hic pour moi c'est que j'arrive à récupérer les données de cellules différentes pour créer des onglets mais pas pour la vérif
    d'avance merci

    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 i As Long
    Dim i2 As Long
    Dim sh As Worksheet
    Dim trouve As Boolean
     
    Sub ren_feuille()
    Workbooks("conges.xlsm").Activate
    Set Clasdest = ActiveWorkbook
    Workbooks.Open "d:\vba\test_conges2.xlsx"
    Set Clasourc = ActiveWorkbook
    'clasourc.Sheets("modele").Activate ' pour copier les valeurs de la feuille
    'Range("a2:k3").Copy
    'ActiveSheet.Paste clasdest.ActiveSheet.Range("a1")
        Clasdest.Activate
        Clasourc.Sheets("feuil1").Activate
        For i = 2 To Range("b" & Rows.Count).End(xlUp).Row
        Set sh = Clasdest.Worksheets.Add
        sh.Name = Clasourc.Sheets("feuil1").Range("c" & i).Value & "  " & Range("b" & i).Value
        Next i
     
    End Sub

  2. #2
    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 176
    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 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une solution parmi d'autres
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     Dim wkb As Workbook: Set wkb = ThisWorkbook
     Application.ScreenUpdating = False
     On Error Resume Next
     wkb.Sheets.Add
     ActiveSheet.Name = "NomFeuille"
     If Err <> 0 Then
      Application.DisplayAlerts = False
      ActiveSheet.Delete ' Supprime la feuille créée
      Application.DisplayAlerts = True
     End If
     Application.ScreenUpdating = True
    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

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Juin 2012
    Messages : 10
    Par défaut
    merci de ta réponse
    mais le problème pour moi résulte du "nom feuille"
    c'est une gestion de congé
    donc les onglets doivent rester
    et comme le nom de l'onglet est en fonction des cellules données
    je ne vois pas comment faire
    ou il faut que je créé une liste indépendante ?

  4. #4
    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 176
    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 176
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Une solution parmi d'autres
    Dans cet exemple la liste des feuilles à vérifier se trouve dans la feuille Param plage A6:A12
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     Dim r As Long
     Dim IsShtExist As Boolean
     Dim sht As Worksheet, sh As Worksheet
     Dim lst As Range
     Set sht = ThisWorkbook.Worksheets("Param")
     Set lst = sht.Range("A6:A12")
     For r = lst.Row To lst.Row + lst.Rows.Count - 1
      For Each sh In ThisWorkbook.Worksheets
       IsShtExist = (sh.Name = sht.Cells(r, 1))
       If IsShtExist Then Exit For
      Next sh
      If Not (IsShtExist) Then MsgBox "La feuille " & sht.Cells(r, 1) & " n'est pas présente"
     Next r
    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

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Juin 2012
    Messages : 10
    Par défaut
    Merci de la réponse

    je suis la un peu tard désolé mais je vais essayer

    merci encore

  6. #6
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cher (Centre)

    Informations forums :
    Inscription : Juin 2012
    Messages : 10
    Par défaut
    Bonjour,
    voici comme je l'ai intégré mais il doit me manquer une sortie de boucle

    merci encore de vos réponses

    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
    Dim i As Long
    Dim r As Long
    Dim IsShtExist As Boolean
    Dim sht As Worksheet, sh As Worksheet
    Dim lst As Range
    Sub test2()
    Workbooks("conges.xlsm").Activate
    Set Clasdest = ActiveWorkbook
    Workbooks.Open "d:\vba\test_conges2.xlsx"
    Set Clasourc = ActiveWorkbook
    Clasdest.Activate
    Clasourc.Sheets("feuil1").Activate
     
    Set sht = ThisWorkbook.Worksheets("Feuil1")
     Set lst = sht.Range("A6:A12")
     For r = lst.Row To lst.Row + lst.Rows.Count - 1
      For Each sh In ThisWorkbook.Worksheets
      IsShtExist = (sh.Name = sht.Cells(r, 1))
        If IsShtExist Then GoTo e1 'Exit For
      Next sh
      If Not (IsShtExist) Then GoTo e2 'MsgBox "La feuille " & sht.Cells(r, 1) & " n'est pas présente"
     Next r
    e2:
    For i = 2 To Range("b" & Rows.Count).End(xlUp).Row
        Set sh = Clasdest.Worksheets.Add
        sh.Name = Clasourc.Sheets("feuil1").Range("c" & i).Value & "  " & Range("b" & i).Value
        Next i
     
    e1:
    Exit Sub
    End Sub

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

Discussions similaires

  1. récupérer nom des feuilles excel
    Par hector2 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 22/04/2020, 12h19
  2. Liste des noms des feuilles d'un classeur
    Par marc56 dans le forum Excel
    Réponses: 10
    Dernier message: 22/09/2007, 15h49
  3. [iReport] Export XL : personnaliser le nom des feuilles
    Par jtouille dans le forum iReport
    Réponses: 5
    Dernier message: 13/06/2007, 10h37
  4. Geler le nom des Feuilles Excel
    Par shadockgreg dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 18/11/2006, 18h41
  5. Comment remplir un ComboBox avec le nom des feuilles Excel ?
    Par libracom dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 27/06/2005, 15h14

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