XL 2016 Total module par participant

RoyalP

XLDnaute Occasionnel
Salut à tous ,j'ai bien avancé sur mon projet pour l'asso ou je suis mais la je boque sur un point que j'essaye de resoudre mais pas moyen d'y arriver !!!
j'ai 3 userform 1 pour la fiche_participant , 1 pour les nouveaux participants et 1 pour le recapitulatif d'un participant
le probleme c'est que j'ai des combox ou l'on peut selectionner des modules/participants et ainsi que des heures / modules , jusque là pas de soucis j'ai réussi a gérer le tout, mon soucis ce trouve dans le récapitulatif participant ou je n'arrive pas a remplir mes textbox avec le total par modules.
je vous joint mon fichier de test pour que vous puissiez mieux comprendre mon probleme.
Merci d'avance.
 

Pièces jointes

  • Gestion_Copil.xlsm
    89.2 KB · Affichages: 14

_Thierry

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

C'est assez tordu ton histoire car ta base de données et assez "en vrac" ....

Si je prends Jacques Ouilles en exemple, un extrait de sa base transposée en colonne pour les afficher ici :

1592782128210.png


J'imagine que tu voudrais ceci en résultat :

1592782063094.png


C'est à dire qu'il faut looper sur la ligne de Jacques Ouilles et faire l'addition de la cellule juste à droite de celle où VBA trouverait une de ces strings :

"Accueil", "Mobilité", "Réunion Collectif", "Socio Culturel", "Connaissance de soi", "Citoyenneté"
Et ceci à chercher dans chacune des colonnes Q, V, AA, AF, AK, AP et AU....

Pour venir en faire l'addition dans les TextBoxes nommées respectivement :
TotalA, TotalM, TotalRC, TotalSC, TotalCDS, TotalC

Un sacré sbinz si c'est bien ce que tu souhaites faire !!!

Déjà rien qu'à écrire en français c'est lourd, alors en VBA LoL ....
Tu n'as pas mieux comme base de données ?
Si j'ai un conseil à donner, on développe les Userforms sur des bases structurées, car là il faut inventer la roue rien que pour un truc tout simple...

Confirme déjà tout ça, et on verra si quelqu'un veut bien se prendre la tête pour te trouver une solution.

Bonne journée
@+Thierry
 

RoyalP

XLDnaute Occasionnel
oui c'est exactement ca que je desire , je me doutais bien que ca serais le bins pour mon tableau je vais essayer de refaire comme toi et voir ce que je peux faire car ta façon est mieux structurer que la mienne.
merci encore de t'avoir penché sur mon prob , je reviens avec une version moin bordelisé :D
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Hello,

Que ce soit Excel, Access ou même Microsoft SQL, c'est surtout une structure "Base de Données" qu'il faut organiser. Pas une sorte de grosse feuille Excel qui s'étend à l'infini en 2 dimensions…

En fait pour ton histoire de Modules, ce devrait une Sous-Table à elle seule contenant la clef unique de No Participant, le Formateur (si il est différent) et chacun des types "Accueil", "Mobilité", "Réunion Collectif", "Socio Culturel", "Connaissance de soi", "Citoyenneté" dans la même colonne...
(Par conséquent le No du Participant sera répété autant de fois que de types, en face des dates horaires et durées, et du formateur si nécessaire)

Ce n'est qu'une façon de voir les choses, parmi d'autres…

Bonne soirée
@+Thierry
 

RoyalP

XLDnaute Occasionnel
oui sql comme je ne connais pas trop je vais evité, la j'ai restructurer ma bdd pour qu'elle ressemble à ca

maintenant il me reste plus qu'a trouver pour remplir correctement mon userform avec les infos :D
 

Pièces jointes

  • Capture.PNG
    Capture.PNG
    68.3 KB · Affichages: 27

RoyalP

XLDnaute Occasionnel
Bon j'ai tant bien que mal réussi mais la ou c peche c'est que sur mon participant 7 il ne me prend pas ma formule !!! apres faudra que je me penche sur la récup des données sur l'userform.
 

Pièces jointes

  • Gestion_Copil_épuré.xlsm
    106.1 KB · Affichages: 6

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir/Bonjour @royalip, le Forum

Il y a un poil de progrès avec ta BDD2, mais ce n'est pas encore ça...
Il fait penser 'simple" et surtout "Radicalemnt Droit au But" , une Base de Données n'est pas là pour faire de la présentation.

Moi je pense comme ceci :

1593205939142.png


