Salut vous tous,
Je suis un p'tit nouveau sur cette news et aussi un p'tit nouveau en
Vba sur exel
Dans la cellule D1 = SommeParCouleur("D3:D300",35)
Function SommeParCouleur(cRANGE As String, nColorValue As Long)
Dim A As Long, B As Integer, total As Double
Dim Rang, rg As RANGE
Set Rang = Worksheets("Feuil1").RANGE(cRANGE)
For Each rg In Rang
If rg.Interior.ColorIndex = nColorValue Then
total = total + rg.Value
End If
Next
SommeParCouleur = total
End Function
La fonction fonctionne bien sauf que
comment on fait pour que les valeurs s'actualisent automatiquement
lorsque je modifie une données dans la colonne
Comme exemple si j'ai la cellule a1 = à Somme(A2:A20) et que je modifie
une donnée entre les cellules a2:a20, ma cellule a1 s'actualise
automatiquement
mais ca ne se produit pas avec ma fonction
De plus je dois écrire -- > SommeParCouleur("D3:D300",35)
se qui fait que ci je déplace la cellue en draguant ou par un
copie/collé, D3:D300 dans la rangée F3:F300, ca ne se produit pas
cela est du à ma façon de programmer ma fonction
alors comment écrire SommeParCouleur(D3:D300,35) au lieu de
SommeParCouleur("D3:D300",35) pour que ca fonctionne avec ma macro ?
Eddy Maue a+
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
PMO
Bonjour,
Essayez la fonction modifiée suivante
'********************* Function SommeParCouleur(Rang As Range, _ nColorValue As Long) As Double Dim total As Double Dim rg As Range For Each rg In Rang If rg.Interior.ColorIndex = nColorValue And _ IsNumeric(rg) Then total = total + rg.Value End If Next SommeParCouleur = total End Function '*********************
1) J'ai changé le 1er paramètre cRANGE As String par Rang As Range Ainsi, lorsque vous tapez votre fonction au niveau du 1er paramètre ne faites pas =SommeParCouleur("D3:D300",35) mais faites =SommeParCouleur(D3:D300,35)
2) La condition IsNumeric(rg) évitera une erreur si la cellule concernée contient du texte. Elle sera invalidée pour le calcul.
Cordialement. -- PMO Patrick Morange
Salut vous tous, Je suis un p'tit nouveau sur cette news et aussi un p'tit nouveau en Vba sur exel
Dans la cellule D1 = SommeParCouleur("D3:D300",35)
Function SommeParCouleur(cRANGE As String, nColorValue As Long) Dim A As Long, B As Integer, total As Double Dim Rang, rg As RANGE Set Rang = Worksheets("Feuil1").RANGE(cRANGE)
For Each rg In Rang If rg.Interior.ColorIndex = nColorValue Then total = total + rg.Value End If Next SommeParCouleur = total End Function
La fonction fonctionne bien sauf que comment on fait pour que les valeurs s'actualisent automatiquement lorsque je modifie une données dans la colonne
Comme exemple si j'ai la cellule a1 = à Somme(A2:A20) et que je modifie une donnée entre les cellules a2:a20, ma cellule a1 s'actualise automatiquement mais ca ne se produit pas avec ma fonction
De plus je dois écrire -- > SommeParCouleur("D3:D300",35) se qui fait que ci je déplace la cellue en draguant ou par un copie/collé, D3:D300 dans la rangée F3:F300, ca ne se produit pas cela est du à ma façon de programmer ma fonction
alors comment écrire SommeParCouleur(D3:D300,35) au lieu de SommeParCouleur("D3:D300",35) pour que ca fonctionne avec ma macro ?
Eddy Maue a+
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
Bonjour,
Essayez la fonction modifiée suivante
'*********************
Function SommeParCouleur(Rang As Range, _
nColorValue As Long) As Double
Dim total As Double
Dim rg As Range
For Each rg In Rang
If rg.Interior.ColorIndex = nColorValue And _
IsNumeric(rg) Then
total = total + rg.Value
End If
Next
SommeParCouleur = total
End Function
'*********************
1) J'ai changé le 1er paramètre cRANGE As String par Rang As Range
Ainsi, lorsque vous tapez votre fonction au niveau du 1er
paramètre ne faites pas
=SommeParCouleur("D3:D300",35)
mais faites
=SommeParCouleur(D3:D300,35)
2) La condition IsNumeric(rg) évitera une erreur si la cellule
concernée contient du texte. Elle sera invalidée pour le calcul.
Cordialement.
--
PMO
Patrick Morange
Salut vous tous,
Je suis un p'tit nouveau sur cette news et aussi un p'tit nouveau en
Vba sur exel
Dans la cellule D1 = SommeParCouleur("D3:D300",35)
Function SommeParCouleur(cRANGE As String, nColorValue As Long)
Dim A As Long, B As Integer, total As Double
Dim Rang, rg As RANGE
Set Rang = Worksheets("Feuil1").RANGE(cRANGE)
For Each rg In Rang
If rg.Interior.ColorIndex = nColorValue Then
total = total + rg.Value
End If
Next
SommeParCouleur = total
End Function
La fonction fonctionne bien sauf que
comment on fait pour que les valeurs s'actualisent automatiquement
lorsque je modifie une données dans la colonne
Comme exemple si j'ai la cellule a1 = à Somme(A2:A20) et que je modifie
une donnée entre les cellules a2:a20, ma cellule a1 s'actualise
automatiquement
mais ca ne se produit pas avec ma fonction
De plus je dois écrire -- > SommeParCouleur("D3:D300",35)
se qui fait que ci je déplace la cellue en draguant ou par un
copie/collé, D3:D300 dans la rangée F3:F300, ca ne se produit pas
cela est du à ma façon de programmer ma fonction
alors comment écrire SommeParCouleur(D3:D300,35) au lieu de
SommeParCouleur("D3:D300",35) pour que ca fonctionne avec ma macro ?
Eddy Maue a+
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
'********************* Function SommeParCouleur(Rang As Range, _ nColorValue As Long) As Double Dim total As Double Dim rg As Range For Each rg In Rang If rg.Interior.ColorIndex = nColorValue And _ IsNumeric(rg) Then total = total + rg.Value End If Next SommeParCouleur = total End Function '*********************
1) J'ai changé le 1er paramètre cRANGE As String par Rang As Range Ainsi, lorsque vous tapez votre fonction au niveau du 1er paramètre ne faites pas =SommeParCouleur("D3:D300",35) mais faites =SommeParCouleur(D3:D300,35)
2) La condition IsNumeric(rg) évitera une erreur si la cellule concernée contient du texte. Elle sera invalidée pour le calcul.
Cordialement. -- PMO Patrick Morange
Salut vous tous, Je suis un p'tit nouveau sur cette news et aussi un p'tit nouveau en Vba sur exel
Dans la cellule D1 = SommeParCouleur("D3:D300",35)
Function SommeParCouleur(cRANGE As String, nColorValue As Long) Dim A As Long, B As Integer, total As Double Dim Rang, rg As RANGE Set Rang = Worksheets("Feuil1").RANGE(cRANGE)
For Each rg In Rang If rg.Interior.ColorIndex = nColorValue Then total = total + rg.Value End If Next SommeParCouleur = total End Function
La fonction fonctionne bien sauf que comment on fait pour que les valeurs s'actualisent automatiquement lorsque je modifie une données dans la colonne
Comme exemple si j'ai la cellule a1 = à Somme(A2:A20) et que je modifie une donnée entre les cellules a2:a20, ma cellule a1 s'actualise automatiquement mais ca ne se produit pas avec ma fonction
De plus je dois écrire -- > SommeParCouleur("D3:D300",35) se qui fait que ci je déplace la cellue en draguant ou par un copie/collé, D3:D300 dans la rangée F3:F300, ca ne se produit pas cela est du à ma façon de programmer ma fonction
alors comment écrire SommeParCouleur(D3:D300,35) au lieu de SommeParCouleur("D3:D300",35) pour que ca fonctionne avec ma macro ?
Eddy Maue a+
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
papou
Bonjour Sinon autre fonction trouvée sur ce forum : Function AddParCouleurFond(Plage As Range, Couleur As Long) As Long Application.Volatile Dim LstPlg LstPlg = Plage For i = 1 To UBound(LstPlg, 1) For y = 1 To UBound(LstPlg, 2) If Plage(i, y).Interior.ColorIndex = Couleur Then _ CompterParCouleurFond = CompterParCouleurFond + Plage(i, y) Next y Next i End Function
Cordialement Pascal
"Eddy Maue" <eddymaue@@hotmail.com> a écrit dans le message de news:
Salut vous tous, Je suis un p'tit nouveau sur cette news et aussi un p'tit nouveau en Vba sur exel
Dans la cellule D1 = SommeParCouleur("D3:D300",35)
Function SommeParCouleur(cRANGE As String, nColorValue As Long) Dim A As Long, B As Integer, total As Double Dim Rang, rg As RANGE Set Rang = Worksheets("Feuil1").RANGE(cRANGE)
For Each rg In Rang If rg.Interior.ColorIndex = nColorValue Then total = total + rg.Value End If Next SommeParCouleur = total End Function
La fonction fonctionne bien sauf que comment on fait pour que les valeurs s'actualisent automatiquement lorsque je modifie une données dans la colonne
Comme exemple si j'ai la cellule a1 = à Somme(A2:A20) et que je modifie une donnée entre les cellules a2:a20, ma cellule a1 s'actualise automatiquement mais ca ne se produit pas avec ma fonction
De plus je dois écrire -- > SommeParCouleur("D3:D300",35) se qui fait que ci je déplace la cellue en draguant ou par un copie/collé, D3:D300 dans la rangée F3:F300, ca ne se produit pas cela est du à ma façon de programmer ma fonction
alors comment écrire SommeParCouleur(D3:D300,35) au lieu de SommeParCouleur("D3:D300",35) pour que ca fonctionne avec ma macro ?
Eddy Maue a+
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net
Bonjour
Sinon autre fonction trouvée sur ce forum :
Function AddParCouleurFond(Plage As Range, Couleur As Long) As Long
Application.Volatile
Dim LstPlg
LstPlg = Plage
For i = 1 To UBound(LstPlg, 1)
For y = 1 To UBound(LstPlg, 2)
If Plage(i, y).Interior.ColorIndex = Couleur Then _
CompterParCouleurFond = CompterParCouleurFond + Plage(i, y)
Next y
Next i
End Function
Cordialement
Pascal
"Eddy Maue" <eddymaue@@hotmail.com> a écrit dans le message de news:
mn.bcb47d5b46e70cc1.43997@hotmail.com...
Salut vous tous,
Je suis un p'tit nouveau sur cette news et aussi un p'tit nouveau en Vba
sur exel
Dans la cellule D1 = SommeParCouleur("D3:D300",35)
Function SommeParCouleur(cRANGE As String, nColorValue As Long)
Dim A As Long, B As Integer, total As Double
Dim Rang, rg As RANGE
Set Rang = Worksheets("Feuil1").RANGE(cRANGE)
For Each rg In Rang
If rg.Interior.ColorIndex = nColorValue Then
total = total + rg.Value
End If
Next
SommeParCouleur = total
End Function
La fonction fonctionne bien sauf que
comment on fait pour que les valeurs s'actualisent automatiquement
lorsque je modifie une données dans la colonne
Comme exemple si j'ai la cellule a1 = à Somme(A2:A20) et que je modifie
une donnée entre les cellules a2:a20, ma cellule a1 s'actualise
automatiquement
mais ca ne se produit pas avec ma fonction
De plus je dois écrire -- > SommeParCouleur("D3:D300",35)
se qui fait que ci je déplace la cellue en draguant ou par un copie/collé,
D3:D300 dans la rangée F3:F300, ca ne se produit pas
cela est du à ma façon de programmer ma fonction
alors comment écrire SommeParCouleur(D3:D300,35) au lieu de
SommeParCouleur("D3:D300",35) pour que ca fonctionne avec ma macro ?
Eddy Maue a+
--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net
Bonjour Sinon autre fonction trouvée sur ce forum : Function AddParCouleurFond(Plage As Range, Couleur As Long) As Long Application.Volatile Dim LstPlg LstPlg = Plage For i = 1 To UBound(LstPlg, 1) For y = 1 To UBound(LstPlg, 2) If Plage(i, y).Interior.ColorIndex = Couleur Then _ CompterParCouleurFond = CompterParCouleurFond + Plage(i, y) Next y Next i End Function
Cordialement Pascal
"Eddy Maue" <eddymaue@@hotmail.com> a écrit dans le message de news:
Salut vous tous, Je suis un p'tit nouveau sur cette news et aussi un p'tit nouveau en Vba sur exel
Dans la cellule D1 = SommeParCouleur("D3:D300",35)
Function SommeParCouleur(cRANGE As String, nColorValue As Long) Dim A As Long, B As Integer, total As Double Dim Rang, rg As RANGE Set Rang = Worksheets("Feuil1").RANGE(cRANGE)
For Each rg In Rang If rg.Interior.ColorIndex = nColorValue Then total = total + rg.Value End If Next SommeParCouleur = total End Function
La fonction fonctionne bien sauf que comment on fait pour que les valeurs s'actualisent automatiquement lorsque je modifie une données dans la colonne
Comme exemple si j'ai la cellule a1 = à Somme(A2:A20) et que je modifie une donnée entre les cellules a2:a20, ma cellule a1 s'actualise automatiquement mais ca ne se produit pas avec ma fonction
De plus je dois écrire -- > SommeParCouleur("D3:D300",35) se qui fait que ci je déplace la cellue en draguant ou par un copie/collé, D3:D300 dans la rangée F3:F300, ca ne se produit pas cela est du à ma façon de programmer ma fonction
alors comment écrire SommeParCouleur(D3:D300,35) au lieu de SommeParCouleur("D3:D300",35) pour que ca fonctionne avec ma macro ?
Eddy Maue a+
-- Ceci est une signature automatique de MesNews. Site : http://www.mesnews.net