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 :

Copie d'une feuille : "Une formule ou une feuille à déplacer contient le nom blabla", Renommage automatique


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 21
    Par défaut Copie d'une feuille : "Une formule ou une feuille à déplacer contient le nom blabla", Renommage automatique
    Bonjour le forum,

    J'ai l'impression de poster tous les jours, et je m'excuse par avance.

    J'ai rencontré un problème lors de la copie d'une feuille.
    En fait, je souhaite prendre la feuille active comme modèle, la copier, et créer une nouvelle feuille où la coller. Etant donné que j'effectue une boucle, la feuille active change à chaque fois.
    Mais voilà, lorsque je lance la Sub, ce message apparaît: "Une formule ou une feuille à déplacer contient le nom "Entree", blablabla" et ça me met 8 messages d'erreur par feuille, tout cela répété à chaque feuille. Donc je dois cliquer un grand nombre de fois sur oui, pour valider ces 8 x ??? messages d'erreur
    J'ai tenter de mettre:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     application.displayalert=false
    en début de code puis de réactiver cette fonction à la fin mais le programme n'a pas voulu s'exécuter...

    En fait, je fais appel à la fonction qui génère les feuilles lors du clic sur le bouton valider de mon userform. J'avais pensé désactiver DisplayAlert dans la Sub CommandButtonValider_Click() mais je vais aussi bloquer les messages d'erreur dûs aux mauvais remplissages du formulaire, ce que je ne veux évidemment pas faire.

    Je n'ai aucune cellule à ma connaissance qui s'appelle "Entree" ou tous les autres noms qu'Excel me fournit. Elles existaient sur une feuille, mais celle-ci a été supprimées donc je ne vois pas en quoi elles interviennent.


    Je rencontre en parallèle un autre problème. Voici mon code pour créer de nouvelles feuilles à partir d'un modèle:

    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
    Public Sub CreationFeuille()
     
    'Mise en mémoire des menus et des calories
     
    Call InitialisationPlanning
     
    'Pour chacune de feuilles créées
    Dim i As Integer
     
    For i = 1 To Duree
     
        With ActiveWorkbook.ActiveSheet
                    .Copy After:=Worksheets(Worksheets.count)
                   .Name = "Jour " & i + 1    'On renomme la feuille
        End With
        'Sheets.Add After:=Worksheets(Worksheets.count)
        Call CreationPlanning
        Call GenererMatin       'Génération du petit déjeuner
        Call GenererMidi           'Génération du déjeuner
        Call GenererSoir            'Génération du diner
        ActiveSheet.Range("B1") = Date1
        ActiveSheet.Range("B2") = Date2
        ActiveSheet.Range("D3") = Date1 + i
        ActiveSheet.Range("D4") = Date1 + i
        Next
     
    End Sub
    Duree est évidemment un paramètre connu, comme toutes les subs auxquelles je fais appel.
    Je me base sur une feuille nommée "Jour 1". J'aimerais que la suivante s'appelle "Jour 2", etc. Le problème est qu'avec l'erreur affichée, Jour 1 est renommé en jour 2 et la dernière feuille devient Jour 1 (Duree). Par exemple si Duree = 4, j'aurais:"Jour 2", "Jour 3", Jour 4, Jour 1 (4).


    Merci

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Novembre 2011
    Messages
    1 503
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Irlande

    Informations professionnelles :
    Activité : Chef de projet en SSII

    Informations forums :
    Inscription : Novembre 2011
    Messages : 1 503
    Par défaut
    Bonjour

    Ce petit bout de code te créé 5 feuilles dont les noms se créés automatiquement.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub ch0ubida()
     
    For i = 1 To 5
    Worksheets("Jour 1").Copy After:=Worksheets(Worksheets.Count)
    Worksheets(Worksheets.Count).Name = "Jour " & Worksheets.Count
    Next i
    End Sub
    Sauf erreur de ma part, je crois que c'est ce que tu recherches.
    Pas besoin d'enlever les alertes, etc...

    N'hésite pas à revenir vers moi !

    Cordialement,
    Kimy

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Décembre 2014
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2014
    Messages : 21
    Par défaut
    Merci pour ton aide

    J'ai copié ton code en l'adaptant mais l'erreur revient toujours... Je ne comprends pas: je n'ai aucune formule ou feuille qui porte le nom indiqué par excel!

    Etant donné que j'ai 4 autres feuilles que "Jour 1" qui sont masquées, je dois écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Worksheets(Worksheets.Count).Name = "Jour " & Worksheets.Count -4
    non ?

    Est-ce qu'il y a une façon de rechercher à quoi correspond les noms données par Excel ? Ce message d'erreur est vraiment trop embêtant, et il ralentit l'exécution du programme.

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Je ne suis pas sûr d'avoir tout compris, mais voici 2 pistes :
    pb1 : tu dois avoir un nom "Entree", dans ta feuille de base et ce nom doit être étendu au classeur. Vérifie en ouvrant le gestionnaire de noms. Tu ne peux copier une feuille sans pb que si elle ne contient que des noms limités à la feuille, ou s'il n'y a pas de nom, bien-sûr.

    pb2 : quand tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     With ActiveWorkbook.ActiveSheet
                    .Copy After:=Worksheets(Worksheets.count)
                   .Name = "Jour " & i + 1    'On renomme la feuille
        End With
    Après la copie la feuille active change, il faut donc rappeler ActiveWorksheet
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      ActiveWorkbook.ActiveSheet.Copy After:=Worksheets(Worksheets.count)
    ActiveWorkbook.ActiveSheet.Name = "Jour " & i + 1    'On renomme la feuille
    Cordialement,

    PGZ

Discussions similaires

  1. Réponses: 4
    Dernier message: 19/11/2014, 16h44
  2. Réponses: 5
    Dernier message: 27/02/2014, 12h09
  3. Réponses: 3
    Dernier message: 14/08/2012, 10h24
  4. comment protéger les formules d'une feuille de calcul
    Par marssupilamis1 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 07/11/2007, 19h01
  5. [Formule] Accès à une feuille connaissant son nom
    Par flo_flo dans le forum Excel
    Réponses: 3
    Dernier message: 04/05/2007, 19h22

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