Synthèse et amélioration du code (Code court)

avez-vous déjà travaillé dans une structure de santé qui fait dans du bénévolat ?

La réponse est oui et probablement bien avant vous. Et en général on cherche au plus simple

C'est mon cas mon frère.

?? jusqu'à ce jour, je n'ai qu'une soeur

Mais j'apprécie beaucoup votre aide et je continue à chercher une solution VBA,

Ok pourquoi ne pas continuer avec ce code là puisqu'il fonctionne.

NB : Simple question --> Past007 = https://leadconseil.com/ ?

rem : votre fichier contient une liaison vers un fichier LEAD_STATS_V7

OK, mais cet Userform ne répond pas à ma demande

Je reviens un peu en arrière :
Il me semble que tu désires alléger le code que tu as présenté dans ta première intervention et ainsi alléger le contenu du module "index". C'est pourquoi je te proposais de mettre sous variable tous les éléments intervenants dans ce code pour pouvoir ainsi n'utiliser qu'une seule fois ta procédure par le biais des variables choisies dans l'userform

Salut CousinHub, je ne te suis pas, que se passe t il ? Bien cordalement et au plaisir

Dan j'ai bien rigolé.

Si je pouvais avoir une société pareil, je serai très riche sûrement mais bon.

Dans le lien que tu as envoyé, LEAD n'a pas de S et or dans le fichier que j'ai envoyé LEAD en a un

Mais je vous rassure que toutes ses sociétés ne sont pas à moi.

Dans l'attente de vos retour

image image image image

Ok Jacky,

Ton langage est "trop technique" mais bon,

J'essai et te reviens.

Merci encore

Dan,

LEAD CONSEILS est le nom d'un utilisateur que je suis sur le forum du site DVP et ce sont ces fichiers que j'ai l'habitude de prendre et utiliser depuis bientôt 3 ans.

Bon, ensuite j'ai renommer mon PC avec ce nom, et gardé l'expression LEAD car ça fait LEAD(er) pour un débutant comme moi et voilà.

LEAD_STATS_V7 est le fichier d'origine, trop lourd à mettre ici, voici pourquoi je l'ai scindé.

Bon maintenant si ça vous gène et qu'à cause de cela nous ne pouvez pas m'aider, ok je comprend.

Je ne savais pas qu'on pouvais me faire un procès pour ça.

Je reste disponible au cas où vous aviez d'autre question.

OK, mais l'userform que tu as construit ne correspond absolument pas à ce que je te proposais

Revenons un peu en arrière :
Selon ta demande dans ton premier post tu désires alléger le code du module "Index", c'est pourquoi je te propose de créer un userform contenant de combobox pour chacune des variables utiilisées dans ce code, ainsi tu pourras remplacer toutes tes procédures par une seule en utilisant les variables choisie.

Bonjout CousinHub, cette fois ci j'ai du mal à suivre ce que tu affirmes sans évidemment porter une criique quelconque à tes propos. Bien cordialement et au plaisir

Bon maintenant si ça vous gène et qu'à cause de cela nous ne pouvez pas m'aider, ok je comprend.

Cela ne me gêne pas de vous aider sans quoi je ne serais pas intervenu.
Je vous ai juste fait une proposition par formule que vous ne désirez pas

Dans le lien que tu as envoyé, LEAD n'a pas de S et or dans le fichier que j'ai envoyé LEAD en a un

Moi je vois ceci. Où voyez-vous un S ?

image

Quand à la question de vous faire "un procès" pour reprendre vos termes, franchement je n'y pensais même pas.

Merci Dan,

J'ai mis ta formule Excel en C11, c'est ok.
Mais quand je l'a mets en D11, le résultat est 0, hors il devait être 2.

A moins que je n'y comprenne rien,

Ci-joint, la formule

=NB.SI.ENS(BaseRH[NOM];D$7;BaseRH[N° TELEPHONE];$B$11;BaseRH[SEXE];">01/01/2024")

Non c'est ma formule qui doit être modifiée et donc oui il y a erreur

Modifiez comme ceci en C11 puis tirez vers D11

=NB.SI.ENS(BaseRH[[SEXE]:[SEXE]];D$7;BaseRH[[CHOIX]:[CHOIX]];$B11;BaseRH[[DATE DE NAISSANCE]:[DATE DE NAISSANCE]];">01/01/2024")

N'oubliez pas que votre tableau doit s'arrêter en ligne 12.
Pour ajouter une nouvelle ligne, mettez vous en A13 et entrez un numéro, vous verrez que le tableaux sera adapté automatiquement

Dan,

Ton code a un soucis, à moins que c'est moi qui ne comprend pas.

Regarde :

  1. Dans la feuille LISTE PATIENTS, ligne 2, il un sujet de sexe masculin (M), qui est un « Nouveaux cas consultés référés » et qui a plus de 50 ans (cellule E2), mais ton code ne le compte pas
  2. Toujours dans la feuille LISTE PATIENTS, ligne 5 et 9, il y a deux sujets de sexe féminin (F), qui sont des « Nouveaux cas consultés référés » et qui ont moins de 11 mois car étant née en 2025 (colonne E), mais ton code ne le compte pas
  3. Enfin, toujours dans la feuille LISTE PATIENTS, il un sujet de sexe masculin (M), qui est un « Nouveaux cas consultés référés » et dont l’âge varie entre 15 et 49 ans car étant née le 01/03/2010 (cellule E12), mais ton code ne le compte pas non plus

Or quand je mets ton code, ça m'affiche ça (voir 1ere capture d'écran):

image image

bonjour le fil,

13code-court.xlsm (68.30 Ko)

