Créer des fiches individuelles dans des onglets à partir d'un tableau

Chers tous bonjour,

J'ai une base de donnée client sous forme de tableau. j'ai écrit une macro qui va venir créer des fichies individuelles à partir des données de mon tableau pour chaque client sous forme d'onglet pour une meilleure visualisation. Ma macro va créer toutes les fiches de la base et ca fonctionne (🥳, vous etes en droit de me dire à quoi ca sert de créer autant d'onglet d'un coup et vous avez raison).

Ensuite j'ai créé une barre de recherche qui va venir recopier sur une ligne les données concernant une personne . j'ai réarrangé ma macro pour qu'elle puisse créer la fiche du client dont je viens de faire la recherche (finalement une seule fiche au lieu d'avoir des fiches de toute la base).

Comme vous pouvez le voir j'ai quelques petites difficulités normalement ce message box doit me retrouner 1 ligne à traiter mais m'écrit 3 ensuite durant la recherche lorsque la case de ma base est vide, dans les cellule recherche il renvoit 0. j'ai essayé d'utiliser la fonction si(estvide(...) dans mon filtre mais celà n'a pas bien fonctionné.

Je dois rater un truc mais ne sais pas quoi, je vous remercie infiniment de me donner votre avis.

Je me permets de mettre le fichier en pj.

Merci de votre aide

H

capture d ecran 2024 08 30 115743

Bonjour

A la lecture de votre fichier, je ne comprends pas trop le pourquoi de votre filtre en ligne 6 et ce, via une textbox car de toute façon vous n'allez avoir qu'une seule ligne.
Là vous cherchez via une textbox qui va mettre votre choix en C3 puis rapatrier la ligne trouvée en ligne 6...
C'est un peu compliqué cela comme approche.

A moins que j'ai mal compris votre fichier, mais pourquoi ne pas simplement faire votre filtre en choisissant en I9 ce que vous voulez créer ?
Ensuite vous exécutez la macro sur les lignes visibles et vous n'avez plus besoin que d'une seule macro

Autre remarque sur cette ligne --> Do While Range("D" & Curseur).Value <> notvide
c'est quoi ce "notvide" ??

Crdlt

re

que vouliez-vous dire dans votre post précédent qui est vide ....

Bonjour Dan,

Je ne sais pas porquoi lorsque j'envoie des message il parvient vide. mon message en screen

capture d ecran 2024 08 30 115743 excel

Hum c'est un peu illisible votre message
Je ne vois pas pourquoi vous devriez avoir un souci à moins que cliquez sur l'icone citation (à droite de l'icone </>) dans la barre de menu ?

Votre fichier vous l'utilisez uniquement sur excel Windows ou aussi sur excel MAC ?

Si j'étais vous j'essayerais déjà de me déconnecter du forum, puis me reconnecter ou évenuellement redémarrer l'ordi

Re

L'administrateur du forum a nettoyé vos messages à ma demande

Suggestion : essayez de poster avec un autre navigateur pour voir si vous avez toujours le souci

Bonjour Dan,

en effet j'ai effectué toutes les astuces de deconnexion, reconnexion avec un autre navigateur et meme été obligé de changer de mdp.

j'espère que cette fois vous receverez mon message.

Mon message initial (avec des changements car je n'ai pas copié le message):

Merci d'avoir pris le temps de regarder mon fichier. Quelques éléments de contextes; Nous serons plusieurs à utiliser ce mini CRM fait maison (les niveaux de connaissances et compétences en Excel varient). Nous utiliserons tous la version Windows pour PC uniquement.

Le textebox en C3 est là pour plusieurs raisons :

1- Eviter que nous touchions le tableau (base de données) pour chercher le nom d'un étudiant pour la visualisation de son suivi par notre département.

2- Lorsque j'ai écrit la macro de création de fiches individuelles; le code créer toutes les fiches de la base (si nous avons 130 étudiants, il y aura 130 onglets ). d'où une condtion d'arret des créations des fiches individuelles dès que le code rencontre la cellule vide de la prochaine case "composante" qui est vide car pas encore d'étudiant enregistré.
3- Dans la majorité des cas nous avons pas besoin de génerer toutes les fiches et seuelement de fiches individuelles d'un étudiant. Le textbox va me permettre de rechercher dans la base l'étudiant et recopier sa ligne d'informations depuis le tableau au niveau de la ligne 6 ( tjrs dans l'idée de tripatouiller le moins possible la base de donnée). Par la suite la macro n°2 identique à la premiere qui genère toutes les fiches va genérer la fiche individuelle et comme les cases de la ligne en-dessous sont vides la macro fonctionne bien et me fait ma fiche.

