Création feuille supplémentaire en fonction d'une liste
MirouAdri
Messages postés
8
Date d'inscription
Statut
Membre
Dernière intervention
-
via55 Messages postés 14512 Date d'inscription Statut Membre Dernière intervention -
via55 Messages postés 14512 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Création feuille supplémentaire en fonction d'une liste
- Liste déroulante excel - Guide
- Fonction si et - Guide
- Liste déroulante en cascade - Guide
- Creation compte gmail - Guide
- Création site web - Guide
5 réponses
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
Cdlmnt
Via
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
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
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
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
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
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
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
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
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
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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