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 :

Copier coller onglets en les nommant selon une liste


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Femme Profil pro
    Inscrit en
    Décembre 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2012
    Messages : 2
    Par défaut Copier coller onglets en les nommant selon une liste
    Bonjour,

    Je cherche à créer x onglets :
    nom de l'onglet : selon la liste fourni en onglet 1 ("participants")
    contenu de l'onglet : la copie de l'onglet 2 ("HADS" = contenu du test)

    Ça fait plutôt bien le job, sauf une erreur à la fin : ça ne s’arrête pas en bout de liste mais ça me rajoute un dernier onglet HADS(2)

    Pouvez-vous me dire ce qui ne va pas ?


    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
    Sub Creation()
    Dim J As Long
    Dim Ws As Worksheet
     
      Application.ScreenUpdating = False
      Set Ws = ActiveSheet
      For J = 1 To Ws.Range("A" & Rows.Count).End(xlDown).Row
        If FeuilleExiste(Ws.Range("A" & J).Value) = False Then
          Sheets("HADS").Copy after:=Sheets(Sheets.Count)
          ActiveSheet.name = Ws.Range("A" & J)
        End If
      Next J
      Ws.Select
    End Sub
     
    Function FeuilleExiste(Nom As String) As Boolean
      On Error Resume Next
      FeuilleExiste = Sheets(Nom).name <> ""
      On Error GoTo 0
    End Function

    merci d'avance pour votre aide

  2. #2
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Salut,

    Voici une proposition de modification.

    Le problème venait de la ligne qui détermine la fin de ton tableau dans la Ws.
    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
    Sub Creation()
    Dim J As Long
    Dim Ws As Worksheet
    
    Application.ScreenUpdating = False
    Set Ws = ActiveSheet
    nbligne = Application.CountA(Ws.Range("A:A"))
    For J = 1 To nbligne
        If FeuilleExiste(Ws.Range("A" & J).Value) = False Then
            Sheets("HADS").Copy after:=Sheets(Sheets.Count)
        ActiveSheet.Name = Ws.Range("A" & J)
        End If
    Next J
    Ws.Select
    End Sub
    
    Function FeuilleExiste(Nom As String) As Boolean
    On Error Resume Next
    FeuilleExiste = Sheets(Nom).Name <> ""
    On Error GoTo 0
    End Function
    J'ai utilisé la fonction NBVAL pour déterminer le nb de passage dans la boucle.

  3. #3
    Membre Expert Avatar de jerome.vaussenat
    Homme Profil pro
    Formateur Bureautique
    Inscrit en
    Janvier 2011
    Messages
    1 629
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 56
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Formateur Bureautique
    Secteur : Enseignement

    Informations forums :
    Inscription : Janvier 2011
    Messages : 1 629
    Par défaut
    Re,

    Pour plus de précision sur ton "erreur"
    ta ligne de code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MauvaiseMethode= Range("A" & Rows.Count).End(xlDown).Row
    deux autres methodes que tu as mélangées
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    DerniereLigne = Range("A" & Rows.Count).End(xlUp).Row
    FinTableau = Range("A1").End(xlDown).Row

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/01/2016, 10h08
  2. Réponses: 1
    Dernier message: 22/10/2013, 10h49
  3. Réponses: 3
    Dernier message: 25/01/2007, 08h54
  4. Réponses: 3
    Dernier message: 11/05/2006, 17h30
  5. Réponses: 2
    Dernier message: 06/04/2006, 21h18

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