Regarde si c'est applicable pour toi ... (pour le formateur par exemple, éventuellement ne manque t'il pas la date des modules... etc...)

Et de plus si c'est par Userform que cette base doit être gérée, maintenue, normalement il n'y a que des valeurs dedans pas de formules... (Ce devrait être calculé par VBA/USF)

Bien à toi
@+Thierry
 

RoyalP

XLDnaute Occasionnel
oui je pense que comme ca ca devrait le faire, pour les dates oui ca serait pas mal aussi pour le récap. Merci Thierry , bon là je ne peut pas me remettre dans le code je dois allez sur lille pour prob de santée mais je m'y remet dés Lundi.
Merci encore de ton aide précieuse.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @RoyalP , le Forum

Désolé de lire à propos de problème de santé. J'espère que tout ira bien.

Pour la base, l'avantage certain c'est que sous cette forme, tu ne te limites plus en quantité de Participants , du nombre de Modules et même du Type de Module (Activités). Ce pourrait gérer bien plus que 7 clients ou 7 modules, c'est à l'infini (enfin sur SQL, Excel faudra rester raisonnable ;))

Bon rétablissement,
@+Thierry
 

RoyalP

XLDnaute Occasionnel
Hello, bon pour les nouvelles de ma santée , pas bon mais je m'y attendez, je vais devoir passer par la case chimio mais c'est la vie.
Concernant mon gestionnaire j'essaye tant bien que mal d'essayer de coupler ma base de donnée sql en localhost avec excel ,ca marche ,j'ai reussi mais le probleme c'est que sur le pc de l'asso je ne pourrais pas installer un server mysql , y'a t'il un moyen de creer une bdd sql ou autre sans passer par un server local ou distant ? j'avais pensé a créer une bdd sous access et travailler sur le fichier accdt mais je sais pas si c'est faisable ?
Merci de votre soutien et de votre aide.
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @RoyalP , le Forum

Arf zut, tout le meilleur courage !

