Création automatique d'onglets selon un modèle

Bonjour à tous,

J'utilise habituellement des codes trouvés que j'adapte à mes besoins car je ne suis pas expert en VBA. J'ai trouvé mon bonheur sur le forum mais je n'arrive vraiment pas à l'adapter à mon document
https://forum.excel-pratique.com/excel/creation-d-un-onglet-en-fonction-d-une-cellule-et-renommer-11...

Dès lors, je sollicite votre aide pour les éléments suivants :

1 - Dans mon fichier, j'ai une page d'accueil avec un userform permettant de créer une nouvelle ligne dans le tableau. Le but serait que, lorsque la ligne est créée avec les informations de l'userform, un onglet se crée automatiquement, renommé par le numéro de référence renseigné dans l'userform (dans le fichier, "Fiche 1", "Fiche 2", "Fiche 3", etc).

2 - Lorsque le nouvel onglet (Fiche X) est créé, le contenu de l'onglet "Modèle" serait copié/collé automatiquement dans la nouvelle fiche créée et comporterait les informations renseignées dans l'userform (Référence, Dossier, Intitulé, Agent) en cases B4:B7 de la fiche.

3 - Étant donné que le tableau comportera beaucoup de lignes et donc d'onglets (Fiches), je souhaiterai qu'une cellule "Suivi ->" soit créée automatiquement dans le tableau (colonne B de l'onglet "Accueil") avec un lien cliquable vers l'onglet créé pour ne pas devoir chercher la fiche désirée parmi tous les onglets et pouvoir arriver directement sur la fiche concernée en un click du fait que chaque onglet sera un dossier et qu'il y en aura des dizaines.

4 - Dans la fiche créée, j'avais inséré un tableau Excel (Étape 4, Fiche 1) où il était louable d'ajouter des lignes facilement. Cependant, lors de l'ajout d'une ligne, seules les lignes situées en dessous du tableau (colonne D à G) se décales vers le bas mais les autres colonnes restent statiques donc les intitulés ne sont donc plus alignés avec les lignes concernées. Dès lors, j'aurais souhaité savoir s'il était possible de procéder à un ajout de ligne en dernière position en VBA via un userform pour un tableau situé en milieu de feuille du fait que d'autres informations devront figurer après le tableau (Étape 5 et suivantes).

D'avance, je vous remercie pour votre aide qui me sera très précieuse

185need-2.xlsm (83.91 Ko)

Bonjour

Ci joint ma solution

675need-2.xlsm (67.75 Ko)

Pour l'étape 4 pour insérer une ligne tu appuie sur Ctrl et w.... cela créera une ligne au dessus de la cellule sélectionnée...

A+ François

Bonjour

Je n'ai pas regardé la solution de fanfan38 que je salue mais voici la mienne avec quelque modifications dans le fichier de base.

Utilisation d'un tableau structuré pour le tableau de suivi, transformation totale des macros "Step"

Pour l'étape 4 voir l'utilisation de entirerow.insert

348need-2-yal-v1.xlsm (126.35 Ko)

Un tout grand merci à vous deux ! C'est parfait ! Et la rapidité de vos réponses
J'aurais souhaité pouvoir automatiser l'ajout automatique d'une ligne pour le point 4 via un bouton car le document servira à d'autres collègues qui ne sont pas spécialement doués en informatiques et pour qui ajouter une ligne et refaire une mise en forme n'est pas mince à faire. Au pire, j'écrirai de sélectionner la cellule et faire CTRL+W pour que cela fonctionne

Je profites de vos compétences, j'avais envisagé un système d'archivage mais je n'ai pas encore trouvé réponse à mes attentes. Pour éviter de se retrouver avec XXX onglets, lorsqu'un dossier sera terminé, j'aurais souhaiter pouvoir l'archiver via le le bouton de la feuille "Accueil" et donc :

1 - Sauvegarder uniquement l'onglet sélectionné via la ComboBox de l'userform "Archive";
2 - Proposer l'emplacement de sauvegarde à l'utilisateur;
3 - Supprimer l'onglet concerné du classeur une fois l'onglet sauvegardé sur le réseau.

Une idée ? Après, j'arrête, promis !

Bonjour à tous

J'ai fait aussi alors je poste :

  • j'ai comme Yal-Excel travaillé en tableaux structurés pour Accueil mais aussi pour les tables de référence (Data) avec des listes nommées afin d'avoir des listes sans vides et évolutives et correctement référencées dans le modèle
  • nettoyé le modèle des listes inutiles
  • ajouté un contrôle sur l'existence du dossier
144need4.xlsm (60.53 Ko)

Bonjour

Correction et sauvegarde fait (le chemin par défaut peut être modifié)

80need-2.xlsm (52.37 Ko)

A+ François

Un grand merci pour l'aide
Je viens d'essayer mais seulement je rencontre un souci. Si la dernière ligne doit être archivée, il n'y a pas de souci. S'il s'agit d'une autre ligne du tableau, je rencontre les erreurs suivantes :

archive archive2

Concernant la sauvegarde, je souhaiterai que l'utilisateur puisse parcourir les dossiers pour archiver dans le dossier de son choix. J'ai trouvé la fonction suivante :

Application.Dialogs(xlDialogSaveAs).Show

mais je n'arrive pas à l'adapter au code (quel bras cassé...).

Bonjour

Erreur 1 corrigée

je n'arrive pas à avoir la 2ème...

choix sauvegarde fait

180need-2.xlsm (54.30 Ko)

A+ François

Cela fonctionne à merveille !
Un tout grand merci à tous les contributeurs

C'est encore moi

Pour l'ajout de lignes dans mon tableau (en milieu de feuille), j'ai un code qui fonctionne parfaitement. Par contre, sur la première ligne à compléter (D32:G32), j'ai des listes déroulantes (validation des données). Lorsque la seconde ligne est créée (au dessus de la ligne initiale), les listes déroulantes ne sont plus disponibles. Une idée ?

D'avance, je vous remercie pour votre future réponse

Sub Add_Line_EA()
With Range("D32")
.EntireRow.Insert xlShiftDown
.EntireRow.Copy
With .Offset(-1).EntireRow
.PasteSpecial xlPasteFormats
.PasteSpecial xlPasteFormulas
End With
Application.CutCopyMode = False
End With
End Sub

addline

Bonjour

L'utilisation de tableaux structurés (19 ans qu'il sont là...) évite ce type de problèmes...

