Créer une fonction Excel avec 'for'
Résolu/Fermé
Hydre
-
12 oct. 2008 à 10:43
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 12 oct. 2008 à 13:01
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 12 oct. 2008 à 13:01
A voir également:
- Créer une fonction Excel avec 'for'
- Fonction si et excel - Guide
- Créer une liste déroulante excel - Guide
- Créer un compte google - Guide
- Comment créer un groupe whatsapp - Guide
- Déplacer une colonne excel - Guide
7 réponses
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
12 oct. 2008 à 12:50
12 oct. 2008 à 12:50
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
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
12 oct. 2008 à 12:14
12 oct. 2008 à 12:14
Bonjour,
La fonction à mettre dans un module général, par exemple Module1
Et dans Excel, dans la cellule où tu veux le résultat..
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.
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.
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...
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...
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
lermite222
Messages postés
8724
Date d'inscription
dimanche 8 avril 2007
Statut
Contributeur
Dernière intervention
22 janvier 2020
1 191
12 oct. 2008 à 12:35
12 oct. 2008 à 12:35
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
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
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).
Hydre_De_Lerne
Messages postés
12
Date d'inscription
dimanche 12 octobre 2008
Statut
Membre
Dernière intervention
22 novembre 2008
12 oct. 2008 à 12:43
12 oct. 2008 à 12:43
Donc bien sûr les cellules à additionner sont sur la même colonne.
12 oct. 2008 à 12:55
Ç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 ! ;-)
12 oct. 2008 à 13:01
Content d'avoir pu t'aider.
A+