Création onglet (erreur 1004) [Résolu]

arthrax 28 Messages postés mardi 20 septembre 2005Date d'inscription 17 juillet 2008 Dernière intervention - 14 déc. 2006 à 10:39 - Dernière réponse : arthrax 28 Messages postés mardi 20 septembre 2005Date d'inscription 17 juillet 2008 Dernière intervention
- 14 déc. 2006 à 16:10
Bonjour,

J'ai une liste de 30 noms de seurveur dans une feuille excel et je veux créé 30 onglets correspondant aux noms de serveur.
Par exemple si dans la liste de serveur j'ai serveur1, serveur2, serveur3, 3 nouveaux onglet sont créés les uns apres les autres avec comme nom serveur1, serveur2, serveur3.

Mon problème c'est que mon code se lance mais à la 3e itération j'ai une erreur :
Erreur d'execution '1004':

Impossible de renommer une feuille comme une autre feuille, une
bibliotheque d'objets référencée ou un classeur référencée par Visual
Basic
J'ai mis en rouge la partie du code en erreur et lors des 2 premières itérations le code fonctionne bien

Comment corriger cette erreur ?
Et faire en sorte que le nouveau onglet soit placé apres les onglets existants ?
(je n'arrive pas à utilisé .Move after:= Worksheets(Worksheets.Count)
)

Dim NomAS400 As Range
Dim Valeur As Range
Dim Feuille As Worksheet

Set NomAS400 = Range("H8:H39") 'Liste des noms
For Each Valeur In NomAS400
    For Each Feuille In Worksheets
        If Feuille.Name = Valeur Then 'Cas où la feuille existe
            MsgBox "feuille existe"
        Else         'Cas où la feuille n'existe pas
            Sheets.Add.Name = Valeur   'Création de la feuille
            MsgBox "feuille crée"
        End If
    Next
Next

Merci d'avance
Arthrax
Afficher la suite 

Votre réponse

11 réponses

Meilleure réponse
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 14 déc. 2006 à 15:19
3
Merci
Re,
Dans ce cas essaie ceci :
Dim NomAS400 As Range 
Dim Valeur As Range 
Dim Feuille As Worksheet 

Dim FeuilleTrouve As Boolean 

Set NomAS400 = Range("H8:H39")   'Liste des noms
For Each Valeur In NomAS400 
    For Each Feuille In Worksheets 
        If Feuille.Name = Valeur Then   'Cas où la feuille existe
            FeuilleTrouve = True 
            Exit For 
        End If 
    Next 
    If Not FeuilleTrouve Then Worksheets.Add(, Sheets(1)).Name = Valeur 
Next 

@+: Ju£i?n
Pensez: Réponse acceptée

Merci jrivet 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 124 internautes ce mois-ci

Commenter la réponse de jrivet
lilo44 174 Messages postés vendredi 25 janvier 2002Date d'inscription 15 février 2007 Dernière intervention - 14 déc. 2006 à 10:45
0
Merci
Bonjour,

Il fadrait regarder (peut etre) la valeur de "Valeur" .
Peut etre que au moment du plantage, c'est un nom déposé.

Vu l'erreur, c'est ptet bien ca :)
Commenter la réponse de lilo44
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 14 déc. 2006 à 10:46
0
Merci
Salut,

En fait ton erreur vient du fait que tu continu à parcourir toutes les feuilles du classeur meme si tu à créer la feuille..

Ceci devrait corriger ton problème

Dim NomAS400 As Range 
Dim Valeur As Range 
Dim Feuille As Worksheet 

Set NomAS400 =  Range("H8:H39")  'Liste des noms
For Each Valeur In NomAS400 
    For Each Feuille In Worksheets 
        If Feuille.Name = Valeur Then  'Cas où la feuille existe
            MsgBox "feuille existe" 
        Else          'Cas où la feuille n'existe pas
            Sheets.Add.Name = Valeur    'Création de la feuille
            MsgBox "feuille crée" 
             Exit For 

        End If 
    Next 
