[EXCEL-VBA] Récapitulatif Feuille

Résolu/Fermé
anixela Messages postés 252 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 1 juin 2018 - 5 nov. 2010 à 11:38
anixela Messages postés 252 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 1 juin 2018 - 10 nov. 2010 à 09:47
Bonjour,

Cela fait un moment que je cherche sans arriver à trouver une réponse qui me permette de commencer mon projet VBA. Je fais un blocage et je ne comprends pas pourquoi ! En même temps, je suis novice en VBA donc cest peut-être la raison.

Je vous expose ce que j'ai et ce que je veux faire. On va rester sur la partie la plus simple qui me pose toutefois problème.
J'ai une feuille d'un classeur excel ("récapitulatif") qui comporte des données de patients
colonne A : Nom
Colonne B : Prénom
Colonne C : date de naissance
Colonne D : date de prélèvement
Colonne E : groupe de classement ("FH-pre", "FH-post", "FH-10min", "Normo")
Colonne F : type d'échantillon ("P", "BC", "S+Suc", "ST")
Colonne G : Volume

Comme j'ai plusieurs aliquots de volumes différents (ou non) pour chaque patient, je peux avoir plusieurs lignes pour un patient où seul le volume change.

par exemple :
Nom Prénom ddn ddp class éch vol
X A 01/01/1900 01/01/2010 FH-pre P 100
X A 01/01/1900 01/01/2010 FH-pre P 200
Y B 01/01/1930 01/01/2008 FH-post P 1000
Y B 01/01/1930 01/01/2007 FH-pre P 500

ce que j'aimerais obtenir d'après cet exemple est le tableau suivant :
Nom Prénom ddn ddp class éch vol tot
X A 01/01/1900 01/01/2010 FH-pre P 300
Y B 01/01/1930 01/01/2008 FH-post P 1000
Y B 01/01/1930 01/01/2007 FH-pre P 500

Pour cela, il me faut une macro qui me "scanne" mon tableau de la page "Récapitulatif"
et me fasse le total des volumes et note tout dans une autre feuille.
En sachant que mon tableau "récapitulatif" est évolutif puisque je peux enlever ou ajouter des tubes de patients déjà dans le tableau ou de nouveaux patients.

Si quelqu'un a au moins un début de code à me proposer parce qu'avec le très bon tuto que j'ai trouvé sur internet, je suis perdue...et il faut l'avouer, j'aimerais que cela soit fait rapidement.

D'avance, je vous remercie pour votre aide qui pourra me permettre de commencer ou pourquoi d'appliquer une de vos macros.

Bonne journée
Anixela

A voir également:

3 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
5 nov. 2010 à 16:24
Bonjour

Combien as tu ( ou auras tu) de lignes (environ) ?

Les noms sont ils toujours regroupés ?
0
anixela Messages postés 252 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 1 juin 2018 23
5 nov. 2010 à 16:46
Bonjour Michel,

Pour le nombre de lignes, pour l'instant j'en ai 844 mais c'est un nombre de lignes évolutif dans la mesure où une ligne correspond à un tube que je peux utiliser et donc je supprime la ligne quand j'ai pris le tube. Et je peux également recevoir de nouveaux tubes.
Pour le regroupement des noms, j'utilise la fonction trier mais il est vrai que si on peut faire une macro qui fonctionne que les noms soient triés ou non, cela serait mieux ;-)

En tout cas, merci de te pencher sur mon cas...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
5 nov. 2010 à 22:53
si on peut faire une macro qui fonctionne que les noms soient triés ou non, cela serait mieux ;-)
c'est OK, pas de problème de tri
ci joint maquette:
http://www.cijoint.fr/cjlink.php?file=cj201011/cijwim8SuH.xls

au fait: "aliquots" qu'ès aco ?

j'va au dodo...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
6 nov. 2010 à 07:53
bonjour,

J'ai pensé à ces 2 trucs ce matin en mettant mes chaussettes:

1/ fallait il prendre en compte, pour une m^ personne et m^ soin , le total des volumes quelque soit la date de soins ou le total par date comme cela est fait actuellement ?

2/ version un peu plus rapide (le 1° lancement de ta session est toujours plus lent)
http://www.cijoint.fr/cjlink.php?file=cj201011/cijglJwhr1.xls
0
anixela Messages postés 252 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 1 juin 2018 23
7 nov. 2010 à 10:41
Bonjour Michel,

Je vois que tu as travaillé dur sur mon problème et je t'en remercie !

J'ai regardé les deux versions : en effet la deuxième est plus rapide (enfin, sur le fichier exemple la différence n'est pas énorme, il va falloir que je teste sur mon fichier réel).

Pour répondre à tes questions :
1. un aliquot est en fait une partie de quelque chose. J'illustre, ce sera plus simple. Je prélève du sang chez des patients et je récupère dessus le plasma (ou le sérum). 7mL de sang me permet d'avoir environ 3mL de plasma. Comme mes expériences se font avec des petits volumes (en général 0,5mL), je congèle le plasma par volumes de 0,5mL pour ne décongeler que ce dont j'ai besoin pour l'expérience du jour. Du coup, j'ai plusieurs tubes contenant 0,5mL : un tube est un aliquot. J'espère que c'est clair comme ça !

2. ce que tu as fait est très bien. Il faut, en effet, il me faut un total par date de prélèvement puisque les analyses biologiques peuvent varier d'un prélèvement à un autre.

En tout cas, moi, en mettant mes chaussettes le matin, je pense à tout sauf à l'informatique ;-)

