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 :

erreur 1004, impossible de renommer une feuille comme une autre feuille


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Décembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 2
    Par défaut erreur 1004, impossible de renommer une feuille comme une autre feuille
    Bonjour,

    Je viens de rentrer toutes mes notes pour les bulletins et lorsque je clique sur le bouton "après avoir rempli le tableau , appuie là", un message d'erreur 1004 apparaît qui dit :
    Impossible de renommer une feuille comme une autre feuille, une bibliothèque d'objets référencée ou un classeur référencé par Visual Basic
    Lorsque j’appuie sur débogage, voilà ce qui apparaît:

    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 Bulletin()
    Dim i As Integer    'nombre d'élèves + 3
    Dim j As Integer    'nombre de lignes à intégrer dans le bulletin
    Dim k As Integer    'variable de création de bulletin/élève
    Dim l As Integer    'variable d'insertion des matières dans le bulletin
    Dim m As Integer    'variable ligne du bulletin
    Dim NbCarac As Long
    Dim titre As Boolean
     
    Application.ScreenUpdating = False
    i = Sheets("Résultats").Cells(2, 40).End(xlToLeft).Column   'nombre d'élèves + 3
    j = Sheets("Résultats").Range("A150").End(xlUp).Row         'nombre de matières
    For k = 3 To i 'pour chaque élève
        Sheets("RelevéStandard").Copy After:=Sheets(ThisWorkbook.Sheets.Count) 'insertion des bulletins
        With ActiveSheet
            .Name = Sheets("Résultats").Cells(2, k).Value & "_" & Sheets("Résultats").Cells(3, k).Value                 'Nom de la feuille
            .Cells(1, 1).Value = Sheets("Résultats").Cells(2, k).Value & " " & Sheets("Résultats").Cells(3, k).Value    'Nom de l'élève dans la cellule A1
            For l = 4 To j - 1 'insertion des matières
                m = l + 1 + 5
                titre = False
                NbCarac = 0
    La ligne d'erreur est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Name = Sheets("Résultats").Cells(2, k).Value & "_" & Sheets("Résultats").Cells(3, k).Value
    Merci d'avance pour votre aide !!

    Cordialement

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bien sûr, tu ne peux pas nommer 2 feuilles d'un même classeur identiquement.

    Avant tout, il faudra tester si une feuille existe déjà portant le nouveau nom.

  3. #3
    Nouveau candidat au Club
    Femme Profil pro
    Enseignant
    Inscrit en
    Décembre 2015
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Loiret (Centre)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Décembre 2015
    Messages : 2
    Par défaut
    Merci pour la réponse, mais je n'y connais rien, comment je peux faire pour tester?

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Votre code n'est pas vraiment optimisé mais répond certainement à des besoins de formation / compréhension en étant bien lisible. Si vous voulez l'optimiser:
    1. Regardez du côté Range.CurrentRegion
    2. Faites les transferts par les filtres par exemple

    Pour la partie Sheet, vous pourriez tester celà(non testé)

    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
    32
    33
    34
    35
    Sub Bulletin()
    Dim i As Integer 'nombre d'élèves + 3
    Dim j As Integer 'nombre de lignes à intégrer dans le bulletin
    Dim k As Integer 'variable de création de bulletin/élève
    Dim l As Integer 'variable d'insertion des matières dans le bulletin
    Dim m As Integer 'variable ligne du bulletin
    Dim NbCarac As Long
    Dim titre As Boolean
    Dim WshN As String 'ajouté / nom de la sheet destination
    Dim Wsh As Worksheet 'ajouté
     
    Application.ScreenUpdating = False
    i = Sheets("Résultats").Cells(2, 40).End(xlToLeft).Column 'nombre d'élèves + 3
    j = Sheets("Résultats").Range("A150").End(xlUp).Row 'nombre de matières
     
    For k = 3 To i 'pour chaque élève
     
       WshN = Sheets("Résultats").Cells(2, k).Value & "_" & Sheets("Résultats").Cells(3, k).Value
       On Error resume Next
       If IsObject(Worksheets(WshN)) Then
          Set  Wsh = Worksheets(WshN)
        Else: 
          Sheets("RelevéStandard").Copy After:=Sheets(ThisWorkbook.Sheets.Count) 'insertion des bulletins
          ActiveSheet.Name = WshN
          Set  Wsh = ActiveSheet
       End If
     
    With Wsh 
       .Name = Sheets("Résultats").Cells(2, k).Value & "_" & Sheets("Résultats").Cells(3, k).Value 'Nom de la feuille
       .Cells(1, 1).Value = Sheets("Résultats").Cells(2, k).Value & " " & Sheets("Résultats").Cells(3, k).Value 'Nom de l'élève dans la cellule A1
    End With
    For l = 4 To j - 1 'insertion des matières
    m = l + 1 + 5
    titre = False
    NbCarac = 0
    Vous pourriez fournir un exemple?

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/01/2015, 14h39
  2. [Toutes versions] coller les données d'une plage d'une cellule dans une cellule d'une autre feuille[VBA]
    Par arthson dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 24/01/2012, 17h37
  3. Réponses: 7
    Dernier message: 25/03/2011, 10h52
  4. Réponses: 4
    Dernier message: 15/10/2009, 13h33
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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