Prendre en compte qu'un cellule colorée dans add

S

SirJacks

Guest
Bonjour,

Je pense que la question sera simple pour vous ! Mais pour moi, c'est le casse tête.

J'ai une ligne de chiffre style (10/200/50/12), et une case totale (0) au bout de chaque ligne.
Je désire qu'en colorant la cellule de l'un des chiffres, la case totale n'indique que le calcul des cellules ayant été colorées. Je colore le 10 et le 60, j'obtiens un total de 70.

Si c'est faisable, peut on faire que quelque soit la couleur la condition est remplie ?

Merci
 

porcinet82

XLDnaute Barbatruc
Salut SirJacks,

Essaye cette macro, elle devrait faire ce que tu souhaites.

Code:
Sub calcul()
Dim resultat As Integer

For i = 1 To Range('a65536').End(xlUp).Row
    For j = 1 To 4
        If Cells(i, j).Interior.ColorIndex DIF xlNone Then
            resultat = Cells(i, j).Value + resultat
        End If
    Next j
    Cells(i, 5).Value = resultat
    resultat = 0
Next i
End Sub

@+

PS : le forum n'acceptant pas le code différent de (inférieur, supérieur), je l'ai remplacé par DIF
 
S

SirJacks

Guest
Merci porcinet82 de te pencher sur ma petite question.

Mais deux choses...

Je ne sais pas me servir d'une macro, comment l'activer sur une cellule ?

Ensuite, lorsque je fais 'run' ta macro, ça me lance le debugger, y a t'il une erreur dans le script ?

Merci
 

porcinet82

XLDnaute Barbatruc
Salut SirJacks,

Je te propose de regarder le fichier joint pour que tu me dises si c'est ce que tu attendais ou pas. Si ce n'est pas le cas, met un petit fichier exemple.

Ensuite, je ne comprend pas cette phrase :
Je ne sais pas me servir d'une macro, comment l'activer sur une cellule ?

[file name=SirJacks.zip size=6894]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/SirJacks.zip[/file]

Si tu veux d'autres renseignements, n'hesite pas a refaire signe.

@+
 

Pièces jointes

  • SirJacks.zip
    6.7 KB · Affichages: 27
S

SirJacks

Guest
Mais je rêve !!
mince faut du zip ! j'avais mis du rar, bon je le renome:
[file name=Exemple_20060204133430.zip size=15680]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Exemple_20060204133430.zip[/file]
 

Pièces jointes

  • Exemple_20060204133430.zip
    15.3 KB · Affichages: 19

porcinet82

XLDnaute Barbatruc
re,

Tiens regade la PJ, j'ai modifié ton fichier. Tu me tiens au courant si ca fonctionne comme tu veux et si tu as d'autre questions.

[file name=SirJacks_v2.zip size=28070]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/SirJacks_v2.zip[/file]

@+
 

Pièces jointes

  • SirJacks_v2.zip
    27.4 KB · Affichages: 31
S

SirJacks

Guest
Merci, cela marche nikel.

Par contre, si je desire effacer la colonne nombre (G). La colonne totale passe de H à G. Et la macro fonctionne pour la colonne G. D'où un rajout de colonne. Comment je change les cellules d'application de la macro ?

Autre petite question, n' y a t'il pas un systeme automatique qui fait que dès qu'on colore une case la macro s'enclenche ?

Je pensais connaitre un peu excel, mais je vois que mes connaissances étaient proches de zero ! Peut on vraiment tout faire avec ce logiciel ^^
 

porcinet82

XLDnaute Barbatruc
Salut SirJacks,

POur ta premiere question, il te suffit de modifier le code comme suit :

Code:
For j = 2 To [b]6[/b]  If Cells(i, j).Interior.ColorIndex DIFF xlNone Then
     resultat = Cells(i, j).Value + resultat
  End If
Next j
Cells(i, [b]7[/b]).Value = resultat

Petite explication du code, je boucle sur les colonnes pour le For j, puisque Cells(i, j), le i correspond aux lignes, le j aux colonnes. Si il y a une couleur la cellule ligne i, colonnes j (de la colonne 2 à la colonne 6), alors le resultat prend le resultat deja present plus ce qu'il y a dans la cellule (i,j). Enfin, je place le resultat en colonne 7 de la ligne correspondante.

Pour ta seconde question, tu mets le code de la macro dans :
Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 'la macro
End Sub

Ce code doit etre placé dans un module de feuille et non un module standard.

J'espere avoir ete clair, mais c'est pas sur. Si un soucis ou une question, n'hesite pas.

@+

PS: remplace DIFF par inf-sup
 

porcinet82

XLDnaute Barbatruc
Salut SirJacks,

Je ne suis en général pas tres doué pour expliquer, donc rien de suprenant que tu n'est pas trop capté la deuxième partie, d'autant plus que je ne l'ai pas expliqué du tout (ce que je viens de voir en relisant mon dernier post).

Donc le Private Sub Worksheet_SelectionChange(ByVal Target As Range) correspond à un code de macro evenementielle, c'est à dire qui se trouve dans un module de feuille et non un module standard. En effet, ces macro sont spécifiques à la feuille a laquelle elles sont rattachées (est-ce c'est clair???). POur voir les différents types de macro évenementielle, dans ton module de feuille, tu cliques sur la zone de liste ou il y a Général et tu choisis Worksheet, ensuite, il te suffit de regarder dans la zone de liste de droite.

Donc celle que je t'ai proposé active la macro des que tu 'actives' une modification sur la feuille, que ce soit un changement de cellule, de couleurs, de donénes ...

J'espère avoir été plus clair que la première fois, et si ce n'est pas le cas, refais moi signe.

@+
 

Discussions similaires

Statistiques des forums

Discussions
312 391
Messages
2 087 942
Membres
103 679
dernier inscrit
yprivey3