IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[E-03] Réévaluation d'une fonction suite changement couleur de texte d'une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [E-03] Réévaluation d'une fonction suite changement couleur de texte d'une cellule
    Bonjour,
    je suis nouvelle sur ce forum et le trouve très bien...malheureusement je n'arrive pas à trouver la solution à mon problème :
    J'ai un tableau excel(2003) dans lequel on saisi des heures d'absence et suivant la nature de l'absence on met la valeur dans une couleur définie(rouge, violet ou noir suivant le cas).
    J'ai besoin d'un total par couleur, jusque là pas de problème...en revanche je n'arrive pas à trouver comment faire pour que les totaux se recalculent automatiquement après le changement de couleur(lorsque la valeur est déjà saisie dans la cellule)....quelqu'un aurai une idée??
    je vous mets mon code déjà existant(le même pour les 3 couleurs)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Function SommeMaintien(champ As Range)
       Dim c, temp
     
       ' mise à jour à chaque changement de valeur d'une cellule
       Application.Volatile
     
       'définition de la couleur
       couleurTexte = Range(Application.Caller.Address).Font.ColorIndex
       '--> prend comme référence la couleur de la cellule de destination du calcul
     
       temp = 0
     
       'pour chaque cellule dans le champs défini,
       'si la couleur du texte est la même que la cellule de destination
       'et si la valeur de la cellule est un nombre
       'alors on calcule la somme totale
     
        For Each c In champ
            If c.Font.ColorIndex = couleurTexte Then
                If IsNumeric(c.Value) Then temp = temp + c.Value
            End If
     
       Next c
     
       SommeMaintien = temp
     
    End Function

    Merci d'avance,

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 129
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Bonjour et bienvenue sur nos forums.

    J'ai cru comprendre à la lecture du message que la coloration est manuelle.

    Personnellement, j'aborderais le problème autrement.

    J'utiliserais Format/Mise en forme conditionnelle pour colorer la cellule en fonction de son contenu (type d'absence). Ainsi, la coloration dépendrait du contenu de la cellule.

    Après, on peut réaliser les totaux et autres calculs sur base de la valeur de la cellule et non sur base de la coloration (SOMME.SI, SOMMEPROD, NB.SI, ...)

    Ok?

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci mais malheureusement cela ne fonctionnera pas : en effet on saisi des chiffres et après selon la nature de l'absence on les met en couleur...
    Voir doc ci joint : à droite les dates, en haut le nom des personnes, et ensuite on saisi les heure d'absences qui se totalisent en bas dans "total" suivant la couleur dans laquelle on les a saisies....je ne voit pas comment utiliser la mise en forme conditionnelle dna sce sens là du problème...
    Je tiens tout de même à préciser que je n'ai plus fait de développement depuis 5ans et que c'est un peu dur pour moi de m'y remettre (le code dans le message précédent a été trouvé sur un forum...)
    Fichiers attachés Fichiers attachés

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 129
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 129
    Points : 55 942
    Points
    55 942
    Billets dans le blog
    131
    Par défaut
    Le tableau mis en exemple n'est pas très explicite pour moi.

    Je reste persuadé qu'il y a moyen de s'en sortir avec des règles et des formats conditionnels, quitte à modifier la présentation des données. Il en est ainsi de tout système de gestion de données dans lesquels la mise en forme des données dépend de leur nature et/ou valeurs, et non l'inverse. Je verrais bien les colonnes de présences divisées en deux, avec un code via liste de validation pour préciser la présence, l'absence non justifiée, l'absence médicale, ... avec en regard les heures concernées par ce motif de présence ou d'absence.

    La gestion des couleurs pour dénombrer et sommer dans Excel fait appel à des macros, mais également à d'autres paramètres, tels que la palette de couleurs par exemple. C'est, à mon sens, la porte ouverte à des erreurs de formules.

    Ne pas oublier non plus que les couleurs, c'est aléatoire, qu'il y a des daltoniens et des imprimantes noir et blanc. Ton tableau, sorti de son contexte Excel "colorisé" est rendu inexploitable.



    Pourrais-tu préciser la façon dont les données arrivent dans ton tableau?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Bas Rhin (Alsace)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Pierre Fauconnier Voir le message
    Ne pas oublier non plus que les couleurs, c'est aléatoire, qu'il y a des daltoniens et des imprimantes noir et blanc. Ton tableau, sorti de son contexte Excel "colorisé" est rendu inexploitable.

    Pourrais-tu préciser la façon dont les données arrivent dans ton tableau?

    C'est vrai que je n'avais pas pensé à ça....je pense que du coup ton idée de séparer les colonnes en 2 sera effectivement plus appropriée....
    Les données sont rentrées manuellement dans le tableau...

    Merci beaucoup pour tes remarques constructives, je vais revoir ma méthode...que c'est dur de se remettre au développement après tant de temps!!!....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 1
    Dernier message: 02/08/2013, 20h48
  2. Réponses: 17
    Dernier message: 16/07/2012, 15h10
  3. Réponses: 1
    Dernier message: 27/03/2012, 18h14
  4. Renommer une fonction dans un select ou concevoir autrement une fonction
    Par tavarlindar dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 30/05/2008, 18h17
  5. Changement dans le formulaire pendant une fonction
    Par ben12375 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 17/01/2008, 15h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo