Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur

katt

XLDnaute Nouveau
Bonjour à tous et à toutes,
Je suis débutante en VBA, voilà mon problème.

Je dois compter le nombre de document ( cellules) par projet selon la couleur de la cellule.
Le seule problème c'est que j'ai deux conditions à intégrer dans ma fonction et je ne sais pas comment faire

Dans les colonnes P Q R , je dois compter le nombre de librables par projet selon la couleur de la cellule

La première condition: lorsque la cellule est fusionnée, il ne doit la compter qu'une fois. Pour l'instant ma fonction compte les cellules fusionnées plusieurs fois.

La deuxième condition: Dans la colonne R, je dois compter le nombre document total pour le projet ( je veux compter toutes les cellules colorées et non colorées) sauf celles en grises.

Quelqu'un pourrait m'aider, je suis bloquée et je ne sais pas comment résourdre ce problème

Merci d'avance
 

Pièces jointes

  • Suivi_essaie.xlsm
    19.7 KB · Affichages: 118
  • Suivi_essaie.xlsm
    19.7 KB · Affichages: 136
  • Suivi_essaie.xlsm
    19.7 KB · Affichages: 148
Dernière édition:

R@chid

XLDnaute Barbatruc
Re : Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur

Bonjour,
il vaut mieux de mettre la légende dans une liste déroulante, comme ça tu peux associer les couleurs a la légende par MFC...
et peut être le NB.SI() peut suffire pour le calcul
Amicalement
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur

Bonjour Katt
Salut Rachid

les cellules fusionnées, ça peut être beau et élégant pour une mise en page
.............. mais c'est très souvent le début des problèmes et il est vivement conseillé de les éviter autant que possible

pour connaitre les limites d'une cellule fusionnée il faut utiliser ceci:
Cells(x, y).MergeArea.Address
et à partir du résultat il est possible de savoir le nombre de cellules qui ont été fusionnées
c'est assez facile si les cellules sont fusionnées verticalement
un peu moins si elles sont fusionnées horizontalement
et le foutoir si la cellule fusionnée se trouve sur plusieurs lignes et colonnes
Est ce que quelqu'un peut m'aider à savoir comment faire pour que la fonction ne compte pas les cellules fusionnées plusieurs fois.
je crains de devoir jeter l'éponge
voir ci-dessous un lien vers un fil de discussion pour "défusionner" les cellules (post#5)
https://www.excel-downloads.com/thr...-dans-toutes-les-cellules-defusionnee.184477/
le principe est le suivant:
en bouclant sur la colonne, si deux cellules consécutives (ou 3, voire plus) ont la même "MergeArea.Address" c'est qu'elles sont fusionnées

il est certainement utile de partir de cette réflexion pour résoudre ton problème

à+
Philippe
 

katt

XLDnaute Nouveau
Re : Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur

Bonjour Phlaurent55, bonjour Rachid
Rachid ça na pas fonctionné je l'ai dejà essayer

Phlaurent 55, Je ne suis pas sûre d'avoir compris ta solution, en fait je veux juste que la fonction compte les cellule fusionées comme étant un et non plusieurs.
Est ce possible de faire cela
Merci
 

gauguin

XLDnaute Nouveau
Re : Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur

Bonjour,

Quelque chose de rapide mais assez basique, en deux temps et en constatant que les cellules sont fusionnées par 2:

1 /
Code:
Sub test()

Dim cell As Range
Dim i As Integer 'lignes
Dim j As Integer 'colonnes
Dim x As Integer 'cellFusionnées
Dim cellFus() As String

For i = 1 To 18
    For j = 1 To 18
        If Cells(i, j).MergeArea.Count > 1 Then
            x = x + 1
            ReDim Preserve cellFus(1 To x)
            
            cellFus(x) = Cells(i, j).MergeArea.Address
        End If
    Next j
Next i
For i = LBound(cellFus) To UBound(cellFus)
    Sheets("Sheet2").Cells(i, 1) = cellFus(i)
Next i

MsgBox "il y a " & x & " cellules faisant parties d'une fusion        "
Sheets("Sheet2").Activate
End Sub

2 / Sur la feuille "Sheet2", utiliser la fonction d'Excel "Supprimer les doublons". Selon le comptage souhaité, il y a autant de fusions que de lignes après dédoublonnage ou vous multipliez par deux pour avoir le nombre total de cellules incluses dans les fusions.
 

katt

XLDnaute Nouveau
Re : Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur

Bonjour Gauguin,

je ne comprend pas plus, je suis vraiment débutante. j'ai ajouter ce code et ça m'envoie une erreur

Est ce possible de l'ajouter dans ce classeur

Merci bien
 

Pièces jointes

  • Suivi_essaie.xlsm
    19.7 KB · Affichages: 59
  • Suivi_essaie.xlsm
    19.7 KB · Affichages: 59
  • Suivi_essaie.xlsm
    19.7 KB · Affichages: 64

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur

Bonjour katt,

Je souscrit à tout ce qu'a écrit phlaurent55. Les fusions de cellules sont à éviter le plus possible. De plus le comptage de couleur n'est pas la chose la plus fiable possible. Je vous propose la fonction suivante:
Code:
Function SommeCouleurFond(champ As Range, Fond As Range)
   Application.Volatile
   Dim c, temp
   temp = 0
   For Each c In champ
     If c.Interior.ColorIndex = Fond.Interior.ColorIndex Then
       temp = temp + 1 / c.MergeArea.Count
     End If
   Next c
   SommeCouleurFond = temp
End Function

Vous pouvez constater qu'en P12, la fonction retourne 3,5 cellules. Je vous laisse le soin de découvrir pourquoi (une piste => ôtez la fusion des cellules D12:D13 et constatez le résultat!)
 

Pièces jointes

  • Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur v1.xlsm
    21.9 KB · Affichages: 69

mapomme

XLDnaute Barbatruc
Supporter XLD
Re : Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur

Bonjour katt,

Bon, une autre proposition qui devrait éviter l'inconvénient cité dans le message précédent (cas des fusions de cellules n'ayant pas toutes la même couleur). Cette fonction ne prend en compte que la cellule supérieure gauche de chaque groupe de cellules fusionnées).