4- la fonction filtre dont vous parlez est utilisé dans la cellule c6 pour recopier les infos depuis le tableau base de donénes avec une recherche sur le nom (après je vous l'accorde si j'ai deux soeurs ou deux frères mon système ne gère pas.

voila c'est la méthode que j'ai trouvé pour essayer de me débrouiller avec mes connaissances limitées pour faire un petit CRM pour le suivi de mes étudiants.

J'espère que j'ai répondu à vos intérrogations.

cdlt,

H

Bonjour

Merci du retour et des explications.

Je vous propose donc de simplifier comme je vous en avais parlé. Voici une vue de votre feuille tel que je l'ai adaptée
- la textbox reste
- le tableau du dessus est supprimé

image

Cela fonctionnerait comme ceci :
- dès que vous entrez une lettre ou plusieurs dans la textbox, le tableau est filtré automatiquement sur la colonne I et le code vous affiche les lignes trouvées
- le clic sur le bouton bleu "creer le fiche", crée une fiche pour chaque ligne visible. Ici une ligne visible DOE, donc on ne crée qu'une fiche
- si vous videz ou ne mettez rien dans la textbox, le tableau n'est plus filtré
- si vous cliquez sur le bouton rouge, le tableau n'est plus filtré et cela crée les fiches sur toutes les lignes du tableau

En tout, cela fonctionne avec 3 codes mais les fiches sont toujours créées avec un seul code.

Seule chose que je dois savoir. Dans le code j'ai remarqué que le nom de la feuille est attribué sur base de la filière ? Si oui, il ne peut jamais y avoir de doublons dans cette colonne je suppose

Autre chose très importante, votre tableau est au format dit "structuré". Vous ne devez jamais avoir de lignes sans données dans ce type de tableau
Donc dans votre fichier, sélectionnez la plage Ax à BN770 (x étant la première ligne sans données), faites un clic droite puis choisir "Supprimer" --> "Lignes de tableau"

Votre avis et je vous poste le fichier mais donner moi le nombre de lignes qui sont complétées actuellement (je ne parle pas du numéro en colonne B)

Cher Dan,

Merci, les onglets sont nommés en fonction du nom de famille ( en jaune) à partir de la cellule i+9 ( les neuf premieres lignes sont des entetes) et colonne 9 "I"). Il faut que je fasse un test à mettre deux noms de familles identiques pour voir si ca plante ou pas.

En rouge c'est la condition d'arret de recherche dans mon tableau. en effet ce tableau evolue de jour en jour car nous acceuillons les etudiants tout au long de l'année en flux entrant. Ce qui m'empeche d'avoir un tableau figé en nombre de ligne à l'avance. par exemple l'année passée nous avions 125 etudiants et l'année d'avant 110. la condition d'arret va tester les lignes de mon tableau avec un critere sur la colonne D qui correspond à la premiere information que nous ajoutons lors de l'inscription dans notre dpt cette information correspond sur la composante dans laquelle l'étudiant étudie. ce qui implique que la case endessous est forcement vide et arrete la creation des onglets.

dans mon test j'ai bien deux onglets créé avec les noms de familels.

Merci encore

H

capture d ecran 2024 09 03 180435

Deux noms identique donne une erreur. Mon code ne prends pas en compte ce point

capture d ecran 2024 09 03 182959

Je vous ai proposé quelque chose. Là vous m'expliquez quelque chose dans votre code que j'avais compris

En rouge c'est la condition d'arret de recherche dans mon tableau.

Je ne comprends d'ailleurs par votre ligne Do While Range("D" & Curseur).Value <> notvide, qui plante dans le fichier que vous avez placé ici.
notvide n'est pas une instruction VBA

Deux noms identique donne une erreur.

Logique vous attribuez en cellule E6, le nom utilisé pour nommer la feuille. Bizarre sachant que le titre de la colonne E est "Filière"

Pour la question du nom de votre feuille il suffit de prendre le nom et prénom. Dans ma proposition on les prend en I et J de la ligne traitée

la condition d'arret va tester les lignes de mon tableau avec un critere sur la colonne D qui correspond à la premiere information que

La seul condition d'arrêt dans un tableau structuré est la dernière ligne et qui doit être remplie. Comme je vous l'ai écrit, si pas de données vous ne devez pas avoir de ligne en plus

Question : Etes-vous intéressé ou pas par ce que je vous propose car vous ne faites aucun commentaire sur mon post précédent. Réflechissez-y

Bonjour,

Je suis lent à la detente, je viens de comprendre, à chaque nouvel inscrit j'agrandis mon tableau d'une ligne pour avoir toujours un tableau complet.

Ok, je laisserai des instructions dans ce sens.

Merci à vous,

H

Re

à chaque nouvel inscrit j'agrandis mon tableau d'une ligne pour avoir toujours un tableau complet.

