VBA Sommer des nombres de différentes couleurs

pepsister

XLDnaute Junior
Bonjour,

Je souhaite sommer tous les chiffres rouges d'un côté et les chiffres verts d'un autre côté.
Cependant mes nombres se mettent en couleur avec une mise en forme conditionnelle basé sur la colonne précédente.
J'essaye d'expliquer avec un exemple:
Colonne A, j'ai des numéros '6063', '7074', ...
Colonne B et C, mes nombres.
Ma mise en forme conditionnelle regarde le premier chiffre de la colonne A, si c'est un 6 elle met en rouge si c'est un 7 en vert.
J'ai essayé des formules de somme de couleur que j'ai vu sur d'autres discussions cependant ma somme fait toujours 0 car mes chiffres sont considérés sans couleur. Si je les mets en rouge et vert à la main ca fonctionne mais avec la mise en forme conditionnelle ça ne fonctionne pas.
J'ai également essayé une fonction:
Code:
Function cumul_vert(plage As Range)

Dim elm As Object
Dim i As Integer
Dim j As Integer
Application.Volatile
cumul_recette = 0
For Each elm In plage
  i = elm.Row
  j = elm.Column
  If IsEmpty(Cells(i, j).Value) = False Then
    If Mid(Cells(i, 3), 1, 1) = "7" Then
      cumul_recette = cumul_recette + elm.Value
     End If
  End If
Next elm
End Function

Ensuite dans la case où je veux mon résultat j'ai mis:
cumul_vert(INDIRECT("F10"):G651)

Ca fonctionne par contre lorsque j'ai réouvert mon classeur ce matin, impossible de supprimer des lignes sur d'autres onglets j'ai le message :
"Excel ne peut pas terminer cette tâche avec les ressources disponibles. Sélectionnez moins de données ou fermez des applications"
Même message quand j'essaye de faire tourner une macro.
Si je supprime mon module contenant cette fonction tout remarche.

Si quelqu'un sait pourquoi ou peut m'apporter une autre solution pour faire ma somme je suis preneuse là je bloque vraiment.

Merci de votre aide,
 

Paf

XLDnaute Barbatruc
Re : VBA Sommer des nombres de différentes couleurs

Bonjour pepsister, gilbert_RGI,

si la couleur provient d'une mise en forme conditionnelle , effectivement il faut faire le même test que celui qui défini la couleur. Encore que... il existe une fonction vba qui permet de déterminer la couleur issue d'une MFC mais seulement à partir de XL 2010 (il me semble)
en colonne A les 'codes' en colonne B et C les données , la plage à utiliser avec la fonction suivante sera, par ex., B1:C12
Code:
Function cumul_vert(plage As Range)
 Dim elm As Object
 Application.Volatile
 For Each elm In plage
    If Not IsEmpty(elm) Then
        If Left(Cells(elm.Row, 1), 1) = 7 Then cumul_vert = cumul_vert + elm.Value
    End If
 Next elm
End Function

A+
 

pepsister

XLDnaute Junior
Re : VBA Sommer des nombres de différentes couleurs

En fait mon bout de code fonctionne. J'ai tout changé hier et ca marchait, ce matin je réouvre le fichier même problème qu'hier. Dès que je veux ajouter une ligne ou supprimer ou lancer mes macros toujours ce message:
"Excel ne peut pas terminer cette tâche avec les ressources disponibles. Sélectionnez moins de données ou fermez des applications"
Après plusieurs tests je me rends compte qu'il suffit d'aller dans le visual basic faire n'importe quel manip comme ajouter un commentaire ou même juste un espace dans n'importe quel module et tout refonctionne. Je ferme mon classeur je le réouvre même problème.
Quelqu'un sait-il d'où ça peut venir?
Je mets mon fichier en pièce jointe que vous vous rendiez compte.
Merci de votre aide
 

Pièces jointes

  • Classeur2.zip
    139.8 KB · Affichages: 47
  • Classeur2.zip
    139.8 KB · Affichages: 51

Paf

XLDnaute Barbatruc
Re : VBA Sommer des nombres de différentes couleurs

Re,

Telle qu'elle était donnée, la Function cumul_vert(plage As Range) ne pouvait fonctionner ( retour avec un autre nom)

Après quelques essais sur le classeur joint le rajout ou la suppression d'une ligne dans une feuille (Répartition par ex.) déclenchent les functions personnalisées contenant l'instruction Application.Volatile, et, au retour sur la feuille MJC 2015 le résultat de la fonction est :0 !
Le fait d'avoir rentrer la plage de ces fonction jusqu'en G651 demande des ressources inutiles puisque la plage est F9:G22.
Par ailleurs je ne comprend pas, pour désigner cette plage, l'utilisation de INDIRECT("F10"):G651
L'utilisation de =cumul_depense(F9:G22) devrait suffire si les lignes ne sont pas plus nombreuses.

Le fait de supprimer l'instruction Application.Volatile dans les fonctions supprime le déclenchement intempestif, sans empêcher la mise à jour en cas de modification de donnée dans la plage .

A+
 

pepsister

XLDnaute Junior
Re : VBA Sommer des nombres de différentes couleurs

Dans le classeur 2 joint dans le message précédent j'ai commenté tout le module 2 c'est à dire les deux fonctions de calcul de cumul_recette et cumul_depense. Il n'y a donc plus d'appel à ces fonctions et plus d'appel à application.Volatile intempestifs.
Pourtant j'ai tjs la même erreur, pourquoi?
 

Paf

XLDnaute Barbatruc
Re : VBA Sommer des nombres de différentes couleurs

Re,

désolé,je ne reproduis pas votre anomalie

votre classeur réel comporte-t-il beaucoup de mise en forme conditionnelle ou non, beaucoup de lignes, des formules matricielles ... ?

Bonne suite
 

Discussions similaires

Réponses
0
Affichages
153

Statistiques des forums

Discussions
312 236
Messages
2 086 481
Membres
103 232
dernier inscrit
logan035