J'ai voulu utiliser initialement un tableau structuré. Sauf qu'à l'ajout d'une ligne dans le tableau structuré, ça ne rajoute pas une ligne entière mais juste de Colonne1 à 4 et donc, tous mes intitulés et autres cellules adjacentes sont hors contexte :

tableau structure

RE

Toutes les colonnes devraient être dans un même tableau mais avec des cellules fusionnées cela ne peut fonctionner

En plus avec des cellule vides ont ne sait à quoi correspondent tous ces tableaux juxtaposés et donc voir ce qui est faisable ou non en terme de tableaux structurés

Une autre solution est de prévoir plus de lignes par étapes et masquer à la toute fin celles qui n'ont pas servi

J'ai réussi à arriver à mes fins avec l'enregistreur de macro pour le premier tableau du fait qu'il sera toujours fixe (copy-insert-paste-clearContents). Et pour maintenir la mise en forme, les lignes s'insèrent vers le haut et c'est même mieux dans mon cas.

Pour le second tableau, ce dernier dépendra du nombre de ligne insérées dans le 1er tableau et ne sera donc pas fixe sur la feuille. Dès lors, j'ai opté pour cette technique :
1 - Inscrire un mot-clés dans la cellule à gauche de la 1er ligne du tableau qui doit être copiée-collée (police blanche sur fond blanc, colonne réduite au maximum pour cacher le mot-clé);
2 - Macro pour trouver le mot-clés, copier la ligne, insérer une nouvelle au dessus, coller, et supprimer le contenu.

Sub Test()

Dim Res As Range
Set Res = Columns("C").Find("mot-clés")
If Not Res Is Nothing Then
Res.EntireRow.Copy
Res.EntireRow.Insert
Selection.ClearContents
End If
End Sub

Cependant, il faudrait que la ligne ne soit copiée que de la colonne D à la colonne P sinon le mot-clés (en colonne C) est également recopié et la ligne insérée varie selon la cellule sélectionnée par l'utilisateur du fait que le mot-clés se répète à chaque ligne. Dès lors, pourrais-je vous solliciter afin d'adapter le code ci-dessus en conséquence ?

D'avance, merci

Rechercher des sujets similaires à "creation automatique onglets modele"