[EXCEL-VBA] Récapitulatif Feuille [Résolu/Fermé]

Messages postés
253
Date d'inscription
vendredi 1 décembre 2006
Statut
Membre
Dernière intervention
1 juin 2018
- - Dernière réponse : anixela
Messages postés
253
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

Afficher la suite 

3 réponses

Messages postés
15893
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
28 juin 2019
2767
0
Merci
Bonjour

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

Les noms sont ils toujours regroupés ?
Messages postés
253
Date d'inscription
vendredi 1 décembre 2006
Statut
Membre
Dernière intervention
1 juin 2018
23
0
Merci
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...
michel_m
Messages postés
15893
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
28 juin 2019
2767 -
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
anixela
Messages postés
253
Date d'inscription
vendredi 1 décembre 2006
Statut
Membre
Dernière intervention
1 juin 2018
23 -
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.
michel_m
Messages postés
15893
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
28 juin 2019
2767 -
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
michel_m
Messages postés
15893
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
28 juin 2019
2767 -
anixela
Messages postés
253
Date d'inscription
vendredi 1 décembre 2006
Statut
Membre
Dernière intervention
1 juin 2018
23 -
Bonjour,

Encore merci pour ton implication...Tu dois être un fana d'informatique et de VBA !
Autrement, j'ai voulu tester avec mon fichier (comme tu me l'as suggéré, j'en ai fait une copie). Tout bêtement, j'ai copié ton code dans mon classeur, a priori sur les bonnes feuilles, mais voilà que je ne vois pas la commande pour faire la synthèse sur ma feuille de relevés.
Petites précisions :
1. ma feuille de relevés s'appelle "récapitulatif prélèvements"
2. elle est en fait la feuille 13
3. j'ai créé une feuille synthèse qui est la feuille 15

J'ai changé dans la fonction sheets le 1 par 13 et le 2 par 15 mais cela ne fonctionne pas mieux donc je pense que je n'ai pas compris cette fonction.
Par contre, quand je colle mes données dans la feuille "relevés" de ton classeur, cela fonctionne bien et en plus c'est rapide (0,10 secondes d'après le compteur). je n'ai pas encore les dates de naissance dans mon fichier mais je vais le faire pour voir que tout fonctionne bien.

J'ai également les données biologiques donc des colonnes supplémentaires dans la feuille "relevés" et donc je vais essayer de les intégrer dans la synthèse (en sachant que pour une même date d'un même patient, c'est la même chose, cela devrait être plus simple).

Alors, si tu as une solution pour que je puisse voir la commande sur ma feuille, je suis preneuse.
J'avais pensé qu'elle pouvait être sur une des feuilles précédentes mais je ne l'ai pas trouvée :-(

Bonne journée
Messages postés
15893
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
28 juin 2019
2767
0
Merci
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
anixela
Messages postés
253
Date d'inscription
vendredi 1 décembre 2006
Statut
Membre
Dernière intervention
1 juin 2018
23 -
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...
michel_m
Messages postés
15893
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
28 juin 2019
2767 -
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
anixela
Messages postés
253
Date d'inscription
vendredi 1 décembre 2006
Statut
Membre
Dernière intervention
1 juin 2018
23 -
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 !
michel_m
Messages postés
15893
Date d'inscription
lundi 12 septembre 2005
Statut
Contributeur
Dernière intervention
28 juin 2019
2767 -
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
anixela
Messages postés
253
Date d'inscription
vendredi 1 décembre 2006
Statut
Membre
Dernière intervention
1 juin 2018
23 -
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 !