XL 2019 mise en forme VBA d'une base de données

youpi457032

XLDnaute Occasionnel
Bonjour,
Je possède une base de données que je souhaiterais mettre en forme en un clic !
Je m'explique....
je voudrais que certaines colonnes soient toutes écrites en majuscule en un seul clic de souris depuis un bouton sur mon tableau de bord
1) Dans mon fichier que je joins (feuille BD) ce serait :
colonne A et F: tout en majuscule:
Colonne B: Première lettre en Majuscule, lettres suivantes en minuscules
colonne C : au format date 00/00/0000
colonne BM : un concatener de A et B

2) sur ma base de données en jaune une bouton "Prof correspondant"
J'ai tenté de bidouiller un truc pour affecter un nom de prof en fonction du nom du cours, par rapport à une feuille de références
CA marche moyennement....
Si quelqu'un pouvait y jeter un oeil, et me dire pourquoi ca fonctionne mal...
pareil, là encore je voudrais que cette macro s'intègre au bouton unique de mise en forme en une fois...

3) Colonne BO : une demande particulière...
je voudrais une macro qui pour chaque ligne calcule la différence de date entre la date courante et la date renseignée en colonne BJ
je ne souhaite pas un résultat chiffré...
je voudrais un résultat du style si écart date supérieur à 1095 jours (3 ans) écrire "DEPASSE" sinon "VALIDE"

Si on pouvait faire en sorte que l'ensemble de ces fonctions s'executent en une seule fois depuis un mon tableau de bord.... ESt-ce possible ???

Je ne suis pas un surdoué de la macro, j'apprends, je progresse....
mais je ne suis pas encore au niveau...
Si quelqu'un pouvait m'aider à mettre en forme tout cela ???
Merci d'avance
 

Pièces jointes

  • filtre multicritères travail (4).xlsm
    772.9 KB · Affichages: 16

fanch55

XLDnaute Barbatruc
Bonjour @youpi457032 ,@MP59 ,

Module Mod_Fanch55:
  • Sub Reformate_Bd pour les point 1 et 3 (même cheminement que @MP59 mais pour un tableau structuré)

  • Function ProfDu pour le point 2
    ( mise en formule dans les cellules correspondantes du Tableau )
    la formule est propagée automatiquement lors d'un ajout de ligne

J'ai supprimé toutes les lignes vides en queue du tableau1,
elles ne sont pas nécessaires pour un tableau structuré .
A ce propos, pourquoi ne pas avoir mis toutes les colonnes dans le tableau,
les colonne Ab et BO auraient pu avoir des formules automatiques également ? 🤔

Sinon, il y a 199 boutons dans la feuille BD pointant vers une macro 'g:\Users\PC_PAPA\Downloads\Malafretaz 2021 copie de travail.xlsm'!minuscule 🥳
 

Pièces jointes

  • Copie de filtre multicritères travail.xlsm
    762.2 KB · Affichages: 7
Dernière édition:

youpi457032

XLDnaute Occasionnel
Bonjour youpi457032
voici le fichier avec "Sub mise_en_forme_MP59" qui règle les points 1 et 3.
le point 2 n'est pas clair pour moi.
Bonsoir,
Merci....
Ecrite comme cela, la macro fonctionne si bien ! c'est super !
Un grand merci !
je ne sais pas si tu as remarqué j'ai une autre question développée pour le même fichier ! C'est celle qui me pose le plus de problème ! recopie de resultats de filtre apres tri dans un userform....
Si ca te tente d'y jeter un oeil .... 🤪
parce que moi je sature ! 😵
 

youpi457032

XLDnaute Occasionnel
Bonjour @youpi457032 ,@MP59 ,

Module Mod_Fanch55:
  • Sub Reformate_Bd pour les point 1 et 3 (même cheminement que @MP59 mais pour un tableau structuré)

  • Function ProfDu pour le point 2
    ( mise en formule dans les cellules correspondantes du Tableau )
    la formule est propagée automatiquement lors d'un ajout de ligne

J'ai supprimé toutes les lignes vides en queue du tableau1,
elles ne sont pas nécessaires pour un tableau structuré .
A ce propos, pourquoi ne pas avoir mis toutes les colonnes dans le tableau,
les colonne Ab et BO auraient pu avoir des formules automatiques également ? 🤔

Sinon, il y a 199 boutons dans la feuille BD pointant vers une macro 'g:\Users\PC_PAPA\Downloads\Malafretaz 2021 copie de travail.xlsm'!minuscule 🥳
Merci Fanch55 ! cela fonctionne
Sauf la mise à jour des profs.... si je fais le test en supprimant des noms de profs dans la BD et que je relance la macro, rien ne se passe .....
tu peux regarder.... j'aimerai que la macro prof s'execute en meme temps que la macro mise en forme...
pour tout faire en un clic ...
Merci d'avance ...
 

Pièces jointes

  • filtre multicritères travail (4).xlsm
    762 KB · Affichages: 4

fanch55

XLDnaute Barbatruc
Bonjour,
ProfDu est une fonction de cellule personnalisée,
elle doit absolument rester une fonction qui retourne une chaine .
Affichez la feuille BD, faites Ctrl+" et allez en colonne M, vous pouvez voir en colonne N :
1634824017869.png


Si vous lui changez son nom, il faut modifier les formules des cellules où cette fonction est appelée :
1634824260790.png
1634824276677.png
1634824286818.png

Si vous changez quelque chose en feuille références, pour que les modifs soient propagées immédiatement à la feuille BD, il faut rajouter le code ci-dessous dans la feuille références
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Columns("B:E")) Is Nothing Then Application.CalculateFull
End Sub

Le bouton Jaune Prof Correspondant ne devrait servir à rien ..

Vous trouverez ci-joint le classeur fourni modifié pour ce faire .
 

Pièces jointes

  • filtre multicritères travail (4).xlsm
    761.1 KB · Affichages: 10

youpi457032

XLDnaute Occasionnel
Bonjour,
ProfDu est une fonction de cellule personnalisée,
elle doit absolument rester une fonction qui retourne une chaine .
Affichez la feuille BD, faites Ctrl+" et allez en colonne M, vous pouvez voir en colonne N :
Regarde la pièce jointe 1118965

Si vous lui changez son nom, il faut modifier les formules des cellules où cette fonction est appelée :

Si vous changez quelque chose en feuille références, pour que les modifs soient propagées immédiatement à la feuille BD, il faut rajouter le code ci-dessous dans la feuille références
VB:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Me.Columns("B:E")) Is Nothing Then Application.CalculateFull
End Sub

Le bouton Jaune Prof Correspondant ne devrait servir à rien ..

Vous trouverez ci-joint le classeur fourni modifié pour ce faire .
 

youpi457032

XLDnaute Occasionnel
Merci Fanch55 pour cette superbe macro ! du grand art vraiment !
IL m'a fallu un temps pour capter son fonctionnement ....., mais cà y est !!!
Et en effet ça marche du feu de Dieu.... Un grand bravo ! un grand merci !!

