Macro excel

Blueberry-60

XLDnaute Nouveau
Bonjour à tous.

Je cherche à écrire une macro (execution simple clique, résultat caractère ü en police windings) pour pointage des patients de notre hôpital afin de faciliter la tâche aux membres du personnel.
B3 AF38

pouvez-vous me donne la marche à suivre pour autoriser les macros (VBA il me semble) uniquement sur ce classeur comportant plusieurs pages ? Je pense l'avoir fait mais j'ai un doute.

Explication du tableau et de ce que je recherche :
Le tableau : pour l'instant j'ai un tableau excel basique avec des dates et un total mis en lignes d'une part. D'autre part j'ai des noms triés par ordre alphabétique et une moyenne en colonne. J'ai une ligne colorée en verte puis une autre blanche (par défaut). J'ai des formules pour le total (=SOMME) et d'autres pour la moyenne (=MOYENNE). J'ai également inséré un symbole (la coche) au tableau auquel je vais affecter la macro recherchée pour l'activation/désactivation. Les cases à remplir sont de B3 à AF38 et sont en police wingdings. Et quelques cases dans la colonne A permettant d'ajouter des noms.
Le résultat final que je recherche est que lorsque je 'simple clic gauche' sur le symbole 'coche' puis sur telle ou telle case puis sur une autre case ainsi de suite (cases comprises entre B3 et AF38) cela y inscrive le caractère ü en police windings (correspond à une coche) tout en ayant une valeur réelle de 1 (pour que mes formules somme et moyenne puissent fonctionner). Je voudrai bien entendu "ressortir" de la sélection de la cellule. Puis en rappuyant sur le symbole 'coche' que ça stop (et non pas efface) toutes ces actions et que je puisse tout simplement selectionner une cellule sans autre chose.
Je voudrai également que lorsque je clique droit (toujours en ayant au préalable cliqué sur le symbole 'coche') cela supprime le contenu de la cellule (en cas d'erreur).
Je cherche également à ce que mes lignes ?? à ?? se trient par ordre alphabétique lors de l'ouverture du fichier excel (il faut que les caractères de la ligne entière suivent le tri par ordre alphabétique mais pas les couleurs qui doivent rester une verte une neutre, une verte une neutre, ...).

Petit résumé maintenant que vous avez les données en tête :

1- activation macro pour le fichier excel uniquement
2- macro activée par clique gauche sur le symbole affectée à la macro ayant deux actions différentes :
a/ clic gauche = affichage d'une coche ayant pour valeur réelle 1 sur chaque cellule selectionnée
b/ clic droit = suppression des caractères de la cellule
3.1- désactivation de la macro sans effacer les caractères précedemment insérés par clique gauche (ou droit) sur le symbole coche affecté à la macro
OU
3.2- désactivation de la macro par clic gauche sur un autre symbole style X que j'insérerai.
4- macro tri par ordre alphabétique à l'ouverture du fichier.

Merci de bien vouloir corriger les erreurs que j'ai peut-être faites afin de pouvoir accueillir vos macros.
Et surtout merci d'avance pour l'aide apportée. Sachez que vous allez faire gagner environ 5mn par jour à des infirmières qui courrent toute la journée et permettre à une infirmière très nulle en informatique de pointer ses patients sur un ordinateur en toute simplicité !

Cordialement, un collégue qui souhaite faire gagner du temps grâce à vous aux infirmières de son service voir peut-être même à un hôpital entier.
 

Pièces jointes

  • Emargement OM à envoyer.xlsm
    18.9 KB · Affichages: 26
Dernière édition:

David.TS

XLDnaute Nouveau
Bonjour Blueberry,

Il me semble qu'un fichier joint en exemple aurait été le bienvenu afin de visualiser correctement vos besoins... ;)

Par ailleurs, ceux-la demandent une écriture assez ambitieuse et téméraire car je ne sais pas vraiment quel sera la portée effectives des actions de cette gente fratrie d'infirmières très respectables auxquelles vous confiez-nous les besoins, sachant qu'il en va au dépend de patients dont le pointage peut sembler facile mais non sources d'erreurs, auxquelles nous ne savons les conséquences. De plus, le code VBA des macros risque d'être assez complexe.

Cela dit, je serais heureux de pouvoir vous aider dans la mesure de mes possibilités et connaissances d'Excel.

Téléversez un fichier d'exemple à l'aide du bouton ci-dessous. Nous serions plus à même de pouvoir vous aider.

@+

David.
 

Blueberry-60

XLDnaute Nouveau
Bonjour Blueberry,

Il me semble qu'un fichier joint en exemple aurait été le bienvenu afin de visualiser correctement vos besoins... ;)

Par ailleurs, ceux-la demandent une écriture assez ambitieuse et téméraire car je ne sais pas vraiment quel sera la portée effectives des actions de cette gente fratrie d'infirmières très respectables auxquelles vous confiez-nous les besoins, sachant qu'il en va au dépend de patients dont le pointage peut sembler facile mais non sources d'erreurs, auxquelles nous ne savons les conséquences. De plus, le code VBA des macros risque d'être assez complexe.

Cela dit, je serais heureux de pouvoir vous aider dans la mesure de mes possibilités et connaissances d'Excel.

Téléversez un fichier d'exemple à l'aide du bouton ci-dessous. Nous serions plus à même de pouvoir vous aider.

@+

David.
Je vous joint le fichier dès demain au travail, je suis actuellement chez moi.
 

David.TS

XLDnaute Nouveau
Dans un premier temps, pour pouvoir utiliser des macros votre fichier doit être enregistré dans le bon format : c'est à dire xlsm (classeur prenant en charge les macros) et non pas xlsx comme c'est le cas avec votre fichier joint. Quelle version d'Excel utilisez-vous ?
 

gosselien

XLDnaute Barbatruc
Bonjour,
un modeste début de solution (pour le "V") ;) police WINDINGS2
double clic gauche pour mettre ou enlever la coche
dans le code de la feuille JANVIER
Total en ligne 40 : =SOMMEPROD((B3:B37=CAR(80))*1)
Je laisse le reste à plus forts que moi :)

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Intersect(Target, Me.Range("B3:AF38")) Is Nothing Then
   If IsEmpty(Target) Then
      Target.Value = Chr(80)
   Else
      Target.Value = ""
   End If