Code:
Function SommeCouleurFond(champ As Range, Fond As Range)
   Application.Volatile
   Dim c, temp
   temp = 0
   For Each c In champ
   If c.MergeArea(1, 1).Address = c.Address And c.Interior.ColorIndex = Fond.Interior.ColorIndex Then
    temp = temp + 1
   End If
   Next c
   SommeCouleurFond = temp
End Function
 

Pièces jointes

  • Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur v2.xlsm
    22.6 KB · Affichages: 94
  • Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur v2.xlsm
    22.6 KB · Affichages: 112
  • Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur v2.xlsm
    22.6 KB · Affichages: 115

R@chid

XLDnaute Barbatruc
Re : Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur

Bonsoir,
Avec MFC et listes déroulantes dans la plage encadrée avec en Rouge...
le les cellule fusionnées posent un problème d’incrémentation de formules...
Amicalement

Edit : Bonsoir mapomme
 

Pièces jointes

  • Suivi_essaie_MFC.xlsm
    20.4 KB · Affichages: 68

katt

XLDnaute Nouveau
Re : Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur

Bonjour à tous et à toutes

mapomme, merci pour la solution, mais quand j'appel la fonction ça me retourne comme message Nom invalide
j'ai joint le fichier. j'ai bien vue que dans le fichier que tu m'a envoyé ça a fontionné alors pourquoi moi ça ne fonctionne pas

Merci à toi aussi Rachid, mais j'aurai vraiment aimé gardé les cellules telles qu'elles étaient, mais si jamais je n'arrive pas à trouver une autre solution, j'adopterai la tienne.

merci
 

Pièces jointes

  • Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur v2.xlsm
    20.6 KB · Affichages: 85
  • Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur v2.xlsm
    20.6 KB · Affichages: 98
  • Compter le nombre de cellules fusionnées qu'une seule fois selon la couleur v2.xlsm
    20.6 KB · Affichages: 91

Discussions similaires

Statistiques des forums

Discussions
312 109
Messages
2 085 381
Membres
102 876
dernier inscrit
BouteilleMan