Allez plus loin dans le numérique
45 utilisateurs connectés

[oi 200] exel additionner cellule de meme couleur

marvelous02 le 28 février 2008 à 12h13
salut, je travail sur la macro de l'oi n°200, décembre, page 168 concernant un calcul de cellule de meme couleur.

oi a écrit :

Option Explicit
Function som_couleur(plage As Range, couleur As Integer) As Double
Dim r As Range, nb As Double
Application.Volatile
nb = 0 (chiffre ou lettre ???)
For Each r In plage
If r.Interior.ColorIndex = couleur Then nb = nb + r.Value
Next
som_couleur = nb
End Function

Function cellcouleur(c As Range)
cellcouleur = c.Interior.ColorIndex
End Function


puis sur le tableau, taper dans un cellule =cellcouleur(cellule) pour avoir le numéro de la couleur (ça marche) mais lorsque je saisis =som_couleur(A1:B5;39) je reçois le message erreur de formule. merci d'avance, amicalement
-->Message édité par marvelous02 le 28/02/2008 21:10:54<--
-------
mon site à moi (maj : 09/04/09)

commençons par le plus simple et n'oublions pas d'informer ceux qui nous répondent !!
sylmor le 01 mars 2008 à 18h50
Même cause, Même effet : la fonction couleur fonctionne. Pour l'autre :bug:

Avec le message : Erreur de comilation, Next sans For
Merci aux spécialistes du VBA de nous aider à déboguer la fonction : je soupconne le "As Double " d'être à l'origine du plantage ??? !
Jijouille le 02 mars 2008 à 15h42
salut

pour moi avec ceci cela fonctionne parfaitement

Option Explicit
Function som_couleur(plage As Range, couleur As Integer) :o (j'ai enlevé le "As Double" qui sortait en erreur)
Dim r As Range, nb As Double
Application.Volatile
nb = 0 ;) (c'est le chiffre zéro pas un o)
For Each r In plage
If r.Interior.ColorIndex = couleur Then nb = nb + r.Value
Next
som_couleur = nb
End Function

Function cellcouleur(c As Range)
cellcouleur = c.Interior.ColorIndex
End Function


cela me donne bien :bravo: :

1 8
15 6
3 9
5 19
19 0

39 numéro de cette couleur
34

le 15 et le 19 étant de la même couleur
(je ne sais plus comment on insère une image désolé)
sylmor le 02 mars 2008 à 17h18
Ca marche !
Mon erreur (a priori) c'est d'avoir mis la ligne de code :
If r.Interior.ColorIndex = couleur Then nb = nb + r.Value
sur deux lignes :
If r.Interior.ColorIndex = couleur Then
nb = nb + r.Value

Merci
Jijouille le 02 mars 2008 à 17h41
j'ai remis "As Double" mais en bout de ligne, pas comme indiqué dans OI n°200
idem pour la ligne "if r.Interior............" "nb=nb+r.value" va sur la même ligne
et enfin "nb = 0" c'est bien le chiffre zéro

Option Explicit
Function som_couleur(plage As Range, couleur As Integer) As Double
Dim r As Range, nb As Double
Application.Volatile
nb = 0
For Each r In plage
If r.Interior.ColorIndex = couleur Then nb = nb + r.Value
Next
som_couleur = nb
End Function

Function cellcouleur(c As Range)
cellcouleur = c.Interior.ColorIndex
End Function

-->Message édité par Jijouille le 05/03/2008 11:31:59<--
marvelous02 le 02 mars 2008 à 21h44
re, merci jijouille, en copiant ton script, et en copiant =som_couleur(a1:b5;7) exel me met le message suivant :

< inclued picture >

amicalement
-------
mon site à moi (maj : 09/04/09)

commençons par le plus simple et n'oublions pas d'informer ceux qui nous répondent !!
Jijouille le 03 mars 2008 à 12h55
salut

apparemment le résultat de cette procédure est très aléatoire ?????

je viens de refaire toute la procédure et j'ai un message dans visual basic

< inclued picture >

impossible de le refaire correctemement comme ce week-end

je referais des tests ce soir
Jijouille le 04 mars 2008 à 11h35
Bonjour

Alors, j'ai tout refait à l'instant au bureau (oui bon c'est vrai je suis pas payé pour ça mais c'est pour le bien du forum ;) )
et voici le résultat, tout beigne :bravo:
l'image est un peu grande j'espère que ça passera
j'ai fait l'opération pour les 40 couleurs prédéterminées dans excel
je me suis amusé ensuite à mettre plusieurs cellules de la même couleur et cela fonctionne
sinon il y a t-il un moyen pour mettre le fichier excel en pièce jointe quelque part ? (attention à bien accepter les macros au départ sinon formule de calcul en erreur et il faut réouvrir le fichier)
< inclued picture >
marvelous02 le 06 mars 2008 à 10h56
re, merci jijouille pour ta disponibilité. Donc j'ai bie reçu ton fichier qui marche à la perfection MAIS (et oui y a un mais):

