Flux rss
Collection CommentCaMarche.net
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

Créer une fonction Excel avec 'for'

Hydre, le dimanche 12 octobre 2008 à 10:43:01
Salut,

Je voudrais créer une fonction dans Excel 2003 (SP3) qui me permette de sommer des cellules d'une même couleur de fond.
J'ai déjà la fonctin qui teste la couleur d'une cellule :
=ColorCell(#cellule)
qui renvoie le numéro de la couleur de fond de la cellule.
Ce que je voudrais faire, c'est en fait une boucle qui teste ça pour un grand nombre de cellules.
Je m'explique : je voudrais une fonction qui s'utilise comme ça
SOMMECOULEUR( #plage_de_cellules_à_sommer ; #plage_de_cellules_à_tester ; #numéro_de_la_couleur )

C'est sûrement très facile, mais je ne connais absolument rien en VB, mon langage de "prédilection" étant le Java ^^

Je vous remercie d'avance pour votre aide !
Configuration: Windows XP
Internet Explorer 7.0
Répondre à Hydre  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Hydre, le dimanche 12 octobre 2008 à 10:55:24
J'ai oublié de dire que les cellules à sommer ne contiennent que des nombres...
Répondre à Hydre

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lermite222, le dimanche 12 octobre 2008 à 12:14:02
Bonjour,
La fonction à mettre dans un module général, par exemple Module1
Function SOMMECOULEUR(PLtest As Range, PLcoul As Range) As Double
Dim cel As Range
Dim T As Double
    On Error Resume Next
    For Each cel In PLtest
        If cel.Interior.ColorIndex = PLcoul.Interior.ColorIndex Then
            T = T + cel.Value
        End If
    Next cel
    SOMMECOULEUR = T
End Function


Et dans Excel, dans la cellule où tu veux le résultat..
=SOMMECOULEUR(A6:F21;C18)

1ére plage la plage de teste 2ém plage une celule qui a la bonne couleur.
A+
Edit, j'ai ajouter détection d'erreur parce que quand c'est une formule ça plantait. L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)
Répondre à lermite222

4


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Hydre, le dimanche 12 octobre 2008 à 12:32:09
La solution est bonne, mais ce n'est pas exactement ce que je voulais.
En fait je veux tester la couleur d'une cellule, par exemple A(i), et si cette couleur est la même que la cellule X (fixe), alors j'additionne la valeur de la cellule B(i), où i est le numéro de la ligne.
L'indice de ligne de la plage à tester et l'indice de ligne de la plage à sommer évoluent simultanément.
Vu la manière dont c'est écrit, je ne vois pas exactement ce qu'il faudrait changer...
Répondre à Hydre

3


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Hydre, le dimanche 12 octobre 2008 à 12:21:56
Merci pour ta réponse lermite222 !
Je vais tester ça tout de suite !
Répondre à Hydre

5


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lermite222, le dimanche 12 octobre 2008 à 12:35:54
Bien compris,
ta plage de test prend plus qu'une colonne ?
genre A1:A200 ou bien A1:C200
et est-ce que les cellules à aditionner sont toujours sur la même colonne ?
Tu dit
L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)
Répondre à lermite222

6


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Hydre, le dimanche 12 octobre 2008 à 12:37:49
Ma plage de test prend une colonne, et ma plage à sommer est différente de ma plage de test, mais de même format (ie autant de cellules que ma plage de test).
Répondre à Hydre

7


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Hydre_De_Lerne, le dimanche 12 octobre 2008 à 12:43:36
Donc bien sûr les cellules à additionner sont sur la même colonne.
Répondre à Hydre_De_Lerne

8


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
lermite222, le dimanche 12 octobre 2008 à 12:50:25
Function SOMMECOULEUR(PLtest As Range, PLcoul As Range) As Long
Dim cel As Range
Dim T As Double
    On Error Resume Next
    For Each cel In PLtest
        If cel.Interior.ColorIndex = PLcoul.Interior.ColorIndex Then
            T = T + cel.Offset(0, 2).Value
        End If
    Next cel
    SOMMECOULEUR = T
End Function

Faut bien sur adapter Offset à ta configuration
l'exemple: plage de test = colonne B et plage des cellules à additionner en colonne D soit 2 colonne plus loin.
Tu dit
L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)
Répondre à lermite222

9


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
Hydre_De_Lerne, le dimanche 12 octobre 2008 à 12:55:34
Merci !!
Ça marche parfaitement !
Juste une précision pour ceux qui voudraient utiliser ça : j'ai modifié la valeur de sortie de la fonction en Double car sinon elle arrondissait le résultat.

Merci encore lermite222 ! ;-)
Répondre à Hydre_De_Lerne