Tu ne peux pas installer un SQL Express gratos ? C'est bien plus simple finalement à gérer par Excel qu'une base Access (surtout que je n'ai plus touché Access depuis la version 2000 je pense LoL)

Et puis finalement à la louche on parle de combien de Rows ? si on est en dessous de 10-20000 ça peut rester dans Excel surtout les versions récentes ...

Bien à toi !
@+Thierry
 

RoyalP

XLDnaute Occasionnel
merci, concernant le nombre de rows vu qu'il y aura pas plus de 500 participans on va se baser sur 500 rows, j'ai installer dbforge studio express qui est pas mal du tout et surtout gratuit ,j'ai crée ma bdd mais comme je debute sur sql je ne sais pasdu tout si elle est correct au point de vu structurel , je peux la mettre en piece jointe ci ca peut t'aider a m'aider ? j'ai tout mi sur une seule branche mais je pense que ca posera probleme par la suite pour récuperer les infos.
Merci encore pour ton aide.

SQL:
-- phpMyAdmin SQL Dump
-- version 4.9.2
-- https://www.phpmyadmin.net/
--
-- Hôte : 127.0.0.1:3308
-- Généré le :  ven. 03 juil. 2020 à 10:45
-- Version du serveur :  8.0.18
-- Version de PHP :  7.3.12

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET AUTOCOMMIT = 0;
START TRANSACTION;
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- Base de données :  `bd_gestion`
--

-- --------------------------------------------------------

--
-- Structure de la table `inscr`
--

DROP TABLE IF EXISTS `inscr`;
CREATE TABLE IF NOT EXISTS `inscr` (
  `inscr_num` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  `inscr_nom` varchar(250) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `partprof` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
  `adresse` varchar(400) NOT NULL,
  `code_postal` varchar(5) NOT NULL,
  `Ville` varchar(300) NOT NULL,
  `Tel` varchar(10) NOT NULL,
  `adr_mail` varchar(200) NOT NULL,
  `remarq` varchar(1000) NOT NULL,
  `date01` date NOT NULL,
  `date02` date NOT NULL,
  `date03` date NOT NULL,
  `date04` date NOT NULL,
  `date05` date NOT NULL,
  `date06` date NOT NULL,
  `date07` date NOT NULL,
  `heure01` varchar(5) NOT NULL,
  `heure02` varchar(5) NOT NULL,
  `heure03` varchar(5) NOT NULL,
  `heure04` varchar(5) NOT NULL,
  `heure05` varchar(5) NOT NULL,
  `heure06` varchar(5) NOT NULL,
  `heure07` varchar(5) NOT NULL,
  `heure1a` varchar(5) NOT NULL,
  `heure2a` varchar(5) NOT NULL,
  `heure3a` varchar(5) NOT NULL,
  `heure4a` varchar(5) NOT NULL,
  `heure5a` varchar(5) NOT NULL,
  `heure6a` varchar(5) NOT NULL,
  `heure7a` varchar(5) NOT NULL,
  `duree1` varchar(5) NOT NULL,
  `duree2` varchar(5) NOT NULL,
  `duree3` varchar(5) NOT NULL,
  `duree4` varchar(5) NOT NULL,
  `duree5` varchar(5) NOT NULL,
  `duree6` varchar(5) NOT NULL,
  `duree7` varchar(5) NOT NULL,
  `module1` varchar(250) NOT NULL,
  `module2` varchar(250) NOT NULL,
  `module3` varchar(250) NOT NULL,
  `module4` varchar(250) NOT NULL,
  `module5` varchar(250) NOT NULL,
  `module6` varchar(250) NOT NULL,
  `module7` varchar(250) NOT NULL,
  PRIMARY KEY (`inscr_num`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;

--
-- Déchargement des données de la table `inscr`
--

INSERT INTO `inscr` (`inscr_num`, `inscr_nom`, `partprof`, `adresse`, `code_postal`, `Ville`, `Tel`, `adr_mail`, `remarq`, `date01`, `date02`, `date03`, `date04`, `date05`, `date06`, `date07`, `heure01`, `heure02`, `heure03`, `heure04`, `heure05`, `heure06`, `heure07`, `heure1a`, `heure2a`, `heure3a`, `heure4a`, `heure5a`, `heure6a`, `heure7a`, `duree1`, `duree2`, `duree3`, `duree4`, `duree5`, `duree6`, `duree7`, `module1`, `module2`, `module3`, `module4`, `module5`, `module6`, `module7`) VALUES
(1, 'REDFORD ROBERT', 'Pierre', 'son adresse', '59100', 'Lille', '0102030405', 'mail@mail.com', 'juste une remarque', '2020-01-02', '0000-00-00', '0000-00-00', '0000-00-00', '0000-00-00', '0000-00-00', '0000-00-00', '13:00', '', '', '', '', '', '', '17:00', '', '', '', '', '', '', '04:00', '', '', '', '', '', '', 'Accueil', '', '', '', '', '', ''),
(2, 'REDFORD ROBERT', 'Pierre', 'son adresse', '59100', 'Lille', '0102030405', 'mail@mail.com', 'juste une remarque', '2020-01-03', '0000-00-00', '0000-00-00', '0000-00-00', '0000-00-00', '0000-00-00', '0000-00-00', '13:00', '', '', '', '', '', '', '17:00', '', '', '', '', '', '', '04:00', '', '', '', '', '', '', 'Mobilité', '', '', '', '', '', '');
COMMIT;

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @RoyalP , le Forum

Oh du MySql, je n'y ai plus touché depuis les première versions LoL ...
Je ne saurai pas trop t'aider sur ce coup là, mais 500 participants, déjà reste sur Excel, tu auras ta maquette finale au moins même si ensuite tu passes sur du SQL.... Microsoft ou OpenSource...

Et donc le peu que je vois pour le Create Table "inscr"... Non non, pas bon tu vas pas répéter la même erreur que dans Excel, tu ne t'en sortiras pas !

Car là tu répêtes tous les champs :
VB:
 `module1` varchar(250) NOT NULL,
  `module2` varchar(250) NOT NULL,
  `module3` varchar(250) NOT NULL,
  `module4` varchar(250) NOT NULL,
  `module5` varchar(250) NOT NULL,
  `module6` varchar(250) NOT NULL,
  `module7` varchar(250) NOT NULL,

Ce n'est pas du tout ce que je te montrais :

Il n'y a QU'UN Champs No Module, pas 7 !!! (les modules 1, 2 3.... sont des Datas (rows))

1593804000934.png


En fait sur du SQL la Clef Primaire devrait être la relation entre quatre champs Code Participant, No Module, Type de Module, et comme j'avais proposé une Date... Ce qui empêche de saisir des doublons ensuite dans la base :
Même Participant, Même Module, Même Type, Même Date
Si tu en saisis un second identique ca crie nativement, Excel est bien plus tolérant à ce niveau là....

Enfin voilà, j'ai peur que tu t'embarques dans une usine à gaz, car le problème reste le même quelque soit le support de la base de données, il faut penser "structurée" avant tout !

Bon courage !
@+Thierry