Créer de nouveaux onglets à partir d'une série fixe et d'un modèle

Arthur MARSY

XLDnaute Nouveau
Bonjour à tous et à toutes,

Je suis sous Excel 2007 et j'aimerais créer de nouveaux onglets à partir d'une série fixe et d'un modèle. Je m'explique :
> j'ai un classeur nommé "classeur.xls"
> avec un onglet nommé "liste" sur lequel j'ai un tableau à double entrée du style :
- des prénoms dans la première colonne "Pierre", "Paul", "Jacques", ... ;
- leurs âges dans la deuxième colonne ;
- leurs tailles dans la troisième colonne.
> et un onglet "modèle" qui sera le fomulaire de base pour les nouveaux onglets.

Donc, j'aimerais créer automatiquement des nouveaux onglets qui seraient :
> premier nouvel onglet
identique à l'onlet "modèle" renommé avec le prénom "Pierre", avec une case "Titre" renommé "Pierre"
et deux cases reprenant les informations "âge" et "taille" de Pierre renseignées dans l'onglet liste ;
> deuxième nouvel onglet
identique à l'onlet "modèle" renommé avec le prénom "Paul", avec une case "Titre" renommé "Paul"
et deux cases reprenant les informations "âge" et "taille" de Paul renseignées dans l'onglet liste ;
> troisième nouvel onglet
identique à l'onlet "modèle" renommé avec le prénom "Jacques", avec une case "Titre" renommé "Jacques"
et deux cases reprenant les informations "âge" et "taille" de Jacques renseignées dans l'onglet liste ;
>...