10


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 lermite222, le dimanche 12 octobre 2008 à 13:01:23
J'ai oublié de rechanger sur la seconde macro (voir la première)
Content d'avoir pu t'aider.
A+ L'expérience instruit plus sûrement que le conseil. (André G­ide)  
Si tu te cogne à un pot et que ça sonne creux, c'est pas for­cément le pot qui est vide. ;-)(Confucius)
Répondre à lermite222
Fonction excel dans VBA (Résolu) Salut, J'essai d'utiliser des fonctions excel sous vba. Cependant, comme je ne connais pas le nombre de ligne (qui est définie par l'utilisateur), j'utilise donc une séquence du genre: j = 4 LDeb = j CDeb = 1 LFin = (j + N - 1)... www.commentcamarche.net/forum/affich-5899789-fonction-excel-dans-vba
[Excel] Formule de comptage entre 2 bornes (Résolu) Bonjour, (Excell - FORMULE de comptage) J’espère que je suis dans le bon Forum. C’est la première fois que j’écris un message alors j’espère être précise et facile à lire. voici mon problème!! Nous sommes commerçants et nous avons 3 magasins sur l’Ile... www.commentcamarche.net/forum/affich-3246933-excel-formule-de-comptage-entre-2-bornes
Fonction au format date (VBA) (Résolu) Bonjour, une fonction au format date : function pouet(date1, date2) as date peut elle renvoyer une valeur nulle ? merci Knowledge is power. www.commentcamarche.net/forum/affich-5320133-fonction-au-format-date-vba
Insérer une image de fond sous la grille ExcelVous souhaitez insérer un logo sous JPEG ou autre, sous votre grille Excel : FORMAT / FEUILLE / ARRIERE PLAN s'ouvre un panneau vous présentant vos images pour sélection.... choisissez, validez. Pour le supprimer : même procédure FORMAT /... www.commentcamarche.net/faq/sujet-8657-inserer-une-image-de-fond-sous-la-grille-excel
[Internet-Forums] Qu'est-ce qu'un troll ?Qu'est-ce qu'un troll ? 0. Préambule [...] Un troll désigne, dans l’imagerie de l’internet, un personnage malfaisant dont le but est de perturber le fonctionnement des forums de discussion en multipliant les messages sans intérêt (ou, plus... www.commentcamarche.net/faq/sujet-3610-internet-forums-qu-est-ce-qu-un-troll
Runtime Error avec la Fonction Excel SI en VB (Résolu)Bonjour, je veux utiliser la fonction excel SI en VB, pour remplir des cases excel Chaque fois je récupère une erreur runtime 1004 lors du déroulement de l'application Voici la ligne codée qui pose problème: Worksheets(sSummary).Cells(plig,... www.commentcamarche.net/forum/affich-7419105-runtime-error-avec-la-fonction-excel-si-en-vb
Commen fonctione le forum de commen ca marche (Résolu)Bonjour,je sui nouveau et je voudrai que vous me disier tout les detail des fonctionement du forum commencamarche merci. www.commentcamarche.net/forum/affich-7293086-commen-fonctione-le-forum-de-commen-ca-marche
Assistant fonction Excel 2003 (Résolu)Bonjour à tous, Quelqu'un pourrait il m'expliquer la différence entre les fonctions excel qui sont écrite en majuscules et celles qui sont en minuscules? Par exemple dans l'assistant de fonction --> catégorie "All", il y deux fois la... www.commentcamarche.net/forum/affich-8794683-assistant-fonction-excel-2003
Sanyo Xacti VPC-CG9CG 9, Zoom optique 5x, Zoom numérique 60x, 2.5 pouces LCD, Stéréo, Dimensions de l'écran:2.5 pouces, Type d'Ecran:LCD, Fonction photo, Formats et supports d'enregistrement:MPEG-4, AVC/H.264, Support d'enregistrement:Internal Flash/SD/SDHC, Type de... www.commentcamarche.net/guide-achat/sanyo-xacti-vpc-cg9-1090233-fiche-technique
Trevi DVX 3506Dolby Digital 5.1,Type:DVD,Fonction Karaoké,Formats de Lecture: CD/CD-R/CD-RW/DVD/VCD,Compatible VCD,MP3,Compatible JPEG :JPEG & Kodak picture CD,Décodeurs audio:Dolby Digital 5.1,Décodeur Dolby Digital,Sorties S-Vidéo:1,Sorties vidéo... www.commentcamarche.net/guide-achat/trevi-dvx-3506-1038357-fiche-technique
Scott DVXI940KDVXI 940 940 K 940K 940K, Compatible DivX, Type:DVD, Fonction Karaoké, Formats de Lecture:CD-R / CD-RW / DVD-R / VCD, Compatible VCD, Compatible DivX, MP3, Son Surround:Dolby Digital, Prises Péritel (SCART):1, Sorties S-Vidéo:1, Sorties... www.commentcamarche.net/guide-achat/scott-dvxi940k-575278-fiche-technique
PHP - Récupération de donnéesPHP rend très simple la récupération de données envoyées par l'intermédiaire de formulaires HTML. Création d'un formulaire Grâce à la balise FORM du langage HTML, il est très simple de créer des formulaires comprenant : des champs de saisie des... www.commentcamarche.net/contents/php/phpform.php3