Or quand je mets ton code, ça m'affiche ça (voir 1ere capture d'écran):

Non dans votre fichier posté cela affiche ceci

image

Les chiffres de ces deux colonnes correspondent aux premières lignes de votre code posté plus haut.

Et une chose je ne vous ai pas écrit de recopier la formule sur les colonnes E et suivantes mais uniquement de C11 à D11

Pour E11, il faut changer vos dates (comme dans le code partie --> '*** <=== 1-4 Ans)

=NB.SI.ENS(BaseRH[[SEXE]:[SEXE]];E$7;BaseRH[[CHOIX]:[CHOIX]];$B11;BaseRH[[DATE DE NAISSANCE]:[DATE DE NAISSANCE]];">=01/01/2021";BaseRH[[DATE DE NAISSANCE]:[DATE DE NAISSANCE]];"<=31/12/2025")

Formule à recopier en F11

Pour les autres il vous suffit de recopier la formule de F11 à droite et d'adapter les dates

Et je me répète, votre tableau doit s'arrêter en ligne 12 et pas en ligne 15

Bonjour Dan,

Bonjour BsAlv,

Vos codes fonctionnes à merveille, merci encore

Bonjour à tous et merci pour votre aide.

Je vais clôturer le sujet

Bonne journée à tous

Bonjout CousinHub, cette fois ci j'ai du mal à suivre ce que tu affirmes sans évidemment porter une criique quelconque à tes propos. Bien cordialement et au plaisir

Bonsoir,

Pas de soucis, je ne demande nullement à être suivi, d'une façon ou d'une autre.

Je suis intervenu sur ce fil, le demandeur voulant avoir d'autres réponses.

Et, en analysant un tout petit peu, voir que l'individu profitait des réponses de bénévoles, bref....

Mais, il a si bien expliqué

LEAD CONSEILS est le nom d'un utilisateur que je suis sur le forum du site DVP et ce sont ces fichiers que j'ai l'habitude de prendre et utiliser depuis bientôt 3 ans.

Bon, ensuite j'ai renommer mon PC avec ce nom, et gardé l'expression LEAD car ça fait LEAD(er) pour un débutant comme moi et voilà

Je me suis fourvoyé...

Bref, fin de l'épisode, bonne continuation

Bonjour à tous,

J'espère que vous allez bien

BsAlv, ton code est "diaboliquement" efficace.

Tu es un génie.

Tu ne te rend pas compte des centaines des lignes que tu m'as fait économisé (donc tu m'évites de perdre du temps, et par la même occasion m'empêche d'alourdir mon code).

Tu as fusionné le code Excel de DAN avec du VBA.

Chapeau

Pour ceux qui pourront être intéressé, voici le code final.

Bien de chose à vous et bon dimanche

Sub M_Past007()
     Dim c, c0, D1 As Long, D2 As Long, Sexe, Designation

     Set c = Range("Past007")                'la plage pour ces formules
     For Each c0 In c.Cells
          Designation = c0.Offset(, c.Column - 1 - c0.Column).Value     'quel designation
          Sexe = c0.Offset(c.Row - 1 - c0.Row).Value     'quel sexe
          Select Case LCase(c0.Offset(c.Row - 2 - c0.Row).Value)     'dépendant de l'age demandé, les dates de début et fin
                    'si nécessaire, on peut calculer les 2 dates au lieu de ces 2 dates fixes
               Case "0-11 mois": D1 = DateSerial(2025, 1, 1): D2 = DateSerial(2025, 12, 31)
               Case "1-4 ans": D1 = DateSerial(2021, 1, 1): D2 = DateSerial(2024, 12, 31)
               Case "5-14 ans": D1 = DateSerial(2011, 1, 1): D2 = DateSerial(2020, 12, 31)
               Case "15-49 ans": D1 = DateSerial(1975, 1, 1): D2 = DateSerial(2010, 12, 31)
               Case ">=50 ans": D1 = DateSerial(1900, 1, 1): D2 = DateSerial(1974, 12, 31)
          End Select

          s = Replace(Replace(Replace(Replace("COUNTIFS(BaseRH[pathologie],""CAS CONSULTÉS"",BaseRH[CHOIX],@1,BaseRH[SEXE],@2,BaseRH[DATE DE NAISSANCE],"">=@3"",BaseRH[DATE DE NAISSANCE],""<=@4"")", "@1", Chr(34) & Designation & Chr(34)), "@2", Chr(34) & Sexe & Chr(34)), "@3", D1), "@4", D2)
          'on choisit une des 2 lignes suivantes
          c0.FormulaR1C1 = "=" & s           'oubien on utilise la formule
          'c0.Value = Evaluate(s)             'oubien seulement le résultat
     Next

     Sheets("BILAN JOURNALIER").Select
     Range("a2").Select                      'Bascule sur la cellule "A2"
End Sub

merci pour les compléments et la formule de @Dan

il y avait 1 erreur dans la macro, cette ligne, parce qu'il y a des cellules fusionnées

Select Case LCase(c0.Offset(c.Row - 2 - c0.Row).MergeArea.Cells(1).Value) 'dépendant de l'age demandé, les dates de début et fin

et maintenant, il ne faut plus modifier la macro l'année prochaine.

6code-court.xlsm (68.93 Ko)

BsAlv merci à toi

re,

voir le nouveau fichier dans le poste précédent pour calculer les 2 dates.

BsAlv, c'est déjà fait.
La macro fonctionne chez moi,

Merci encore

oui, mais avez-vous vu les modifications pourque l'année prochaine, vous ne devez plus modifier la macro ?

Rechercher des sujets similaires à "synthese amelioration code court"