Bonjour tout le monde.
J'ai longtemps hésité avant de m'adresser à vous, mais mes recherches demeurant infructueuses, je me lance.
Je remercie d’avance toutes les personnes qui prendrons le temps lire mon post et qui peut-être pourrons me proposer une solution.
Le contexte :
J’ai une feuille principale (feuille 1) où je fais une liste des produits chimiques avec leurs fonctions.
J’ai une feuille modèle (feuille 2 ) qui me permet de rentrer les mentions de danger de ces produits.
Ce que j’ai déjà :
- Sur la feuille 1 j’entre ma liste de produits, par exemple 5 produits
- Je clique sur un bouton « générer fiches produits »
- Une nouvelle feuille se crée pour chacun des 5 produits
- Chaque feuille porte le nom du produit associé
- Pour chaque nouvelle feuille crée, un lien hypertexte se créer sur la feuille 1 en face du produit correspondant
Tout ça fonctionne plutôt bien sauf que…
Le problème :
Je crée mes 5 fiches produits, tout va très bien, mais cela ne fonctionne plus lorsque je rajoute un sixième produits.
Quand je clique une nouvelle fois pour générer la fiche de mon sixième produit, mon « programme » repars du tout premier produit.
La solution que je n’arrive pas à mettre en œuvre :
Lorsque que je clique sur générer fiche produit, je voudrais que ça commence après le dernier ajout.
Par exemple en vérifiant un à un, si les produits de la feuille 1 correspondent déjà à une fiche produit associé pour ensuite générer une fiche produit pour ceux qui n’en non pas.
Si vous pensez à autres choses, je suis preneur.
Voici le code dont je me sert :
Sub Creation_Onglets_Selon_Modele()
Dim c As Range
Application.ScreenUpdating = False
'On crée les onglets qui sont listés à partir de la cellule
'A2 de l'onglet nommé Liste
Set c = Worksheets("Fiche principale").Range("B3") 'cellule de départ
Do Until IsEmpty(c) 'boucle tant que c est vide
'on copie le modèle en dernier
Worksheets("Tableau d'analyse CMR").Copy After:=Worksheets(ThisWorkbook.Sheets.Count)
With Worksheets(ThisWorkbook.Sheets.Count) 'avec l'onglet créé
.Name = c.Value 'on renomme
'on remplit notre modèle comme on veut...
.Range("C1") = c.Value
.Range("C3") = Date
End With
Set c = c.Offset(1, 0) 'prochaine ligne
Loop
Application.ScreenUpdating = True
End Sub
Pour respecter le travail des autres, je précise tout de même que le code n'est pas de moi et mise à part deux trois lignes je ne comprend pas grand chose à tout cela (en attente de plus de temps pour me former convenablement au VBA)
Je renouvelle mes remerciements à toutes personnes ayant lu mon commentaire jusque ici
Cordialement Funka