End If
End Sub

P.
 

David.TS

XLDnaute Nouveau
De quel genre de "Moyenne" est-il question dans la colonne "AG" (Moyenne) ? S'agit-il du nombre de cases cochées sur la même ligne correspondante ? Dans ce cas, une simple somme "=NB.SI(B3:AF3;CAR(80))" peut suffire. (Windings2, caractère 80 ou Windings caractère 252)
 

Blueberry-60

XLDnaute Nouveau
De quel genre de "Moyenne" est-il question dans la colonne "AG" (Moyenne) ? S'agit-il du nombre de cases cochées sur la même ligne correspondante ? Dans ce cas, une simple somme "=NB.SI(B3:AF3;CAR(80))" peut suffire. (Windings2, caractère 80 ou Windings caractère 252)
C'est une moyenne comprise donc entre 0 et 1 pour le taux de présence de tel ou tel patient. En réalité la seule moyenne qui m'intéresse c'est celle de la derniere ligne. En fait en 1ere page je vais avoir un graphique en colonne qui indique le pourcentage d'occupation des patients dans le service en prenant comme base 20 (maximum 20 patients).
 

Blueberry-60

XLDnaute Nouveau
En fait dans le total ça c est juste l'addition de tous les patients présents à tel date. Cette donnée nous est utile car nous nous devons de savoir chaque jour combien de patients sont présents dans le service.
La seule moyenne qui m'intéresse vraiment c'est la moyenne du nombre de patients présents dans le mois. Celle ci sera donc supérieure à 1 étant donné qu'il y a toujours au moins une douzaine de patients présents et ne sera pas en format pourcentage mais en nombre décimal (d'où ma formule dans la case moyenne-total).
La moyenne de chaque patient est inutile en revanche. C'est juste une question d'esthétique du tableau je trouvais ça moche de mettre une colonne moyenne uniquement dans les dernieres lignes et rien au dessus.
Ce qui serait faisable (mais je ne connais pas la formule) c'est une formule combinée faisant la moyenne des résultats de la ligne total puis une division de cette moyenne par la base (donc 20) avec le résultat (en pourcentage) noté directement dans le graphique colonne qui sera fait à la fin en 1ère feuille.
Seul ca pourra me permettre du supprimer cette colonne "moyenne", me faire gagner de la place (le tableau doit rentrer sur une feuille A4 format paysage) et donc augmenter la taille de mes colonnes pour rendre le tableau plus lisible
 

David.TS

XLDnaute Nouveau
Note : pour être sûr de pouvoir enregistrer le fichiers dans le bon format (xlsm) avec prise en charge des macros, faites "Enregistrer sous...." avec un autre nom de fichier et en choisissant 'Classeur Excel (prenant en charge les macros) (*.xlsm)".

Pour être sûr d'avoir bien activer les macros : "Fichier > Options > Centre de gestion de la confidentialité > Bouton Paramètres du centre de gestion de la confidentialité > Paramètre des Macros > Case à cocher Activer toutes les Macros"
 

Blueberry-60

XLDnaute Nouveau
Note : pour être sûr de pouvoir enregistrer le fichiers dans le bon format (xlsm) avec prise en charge des macros, faites "Enregistrer sous...." avec un autre nom de fichier et en choisissant 'Classeur Excel (prenant en charge les macros) (*.xlsm)".

Pour être sûr d'avoir bien activer les macros : "Fichier > Options > Centre de gestion de la confidentialité > Bouton Paramètres du centre de gestion de la confidentialité > Paramètre des Macros > Case à cocher Activer toutes les Macros"

Oui j'en profiterai également pour changer son format.
 

Discussions similaires

Réponses
19
Affichages
445
Réponses
1
Affichages
301

Statistiques des forums

Discussions
315 094
Messages
2 116 153
Membres
112 670
dernier inscrit
Flow87