Next 

@+: =89254 Ju£i?n
Pensez: Réponse acceptée
Commenter la réponse de jrivet
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 14 déc. 2006 à 10:47
0
Merci
Salut, c'est nromal tel que ta boucle est faite ça plantera toujours!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
Commenter la réponse de drikce06
lilo44 174 Messages postés vendredi 25 janvier 2002Date d'inscription 15 février 2007 Dernière intervention - 14 déc. 2006 à 10:49
0
Merci
ah oui exact :s

> []
Commenter la réponse de lilo44
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 14 déc. 2006 à 10:53
0
Merci
Quelques liens pour te donner idées pour éviter les plantages de ce type:http://www.codyx.org/snippet_renommer-feuille-classeur-excel_243.aspx
http://www.codyx.org/snippet_copier-feuille-excel_272.aspx

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
Commenter la réponse de drikce06
arthrax 28 Messages postés mardi 20 septembre 2005Date d'inscription 17 juillet 2008 Dernière intervention - 14 déc. 2006 à 13:00
0
Merci
Merci à tous ceux qui m'on répondu

Je viens de comprendre le problème et j'ai lu les liens de Drikce 06 et je me sens un peu perdu .

J'ai testé les liens de Drikce, ça fonctionne à condition de rentrer les infos voulues comme le nom de la feuille à changer or moi ici je ne le connait pas. J'ai testé plusieurs chose sans succès.

Donc si quelqu'un pourrait me donner un début de piste car là je galère pas mal et mon code est à recommencer entièrement .

Merci
Arthrax
Commenter la réponse de arthrax
jrivet 7401 Messages postés mercredi 23 avril 2003Date d'inscription 6 avril 2012 Dernière intervention - 14 déc. 2006 à 13:30
0
Merci
Re,

Est ce que ce que je te propose avec le EXIT FOR ne règle pas ton problème?

Je l'ai teste avec des noms de serveur entre H9 et H39 et cela ne me donne aucune erreur et creer bien les feuilles et je n'ai eu aucune erreur...

@+: Ju£i?n
Pensez: Réponse acceptée
Commenter la réponse de jrivet
arthrax 28 Messages postés mardi 20 septembre 2005Date d'inscription 17 juillet 2008 Dernière intervention - 14 déc. 2006 à 15:00
0
Merci
Effectivement mais si tu le relance, il t'affiche l'erreur.  Pour la création il n'y a pas de problème mais si un onglet porte le même nom, là ça bug. C'est dû aux 2 boucles for imbriquées.

Arthrax
Commenter la réponse de arthrax
drikce06 2247 Messages postés lundi 29 mai 2006Date d'inscription 29 mai 2008 Dernière intervention - 14 déc. 2006 à 15:16
0
Merci
C'est pour ça que je t'ai donné ces liens, avec les codes de mortalino, tu évitera ce bug! Et sinon si tu connais le nom de la feuille, c'est valeur, pour l'appel de la fonction tu met valeur dans l'appel au lieu d'un nom en dure! En tout cas en prenant des bouts de code et les idées de ces snippets tu devrai arrivé à tes fins!

Sinon jrivet, effectivement exit for marche uniquement pour le premier traitement, car la feuille ajouter existe déjà, mais la façon dont la boucle est faite, ça plante!

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
Commenter la réponse de drikce06
arthrax 28 Messages postés mardi 20 septembre 2005Date d'inscription 17 juillet 2008 Dernière intervention - 14 déc. 2006 à 16:10
0
Merci
Bien joué Ju£i?n  , ça marche du tonnerre. Tu viens de me faire gagner énormément de temps !!!!

Un grand merci à Ju£i?n et Drikce 06 . Grâce à vous j'apprend énormement en VBA.

Arthrax
Commenter la réponse de arthrax

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.