arthrax
Messages postés35Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention31 décembre 2023
-
14 déc. 2006 à 10:39
arthrax
Messages postés35Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention31 décembre 2023
-
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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 14 déc. 2006 à 15:19
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
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 14 déc. 2006 à 10:46
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
arthrax
Messages postés35Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention31 décembre 2023 14 déc. 2006 à 13:00
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 .
arthrax
Messages postés35Date d'inscriptionmardi 20 septembre 2005StatutMembreDernière intervention31 décembre 2023 14 déc. 2006 à 15:00
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.
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 14 déc. 2006 à 15:16
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: