Microsoft 365 Création d’onglets à partir d'une fiche type et d'une base de donnée

July35

XLDnaute Nouveau
Bonjour,

Bon je vais essayer d'être la plus explicite possible avec mon langage de débutante :
Je travaille actuellement sur une base de donnée (onglet "recap") qui représente un listing client et le chiffrage de travaux à apporter chez eux : ma colonne A est l'identifiant client puis les suivantes sont les nom, adresses, etc ...
J'ai un deuxième onglet qui représente un modèle de fiche (onglet "modele") : dedans j'ai complété ma fiche à l'aide de formule pour que quand je rentre dans la case "K2" le numéro de l'identifiant tout se met à jour automatiquement.
Afin d'éviter de répéter 100 fois la même manip de copier-coller l'onglet modèle, renommer au bon identifiant et changer l'identifiant dans la fiche … je souhaiterai créer une macro.
En faisant des recherches je suis tombé sur un site très intéressant qui parlait de mon soucis mais en adaptant selon ma demande je n'arrive pas à la lancer correctement :

Sub CreeOnglets()
Application.ScreenUpdating = False
supOnglets
Set bd = Sheets("recap")
ligrecap = 4
Do While ligBD <= bd.[A65000].End(xlUp).Row
nom = bd.Cells(ligrecap, 4)
Sheets("modele").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = "jf_" & nom
Set fiche = Sheets("jf_" & nom)
fiche.Range("K2").Value = nom
fiche.Range("K2").Value = bd.Cells(ligrecap, "A")
ligrecap = ligrecap + 1
Loop
End Sub

Ma première question est :
Les problèmes sont qu'il renomme mon onglet "modele" (en enlevant la ligne ça plante quand même) et que tous les onglets qu'ils crée sont bien à jour avec l'identifiant en case "K2" mais les noms de fichiers sont sur les noms des clients et non les identifiants.
Avec quelle formule et où je modifie la macro pour que les noms des onglets se nomment par l'identifiant rentrer automatiquement à la case "K2" ?

Ma deuxième question est :
Depuis que j'ai relancé un excel sans enregistrer le fichier exemple type trouvé sur le site et en copiant collant simplement sa formule avec les bons noms de macros,
Excel m'affiche un message d'erreur "Erreur de compilation : sub ou function non définie". Vous avez des idées du problème ?

Merci d'avance pour votre aide !
 
Solution
Re Bonsoir July, Le Forum

Ah zut oui, Mince alors... Bon alors il faut être un peu bourrin alors...
On doit reconstruire l'Auto-Filter aussi ... Mais je dissocie les actions car sinon vu le nombre d'onglets et les Data/Formules ca risque de planter et de durer relativement un bail...

Voilà donc la v03 toute chaude !

Bonne soirée
@+Thierry

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir ou Bonjour @July35 , le Forum

Un peu confus tout ça :rolleyes:

Ci-joint un exemple avec ce que j'ai compris de ce que tu voulais faire en reprenant un peu ton code...

Bien à toi, à vous
@+Thierry
 

Pièces jointes

  • XLD_July35_Sheets_Generator.xlsm
    44.6 KB · Affichages: 31

July35

XLDnaute Nouveau
Merci beaucoup pour ta réponse Thierry !
Oui c'est un peu confus je te l'accorde totalement. :confused:
Mais tu as presque compris la totalité de ma demande ! (Mis à part les noms d'onglets que je souhaiterai qu'ils soient en "Filename")
Le problème c'est que quand je copie ta macro et l'adapte sur la mienne ça ne marche pas : elle ne se lance même pas, aucuns messages d'erreur.
Je joins mon fichier excel simplifié pour que l'on comprenne mieux mon soucis.
Je souhaiterai qu'à partir de l'onglet "recap" des fiches soit générées automatiquement avec l'onglet "modele" en modifiant la case "K2" et le nom de l'onglet crée avec le même nom.
 

Pièces jointes

  • DQE_Branchements_macro_test.xlsm
    174.7 KB · Affichages: 11

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour July, le Forum

J'ai regardé ton fichier, oui c'est normal que la macro ne se lance pas, j'ai mis une condition que tu peux mettre en commentaire :

VB:
If ThisWorkbook.Worksheets.Count > 2 Then Exit Sub          'added Thierry au cas où ca peut servier si on lance deux fois le bouton créer...

(Si il y a plus de deux onglets, on sort !)

Pour la suite, je regarde et essaie de comprendre, je repasse...

@+Thierry
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonjour July

Voilà le fichier adapté à ton classeur sur lequel tu as bien pris soin de masquer les noms de famille et les adresses des gens (c'est très bien, il faut que tout le monde fasse comme toi :))

Je pense que tu n'étais pas si loin de la solution en fait !

Bonne découverte et bonne Journée
@+Thierry

Edit : PS j'ai ajouté des petits "plus" au fait ;)
 

Pièces jointes

  • XLD_July35_Sheets_Generator_v00.xlsm
    211.2 KB · Affichages: 13

July35

XLDnaute Nouveau
Super merci beaucoup Thierry pour ton aide !
J'ai juste (encore) un petit problème :
Au préalable, je met bien le filtre de la fiche modele en "1" dans la colonne G pour ne voir apparaître que les lignes présentant des valeurs. Or quand je parcours les fiches après macro, je constate que le colonne G présente des "0" mais que le filtre est bien en "1". Est'ce qu'il existe une sorte d'actualisation du tout ? ou une ligne à ajouter dans la macro ?
En tout cas, moi j'hallucine de voir tout ce qu'on peut faire avec ces macros jusqu'à même faire apparaître des fenêtres personnalisées, bravo ! J'ai encore beaucoup à apprendre. :D
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonjour July, le Forum

Je ne suis pas sûr de comprendre, en fait je ne fais que copier la Feuille "Modele" dans l'état où elle se trouve, et j'en fais X Copies (dans l'état ou la Feuille Modèle se trouvait au moment de l'exécution).

Hors dans ton classeur exemple (et donc le mien) cette matrice "Modele" se trouve dans cet état pour le filtre de la colonne G : (rien de filtré)

Capture.JPG


Maintenant si tu changes le filtre (per exemple sur "1") dans la feuille 'Modele' AVANT exécution, je viens de vérifier, c'est bien reporté sur les 131 onglets généré...

Capture.JPG

Ou alors quelque chose m'échappe ?

Bon aprèm !
@+Thierry
 

July35

XLDnaute Nouveau
Désolé j'ai pas été très explicite.
Oui je suis bien d'accord qu'en filtrant "1" avant exécution, cela va bien sur les 131 onglets. Ce n'est pas flagrant car j'ai supprimée des lignes de données mais si, après exécution, tu vas dans l'onglet "jf_226" tu t'apercevras qu'il reste encore une ligne en "0" à la case G12 malgré le filtre "1" activé. Quand tu navigues sur la fenêtre des filtres et que tu valides, cela disparaît mais je voudrais éviter de faire la manip 131 fois d'où la question précédente : existe t'il un moyen pour actualiser le filtre ?
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re bonjour July

Arf oui je n'avais pas approfondi, chez Microsoft ils n'ont pas dû penser qu'un jour on allait faire ceci avec une matrice filtrée en générant 131 onglets à la volée !
(Quand on le fait à la main ça fonctionne)


J'ai essayé d'ajouter les méthodes :
ThisWorkbook.RefreshAll
Application.CalculateFull

Mais ca ne faisait rien, puis j'ai essayé la méthode :
Application.CalculateFullRebuild

Et miracle, ton filter est bien là et appliqué !

A inserrer entre ces lignes :
VB:
BD.Activate                                                 'added Thierry

Application.CalculateFullRebuild                '<<<<<< A INSERRER added Thierry 20200423
Application.ScreenUpdating = True                           'added Thierry


Ca rallonge un poil le temps d'exécution, mais c'est mieux que de le faire 131 fois LoL
Bien à toi
@+Thierry
 

July35

XLDnaute Nouveau
Mince ... je viens de l'intégrer de ma macro et ça ne marche toujours pas. :confused:
C'était pas un bonne exemple de fiche comme il y a peu de ligne, j'ai refait une version avec le modèle et toutes ces lignes.
Ce que je ne comprends pas c'est qu'aux premières dizaine de lignes les "zéro" sont bien invisibles mais les autres d'après sont toujours là.
Merci encore pour ton aide en tout cas. ;)
 

Pièces jointes

  • XLD_July35_Sheets_Generator_v01.xlsm
    228.6 KB · Affichages: 6

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonsoir July, Le Forum

Ah zut oui, Mince alors... Bon alors il faut être un peu bourrin alors...
On doit reconstruire l'Auto-Filter aussi ... Mais je dissocie les actions car sinon vu le nombre d'onglets et les Data/Formules ca risque de planter et de durer relativement un bail...

Voilà donc la v03 toute chaude !

Bonne soirée
@+Thierry
 

Pièces jointes

  • XLD_July35_Sheets_Generator_v03.xlsm
    226.2 KB · Affichages: 21

July35

XLDnaute Nouveau
Bonjour Thierry,
Mauvais nouvelle pour commencer cette semaine .... en adaptant sur ma macro, l'autofiltre ne se lance même pas. :confused: Ca doit être un problème de condition ? La différence avec avec ton fichier est que j'ai ma base donnée et fiche complète, que j'ai remplacé "jf_" par "hyd_" (mais j'ai bien pris en compte les modifs) et que je n'ai pas intégrée les macros "retour recap" et "supprimer onglets".
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @July35 , le Forum

As-tu bien intégré la seconde Sub Refresher_AutoFilter en prenant soin aussi de corriger

If Left(WS.Name, 3) = "jf_" Then
En remplaçant par
If Left(WS.Name, 4) = "hyd_ " Then

"Retour Recap" et Supprimer Onglets" n'ont pas d'incidence sur le reste des procédures et peuvent être supprimés.

Bonne journée
@+Thierry
 

Discussions similaires

Statistiques des forums

Discussions
311 725
Messages
2 081 944
Membres
101 849
dernier inscrit
florentMIG