Si j'ai bien compris ce que vous écrivez vous ne devez pas faire comme cela avec un tableau structuré.
Vous n'avez pas besoin d'agrandir le tableau. Il vous suffit simplement d'ajouter une info juste en dessous de la dernière ligne de votre tableau pour que cette nouvelle ligne soit automatiquement reprise dans le tableau.
Si votre tableau se termine en ligne 10 de la feuille, ajouter une donnée en C11, ... vous allez voir que le tableau s'agrandit automatiquement

Faite un test et dites-moi

Votre vrai tableau contient combien de lignes complétées actuellement ?

m'avez vous partagé le fichier révisé avec votre méthode ? je ne vois pas de PJ

Actuellement j'ai une trentaine d'étudiants de l'année passée qui renouvellent et tous les jours j'ai entre 2 à 3 nouvel entrant.

H

m'avez vous partagé le fichier révisé avec votre méthode ? je ne vois pas de PJ

Non j'attendais votre retour sur mes questions afin de vous poster le fichier correct.
Je pars toujours du principe d'avancer pas à pas avant de poster un fichier. Cela évite notamment d'alourdir le forum inutilement en postant des fichiers inutilement parce qu'on n'a pas toutes les infos

Votre fichier en retour :
J'ai laissé uniquement 3 lignes pour que vous testiez
1. Tapez la lettre D dans la textbox puis videz-la pour voir ce qui se passe dans votre tableau
2. Si vous avez une lettre dans la textbox, cliquez sur le bouton bleu pour créer les fiches des lignes visibles dans le tableau
3. Avec ou sans info dans la textbox, si vous cliquez sur le bouton Rouge, cela enlève le filtre et crée toutes les fiches reprises dans votre tableau

si vous voulez ajouter une ligne dans ce tableau, sélectionnez C10 et entrez votre donnée puis Entree, vous verrez que le tableau s'adapte comme je vous ai déjà expliqué plusieurs fois avant.
Les formules et liste validation sont recopiées automatiquement à chaque ligne ajoutée
J'ai placé une formule en colonne B donc ne mettez rien dans cette colonne. La numérotation se fera automatiquement

NB :
- vous devez toujours avoir un nom et/ou prénom en colonne I et J pour que la fiche soit créée
- je n'ai pas touché à la feuille Modèle mais de base sachez que VBA aime pas trop les fusions de cellules. C'est d'ailleurs à éviter avec excel en formule ou pas

Crdlt

Bonjour Dan,

Navré pour ce delais de retard. Je vous remercie pour la modification que vous avez approrté. j'ai remarqué que dans la barre de recherche je dois m'assurer que le nom dans la cellule "I" doit être identique avec (minuscule, Majuscule et espacement). J'ai écrit une petite macro pour mettre en majuscule la colonne pour harmonsier.

Merci encore

H

Bonjour

j'ai remarqué que dans la barre de recherche je dois m'assurer que le nom dans la cellule "I" doit être identique avec (minuscule, Majuscule et espacement).

Nul besoin de code,
Faites simplement ceci
1. Allez dans la feuille où se trouve le code Private Sub Textbox1_Change()
2. Juste EN DESSOUS de la ligne Option Explicit, ajoutez ceci

Option Compare Text

pensez à cloturer le fil ...

Cordialement

Top Merci, Par contre une derniere question; pensez vous qu'il soit facile d'intégrer une méthode pour mettre à jour les cases de la fiche individuelle pour qu'elle mette à jour la base ? Exemple je rencontre le client la premiere fois, je remplis le tableau qui me sert de base de données. ensuite au prochain rendez-vous je n'ai qu'à generer sa fiche et completer avec les nouveaux elements qui ira remplir la base.

qu'en pensez vous ?

Merci de votre aide

H

Bonjour

pensez vous qu'il soit facile d'intégrer une méthode pour mettre à jour les cases de la fiche individuelle pour qu'elle mette à jour la base ?

Oui c'est possible mais vous devrez penser à ajouter un identifiant
exemple dans votre Base, vous avez en colonne B un numéro. Il faudrait retrouver ce numéro dans la fiche individuelle et surtout que ce numéro ne change plus. (Eventuellement ajouter une lettre ou autre chose si vous voulez. Le principe est d'identifier la ligne)

Autre cela, une chose que je vois et qui peut être gênante, ce sont les cellules fusionnées dans votre feuille individuelle... et là VBA aime pas trop ce genre de truc là. (même sans VBA c'est à éviter)
Mais à voir en développant votre idée.

Ou alors si votre fichier est susceptible d'évoluer, le mieux est de prévoir dès maintenant

Une manière simple de contourner serait de sélectionner chaque cellule fusionnée puis défusionner
Ensuite aller dans le menu excel --> Accueil --> Format de cellule -> cliquer sur l'onglet "alignement"
Là dans la rubrique Horizontal, vous choisissez "centré sur plusieurs colonnes"
Cela résout le souci plus facilement que de refaire la fiche

Rechercher des sujets similaires à "creer fiches individuelles onglets partir tableau"