Si je modifie tes couleur de fond (A), la colonne (B) fonctionne
Si je modifie la colonne (D) en fonction de la couleur de fond (A) ça fonctionne
Si je modifie le chiffre (A) bonne réponse en (D)

mais je désire appliquer cette formule sur une autre colonne (F) ==> erreur
si j'ouvre une autre feuille ==> erreur
si je colle ton script dans un autre classeur ==> erreur

Voilà, surement un bug quelque part chez moi, puisque ça fonctionne chez toi. amicalement
-------
mon site à moi (maj : 09/04/09)

commençons par le plus simple et n'oublions pas d'informer ceux qui nous répondent !!
Jijouille le 06 mars 2008 à 11h42
mais je désire appliquer cette formule sur une autre colonne (F) ==> erreur
si j'ouvre une autre feuille ==> erreur
si je colle ton script dans un autre classeur ==> erreur

il se passe la même chose chez moi.
En fait dès que tu copies une formule pour la mettre 2 colonnes plus loin par exemple, il ne garde pas le principe d'aller chercher l'info là où elle était au départ, je m'explique :

info en A2 (chiffre 1 sur fond noir)
formule en B2 qui demande le numéro de la couleur en A2 (résultat 1)
en fait la formule demande quelle est la couleur qui est 1 colonne avant et sur la même ligne
si je copie la formule qui se trouve en B2 pour la mettre en F2
le résultat est -4142 parce que la formule en F2 est =cellcouleur(E2) c'est à dire le même chose que lorsqu'elle était en B2 : quelle est la couleur qui est 1 colonne avant et sur la même ligne

pour ce qui est d'une nouvelle feuille je n'ai pas compris ce que tu voulais y mettre

pour ce qui est du script à la base ce n'est pas mon truc, par contre pour avoir testé plusieurs fois celui-ci, je me suis aperçu que cela fonctionne très bien quand tu le tapes dans visualbasic mais dès que tu fais des copier/coller ça part un peu en sucette mais encore une fois c'est pas mon truc.


AIDE DU FORUM

FORUMS THÉMATIQUES

FORUMS GÉNÉRAUX

publicité
> ChanceRoom
Découvrez la nouvelle Poker Room montante.

Service 01net
Newsletters 01net
abonnez vous gratuitement !
  
01Informatique
01 INFORMATIQUE
L'hebdo de référence des décideurs informatiques.
Micro Hebdo
MICRO HEBDO
L'hebdo qui vous simplifie la micro
et Internet.
L'Ordinateur Individuel
L'ORDINATEUR INDIVIDUEL
Le mensuel informatique qui vous informe et vous conseille.
Nous contacter  |  Charte de confiance  |  Voir notice légale

01net.  -  01men  -  RMC  -  BFM Radio  -  BFM TV  -  TousLesPodcasts  -  01informatique.fr  -  Association RMC-BFM
Tous droits réservés © 1999 - 2009 Internext - 01net.