par ailleurs, pour finir mon fichier, j'ai besoin de retravailler une macro mail qui fonctionnait bien avec mon ancien fichier. Le principe était le suivant. Je lançais mon userform filtre, le triais ce que l'avais besoin.... mes resultats apparaissait dans la listbox juste en dessous des critères filtres (j'avais un seul critère), ensuite je lançais une macro mail qui faisait deux choses l'une après l'autre : temps 1 extraction des données de listbox ayant reçu les résultats filtrées, copie vers une autre feuille du résultat de l'extraction, puis au départ de cette nouvelle feuille ayant reçu les données extraites , récupération sur trois colonnes des adresses mail (mail eleve, mail maman, mail papa) , enfin ouverture de ootlook et transfert de ces adresses mail SANS DOUBLON vers le destinataire To.... de outlook....

Comme j'ai remanié et ma base et mon filtre ( plusieurs choix en cascade), bien evidemment cette macro mail n'est plus totalement adaptée. Pourtant j'aurai grand besoin de récupérer cette fonction mail, puisque c'est précisement le but du filtrage : Faire du mailing ciblé en fonction des critères de filtrage....
SErait-il possible de jeter un oeil à ce besoin ?
J'ai copié l'ancienne macro mail dans un module "envoyer_mail" pour que vous puissiez voir l'architecture de la macro qui allait avec mon ancien fichier si celza peut vous éclairer ....

Je vous renvoie le nouveau fichier en cours qui a besoin de recevoir cette fonction mail, fonction impérative....
Mon fichier fonctionne très bien, formulaire élève, formulaire filtrage.... me manque plus que la fonction mail....
 

Pièces jointes

  • formulaire élèves.xlsm
    763.8 KB · Affichages: 13

youpi457032

XLDnaute Occasionnel
Merci Fanch55 pour cette superbe macro ! du grand art vraiment !
IL m'a fallu un temps pour capter son fonctionnement ....., mais cà y est !!!
Et en effet ça marche du feu de Dieu.... Un grand bravo ! un grand merci !!

par ailleurs, pour finir mon fichier, j'ai besoin de retravailler une macro mail qui fonctionnait bien avec mon ancien fichier. Le principe était le suivant. Je lançais mon userform filtre, le triais ce que l'avais besoin.... mes resultats apparaissait dans la listbox juste en dessous des critères filtres (j'avais un seul critère), ensuite je lançais une macro mail qui faisait deux choses l'une après l'autre : temps 1 extraction des données de listbox ayant reçu les résultats filtrées, copie vers une autre feuille du résultat de l'extraction, puis au départ de cette nouvelle feuille ayant reçu les données extraites , récupération sur trois colonnes des adresses mail (mail eleve, mail maman, mail papa) , enfin ouverture de ootlook et transfert de ces adresses mail SANS DOUBLON vers le destinataire To.... de outlook....

Comme j'ai remanié et ma base et mon filtre ( plusieurs choix en cascade), bien evidemment cette macro mail n'est plus totalement adaptée. Pourtant j'aurai grand besoin de récupérer cette fonction mail, puisque c'est précisement le but du filtrage : Faire du mailing ciblé en fonction des critères de filtrage....
SErait-il possible de jeter un oeil à ce besoin ?
J'ai copié l'ancienne macro mail dans un module "envoyer_mail" pour que vous puissiez voir l'architecture de la macro qui allait avec mon ancien fichier si celza peut vous éclairer ....

Je vous renvoie le nouveau fichier en cours qui a besoin de recevoir cette fonction mail, fonction impérative....
Mon fichier fonctionne très bien, formulaire élève, formulaire filtrage.... me manque plus que la fonction mail....
Bonjour Fanch
Je rencontre une difficulté au sujet de la recopie de ta formule affectation prof / cours
J'ai voulu copié cette macro et l'appliquer à un autre paramètre : association cours de danse / site de danse
En colonne et O et P de ma feuille référence j'ai mes deux entêtes de colonne SITE 1 et SITE 2. Dans les dites colonnes les cours associés.
Dans ma feuille BD, en colonne cible, en faisant un " = lieu[@[ site_de_danse]], la formule me renvoie une erreur directe de " reference circulaire" avec comme résultat soit des cellules vides, ou la valeur 0 .
Peux tu m'expliquer pourquoi j'ai cette erreur ?
Merci
 

fanch55

XLDnaute Barbatruc
en faisant un " = lieu[@[ site_de_danse]], la formule me renvoie une erreur directe de " reference circulaire"
Tel que vous avez écrit la formule , vous cherchez dans le tableau lieu la colonne correspondante à la valeur de la colonne site_de_danse de la ligne du tableau en cours

La formule pour les cours de danse :
=mise_a_jour_profs([@[Votre premier cours]])
On appelle la fonction mise_a_jour_profs en lui passant comme paramètre la valeur de la colonne Votre premier cours de la ligne du tableau en cours

Ne pas confondre les crochets avec les parenthèses ... 😩
 

Discussions similaires