Création feuille supplémentaire en fonction d'une liste

Fermé
MirouAdri Messages postés 8 Date d'inscription vendredi 22 février 2019 Statut Membre Dernière intervention 2 juillet 2019 - Modifié le 22 févr. 2019 à 15:05
via55 Messages postés 14501 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 novembre 2024 - 25 févr. 2019 à 11:45
Bonjour,

Voici mon soucis :

Dans ma feuille 1, j'ai une liste dans une colonne (A), je souhaiterais copier une feuille type présente dans le fichier (ex Feuil 2) et la mettre à la suite des autres, que le nom de cette nouvelle feuille ait le nom de la case de la colonne A. En bonus, tant qu'à faire, je souhaiterais que ce nom soit aussi dans la case B2 de la nouvelle Feuille et qu'un lien hypertexte s'ajoute dans la colonne 5 de la feuille 1 avec le nom de de la feuille qui est identique à B2.

Pensez vous pouvoir m'aider ?

Je sais un peu utiliser VBA bien sûr.

Merci d'avance
A voir également:

5 réponses

via55 Messages postés 14501 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 novembre 2024 2 735
22 févr. 2019 à 15:09
Bonjour

Macro à mettre dans un module de l'éditeur VBA et à lacer depuis la feuil1 à condition d'avoir crée aussi préalablement une feuille appelée Modèle
Sub creation_feuilles()

ligne = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row ' drnière ligne remplie en A
For n = 1 To ligne 'boucle depuis ligne 1 à la dernière
nom = Range("A" & n) ' nom à donner
    Sheets("Modele").Select
    Sheets("Modele").Copy After:=Sheets(Sheets.Count) ' copie Modèle en dernier
    Sheets("Modele (2)").Select
    Sheets("Modele (2)").Name = nom ' renomme feuilel crée
    Range("B2").Select
    ActiveCell.FormulaR1C1 = nom ' met le nom aussi en B2
    Sheets("Feuil1").Select
    Range("E" & n).Select
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:= _
        nom & "!A1", TextToDisplay:=nom ' met le lien hypertexet en col E de Feuil1
   Next
End Sub

Cdlmnt
Via
1
MirouAdri Messages postés 8 Date d'inscription vendredi 22 février 2019 Statut Membre Dernière intervention 2 juillet 2019
22 févr. 2019 à 15:45
Bonjour Via 55.

Merci pour ton aide !!

Tu as bien compris ce que je voulais cependant çà ne fonctionne pas car ma colonne avec les noms est en "C" et commence à la ligne 8. Je ne sais pas où changer ces paramètres.

De plus, si j'ajoute plus tard des noms à la suite, je ne souhaite pas que le "bouton" écrase mes premières feuilles. Est ce possible ?

Grand merci d'avance
0
via55 Messages postés 14501 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 novembre 2024 2 735
22 févr. 2019 à 16:20
Tu avais parlé de la colonne A !!
La colonne de la liste est mentionnée 1ere ligne ici 1; change le 1 en 3 pour la colonne C
Comme cette instruction recherche la dernière ligne remplie si tu ajoutes des noms pas de souci
ligne = Columns(1).Find("*", , , , xlByColumns, xlPrevious).Row ' drnière ligne remplie en A

La boucle part de la ligne 1 dans l'instruction suivante, rempale le 1 par 8 pour partir de la ligen 8
For n = 1 To ligne

La colonne de recherche est aussi définie ici, change alors le A en C
nom = Range("A" & n) ' nom à donner

1
MirouAdri Messages postés 8 Date d'inscription vendredi 22 février 2019 Statut Membre Dernière intervention 2 juillet 2019
22 févr. 2019 à 16:30
Je vais essayer tout çà, merci en tout cas.

Ma crainte est que je vais modifier au fur et à mesure les nouvelles feuilles crées, et je ne souhaite pas qu'en ré utilisant la macro ( suite à l'ajout en colonne C des noms supplémentaires, cela écrase les feuilles existantes.
0
MirouAdri Messages postés 8 Date d'inscription vendredi 22 février 2019 Statut Membre Dernière intervention 2 juillet 2019
22 févr. 2019 à 17:01
çà marche pour la première partie

Mais comme je craignais, je ne sais pas réitérer l'opération après avoir ajouter 10 noms dans la colonne C à la suite des autres ...
0
via55 Messages postés 14501 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 novembre 2024 2 735
22 févr. 2019 à 18:25
Oui si tu rajoutes des noms après il faut vérifier que la feuille n'existe pas déjà alors après la ligne
nom = Range("A" & n) ' nom à donner
rajoute celles ci :
dj = 0
For x = 1 To Sheets.Count
If Sheets(x).Name = nom Then dj = 1
Next
If dj = 0 Then

puis avant le Next qui est avant le End sub rajoute
End If
1
MirouAdri Messages postés 8 Date d'inscription vendredi 22 février 2019 Statut Membre Dernière intervention 2 juillet 2019
25 févr. 2019 à 08:57
Tout Fonctionne parfaitement Via 55, merci pour ton aide précieuse.
Me reste juste un soucis, c'est que le lien ne fonctionne que quand il n'y a pas d'espace dans le nom ...

Mille merci
0
via55 Messages postés 14501 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 novembre 2024 2 735
25 févr. 2019 à 09:40
Re

Exact pour qu'un nom avec espace soit accepté il doit être encadré par des apostrophes
Modifie la ligne d e macro qui récupère le nom ainsi
nom = "'" & Range("A" & n) &"'"
avant et après le & c'est bien guillemet apostrophe guillemet attention

Cdlmnt
Via
1
MirouAdri Messages postés 8 Date d'inscription vendredi 22 février 2019 Statut Membre Dernière intervention 2 juillet 2019
25 févr. 2019 à 10:06
Ca marchait nickel mais mnt il m'indique ceci :

Erreur d'exécution '1004':
Vous avez tapé un nom de feuille ou de graphique non valide. Vérifiez les points suivants
- le nom ne dépasse pas 31 caractères ( espace compris, non )
- Le nom ne contient aucun caractère des caractères suivants : \/ ? * [ ] NON
- Le champ du nom n'est pas vide
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
via55 Messages postés 14501 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 novembre 2024 2 735
25 févr. 2019 à 11:45
Renvoie moi le fichier via mon-partage.fr que je puisse voir ce qui bug
0