En parcourant le site, il me semble que la seule manière d'y parvenir serait un peu de visual basic. Or, autant vous dire que je suis plus qu'un bleu en la matière. (J'utilise à peine quelques termes dans l'écriture de macros pour de nouvelles commandes sous AutoCAD, mais çà s'arrête là.)

Bref, si une bonne âme pouvait m'aider là dessus ce serait cool.
Je ne cherche pas uniquement à prendre, mais surtout à comprendre.

À vous lire. À très bientôt.

C.J. : un fichier d'exemple "classeur" au format *.xls
 

Pièces jointes

  • Classeur.xls
    21 KB · Affichages: 131
  • Classeur.xls
    21 KB · Affichages: 138
  • Classeur.xls
    21 KB · Affichages: 141

juju_69

XLDnaute Occasionnel
Re : Créer de nouveaux onglets à partir d'une série fixe et d'un modèle

Hello,

voici une solution. Nb : Si la feuille existe déjà je la supprime.

Bonne soirée

Juju

Edit : Kikou LedzepFred
 

Pièces jointes

  • Classeur(1).zip
    13.2 KB · Affichages: 149
  • Classeur(1).zip
    13.2 KB · Affichages: 148
  • Classeur(1).zip
    13.2 KB · Affichages: 158
Dernière édition:

ledzepfred

XLDnaute Impliqué
Re : Créer de nouveaux onglets à partir d'une série fixe et d'un modèle

Bonsoir Arthur,

l'enregistreur de macros est très utile pour ce type de demande, ci-joint un fichier dans lequel j'ai placé un bouton (sur feuillet liste et qui après clic déclenche le code de cette macro :
Code:
Sub copie_onglet()
Sheets("liste").Select
For i = 3 To [B65536].End(xlUp).Row 'de la 3ème ligne du tableau à la dernière
    nom = Range("B" & i) 'les 3 valeurs d'une ligne sont placées dans 3 variables
    age = Range("C" & i)
    taille = Range("D" & i)
    Sheets("modèle").Copy After:=Sheets(Sheets.Count) 'je copie le feuillet modèle (qui vient se placer en dernière position
    ActiveSheet.Name = nom 'je renomme ce nouveau feuillet avec le nom
    With Sheets(nom) 'avec ce feuillet
        .Range("B2") = nom 'je colle le nom en B2
        .Range("C4") = age 'l'age en C4
        .Range("C5") = taille 'la taille en C5
    End With
    Sheets("liste").Select 'je reviens sur liste pour la ligne i+1
Next
End Sub

N'heistes pas si tu n'as pas tout compris

a+

PS: je sais pas si ça va fonctionner en 2007, à tester!! (tu es sur le forum 2003)

edit : salut juju
 

Pièces jointes

  • Classeur(1).xls
    37 KB · Affichages: 233
  • Classeur(1).xls
    37 KB · Affichages: 249
  • Classeur(1).xls
    37 KB · Affichages: 253

JNP

XLDnaute Barbatruc
Re : Créer de nouveaux onglets à partir d'une série fixe et d'un modèle

Bonjour le forum :),
LedZepFred, j'ai testé sous 2007, ça fonctionne (généralement c'est dans l'autre sens que ça peux bloquer). Juste une remarque de bon sens : attention aux caractères spéciaux dans le champs Nom qui ne seront pas acceptés comme noms d'onglets (j'ai eu le problème avec des dates en //).
Bonne journée :cool:
 

Arthur MARSY

XLDnaute Nouveau
Re : Créer de nouveaux onglets à partir d'une série fixe et d'un modèle

Bonjour,

Merci à vous tous, juju_69, ledzepfred, et JNP. Je ne m'attendais pas à une réponse aussi rapide, j'apprécie votre efficacité.

juju_69 : lorsque je supprime les onglets "Pierre", "Paul", et "Jacques", puis j'éxécute ta macro "copie", j'ai le message d'erreur "Microsoft Visual Basic" suivant :
Erreur d'exécution '9' :
L'indice n'appartient pas à la sélection.

Lorsque je sélectionne "débogage", le problème se situe apparemment à cette ligne : Sheets("modèle").Copy Before:=Sheets(3).

ledzepfred, j'apprécie ta méthode et la création du bouton, c'est vrai que ce sera plus simple. Tes explications m'ont permis de comprendre la formulation de l'écriture de ta macro. C'est assez clair pour un bleu. J'aurais juste une question : à la fin, c'est bien "Sheets("liste").Select" qui te fait revenir sur liste et "Next" pour la ligne i+1 ?

JNP, merci pour ta remarque de bon sens, sans ça je n'aurais pas essayé de suite. Suite au message d'erreur obtenu, les trois points à vérifier pour ne pas avoir d'erreur d'éxécution (code d'erreur 1004 : nom de feuille ou de graphique non valide) pour le nom des nouveaux onglets (donc ceux de la liste) sont :
- Le nom ne dépasse pas 31 caractères ;
- Le nom ne contient aucun des caractères suivants : \ / ? * [ ou ] ;
- Le champ du nom n'est pas vide.

Encore merci, ça va me faire gagner beaucoup de temps. Bonne après-midi. À bientôt.
 

ledzepfred

XLDnaute Impliqué
Re : Créer de nouveaux onglets à partir d'une série fixe et d'un modèle

bonjour arthur, juju, JNP,


J'aurais juste une question : à la fin, c'est bien "Sheets("liste").Select" qui te fait revenir sur liste et "Next" pour la ligne i+1 ?

effectivement lors de la copie d'une feuille et son renommage (renomination, renominement, c'est comme vous voulez), celle-ci devient active, il faut donc revenir sur le feuillet liste juste avant le next qui implique l'incrément de i.

JNP: excellente remarque pour les caractères spéciaux je n'y avait pas pensé, reste à notre ami arthur à tester les prénoms comme Noêl, jerôme, Noë pour voir si un feuillet peut prendre ces accents, merci également pour le test sous 2007, on m'a dit que les propriétés et méthodes ne sont pas tout à fait les mêmes entre 2003 et 2007, donc dans le doute j'ai préféré prévenir Arthur.

A+
 

Arthur MARSY

XLDnaute Nouveau
Re : Créer de nouveaux onglets à partir d'une série fixe et d'un modèle

Bonjour,

Merci juju_69 pour ta précision.

ledzepfred, j'ai renommé deux feuilles avec les chaînes suivantes :
- ²&é"'(-è_çà)=^$ù,;! ;
- ~#{|`^@}¤ÉÀ .
>> Aucun problème. De même avec une multitude de caractères différents issus de la table des caractères (même des idéogrammes et des combinaisons telles alt+0201 pour le É et les autres È, À, œ, ...).
En tout cas, comme je l'ai indiqué dans mon précédent post, apparemment seuls les caractères suivants : \ / ? * [ ou ] et également ":" ne sont pas possibles pour renommer les feuilles.

Merci et sans doute à bientôt sur d'autres sujets.
 

Discussions similaires

Statistiques des forums

Discussions
314 656
Messages
2 111 608
Membres
111 218
dernier inscrit
Jean-Kev