Autrement, j'ai constaté un "défaut" ou peut-être est-ce une mauvaise option cochée dans mon excel. Dans la synthèse avec la version 2, la date de naissance 01/01/1900 n'est pas reprise correctement : dans un cas, j'ai 31/12/1899 !

A quoi est-ce dû ?

Bon, je vais étudier ton code pour comprendre exactement comment tu t'y es pris...parce que l'entraide n'a de bon que lorsqu'on peut apprendre et pas recopier "bêtement" les choses des autres.

Merci beaucoup...

J'attends ta réponse concernant la date avant de mettre le sujet en résolu.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 7/11/2010 à 17:14
Bonjour,

les dates sur XL c'est le piège!... Le 1/1/1900 c'est le départ des dates avec office(d'accord, tu ne dois pas rencontrer souvent des patients nés le 1/1/1900 mais...). ET qui + est les mois et les jours étaient inversés façons US !!!

J'ai mis un filtre sur la feuille synthèse (hors vba) pour voir par exemple que Monsieur X

Je viens de retirer le lien: truc bizarre en faisant un essai. je regarde

Tu me dis le temps pour ta liste actuelle. un conseil: fais des essais sur une copie de ton classeur de travail

cordialement
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
7 nov. 2010 à 17:26
Et voila le dernier jus
http://www.cijoint.fr/cjlink.php?file=cj201011/cijuJoy0Ja.xls
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
Modifié par michel_m le 8/11/2010 à 12:14
Bonjour,

Tu dois être un fana d'informatique et de VBA ! : c'est un peu vrai comme tous les forumeurs-contributeurs, donc heuuuu... assez maso :-D

met le classeur sans données confidentielles en pièce jointe (format XL97-2003) sur
http://cijoint.fr/
et colle le lien proposé dans le message de réponse

ou tu le met en message personnel


Michel
0
anixela Messages postés 252 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 1 juin 2018 23
8 nov. 2010 à 13:22
Re,

Voici donc le fichier sans données confidentielles et avec encore quelques "trous" dans les données.

http://www.cijoint.fr/cjlink.php?file=cj201011/cij2hdpImT.xls

Bon courage...
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
8 nov. 2010 à 13:55
http://www.cijoint.fr/cjlink.php?file=cj201011/cijUJZG7K4.xls

j'ai inclus une date de naissance "pour voir"

pour commander, utilise la barre d'outils "formulaire" lorsque le bouton sera dessiné il te demandera de l'affecter à une macro (nettoyer synthèse nettoie la feuille synthèse : utile en essai de macro)

tu aurais peut ^tre intér^t à créer une liste des patients sur une feuille nom -prénom-ddn
ainsi lorsque tu auras saisi un nom dans le récapitulatif tu aurais le prénom et la date en utilisant la formule rechercheV. mais ca sort du sujet
0
anixela Messages postés 252 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 1 juin 2018 23
8 nov. 2010 à 14:38
Si je comprends bien, tu as changé les chiffres dans sheets par les noms des feuilles et hop cela fonctionne?!
Et le bouton ne s'affichait pas parce que je ne l'avais pas dessiné ? !
J'ai mis le bouton 2 qui fonctionne très bien :-)

J'ai juste constaté un problème pour le patient EL BOU M : EL BOU doit être dans le nom et en fait, cela a été rangé EL dans le nom et BOU dans le prénom et donc M dans la ddn et donc décalage d'une cellule vers la droite pour tout le reste.

Bon, je passerai un peu plus de temps à tout bien comprendre ce soir tranquillement à la maison parce qu'au boulot je ne suis pas tranquille pour réfléchir sur ce genre de problèmes.

Merci...
J'attends tout de même ton avis pour le p'tit problème et ensuite, je pourrai mettre ça en résolu !
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
8 nov. 2010 à 17:14
re,re

ci joint l'engin modifié pour tenir compte des noms avec des espaces
http://www.cijoint.fr/cjlink.php?file=cj201011/cij5osWqJv.xls

pour la concaténation j'ai mis la séparation des données avec un double espace
tablo_in.don(cptr - 2) = Join(tampon, "  ")

idem pour la déconcaténation
separe = Split(tablo_in.don(cptr - 2), "  ") 


Chuis content pour la durée 0,1 seconde chez moi également mais ca risque d'être + long si les noms ne sont pas regroupés....

Je penserai à toi lors de ma prochaine prise de sang, chère Madame Aliquot !!! ;-))

cordialement
0
anixela Messages postés 252 Date d'inscription vendredi 1 décembre 2006 Statut Membre Dernière intervention 1 juin 2018 23
10 nov. 2010 à 09:47
Bonjour Michel,

Je te remercie pour ton aide.
Tout à l'air de tourner correctement maintenant.
Sans les données biologiques, cela tourne en 0,28 secondes au boulot. Certes avec les noms triés mais ce n'est pas grave s'il faut trier avant pour aller plus vite.

Je pense que j'ai compris le cheminement et que je vais donc pouvoir ajouter les commandes pour avoir les données biologiques également.

J'espère que tu n'as pas besoin de te faire piquer trop souvent, en tout cas pas toutes les 2-3 semaines comme les patients que j'ai. Que ce n'est que pour des bilans de contrôle !

Encore merci et bonne continuation.

Cordialement,
Anixela

P.S : Je n'avais pas vu que j'avais déjà mis le sujet en résolu...En tout cas, maintenant sujet résolu !
0