Compter cellules fusionnées si elles contiennent du texte

Bonjour à tous,

Novice de chez novice en VBA, je me tourne vers votre forum n'arrivant pas à réaliser une fonctionnalité pour mon travail. J'ai bien essayé avec les "fonctions" d'Excel 2010 mais il semble que seul une macro puisse me sauver.

J'aimerais pouvoir compter un ensemble de cellules fusionnées si elles contiennent un certain texte.

Par exemple je fusionne 4 cellules et j'inscris dedans "Business"

J'aimerais pouvoir rechercher le mot business dans ma feuille et dès qu'il est localisé, compter le nombre de cellules fusionnées dans lequel il est inscrit, en l'occurrence 4.

Le but final est de réaliser un Planning hebdomadaire permettant de comptabiliser le temps passé sur certaines tâches.

Merci pour vos réponses éclairées et je me tiens à disposition pour apporter toute précision nécessaire.

Bien cordialement.

Bonjour,

Après une grosse perte de temps pour admettre que .findnext ne fonctionne pas dans une fonction personnalisée, regarde si ça te va.

Fonction en K3.

Tu as le code de la fonction dans le module1, plus un petit code à mettre dans les feuilles ayant cette fonction.

Alt+F11 pour accéder à VBE.

eric

edit: fichier joint mis à jour et corrigé avec les remarques des posts suivants.

452fn-rechfusion.zip (9.79 Ko)

Bonjour Eric,

Bein en fait, c'est EXACTEDMENT ça !

J'espère que tu n'as pas trop galéré sur le problème, le week-end c'est aussi fait pour se reposer

M'autorises tu à partager le résultat, en te citant, sur une autre forum ou j'ai aussi posé la question. Histoire de partager. Si tu ne préfères pas, aucun soucis.

En tout cas un très grand merci pour ce super boulot et la rapidité de ta réponse.

Bonne fin de week-end.

Eric,

J'ai crié victoire trop vite. Petit bémol en fait

Mes cellules sont fusionnées par ligne et non par colonne.

Ce qui fonctionne, SAUF, lorsque un bloc fusionné est contigu à un autre.

Et dans ce cas il ne prend visiblement qu'un bloc fusionné sur 2 comme dans l'exemple en pièce-jointe.

Si des fois tu as une solution.

Merci beaucoup.

200fn-rechfusion.zip (13.60 Ko)

M'autorises tu à partager le résultat

Bien entendu. Je râle suffisamment lorsqu'on cherche pour rien parce qu'on n'est pas informé que c'est résolu.

Je suis au contraire content que tu y penses.

Ce qui fonctionne, SAUF, lorsque un bloc fusionné est contigu à un autre.

J'avais voulu accélérer le traitement avec :

col = col + plage.Cells(lig, col).MergeArea.Cells.Count - 1

ce qui n'est visiblement pas une bonne idée si la fusion est par colonne.

Remplacer par :

col = col + plage.Cells(lig, col).MergeArea.Cells.Columns.Count - 1

eric

Et bien c'est tout simplement parfait !

Je retranscris dans mon fichier, je fais quelques tests en "direct live" demain au boulot, et je clos le sujet si tout est ok.

Encore merci à toi et bonne fin de week-end.

Bonsoir,

Petit compte rendu après avoir travaillé sur mon fichier planning ce jour.

Tout fonctionne parfaitement, je peux comptabiliser le temps passé sur un ensemble de tâches réparties sur une semaine.

Encore un grand merci Eric.

Bonsoir,

Merci pour le retour.

Au fait, un double-clic dans une cellule (quelconque, même vide) et sa validation entraine également un recalcul (sans quitter la feuille).

Si tu peux mettre en résolu en cochant le post du fichier (je l'ai mis à jour)

eric

Ok, thanks pour l'astuce.

Voila normalement j'ai coché comme résolu, enfin je crois... je n'arrivais pas à trouver l'option

oui, c'est résolu, sauf que tu n'as pas coché le message du 02 Juin 2013, 14:43 qui avait le bon fichier.

Tant pis...

eric

Salut le Forum

Pour compter les fusions verticale et horizontale

Function NbreFusion(Plage As Range, Chaine$) As Integer
    Dim Cel As Range
    Application.Volatile
    If Plage.Count = 1 Then Exit Function
    For Each Cel In Plage
        If Cel.Value = Chaine$ And _
           Cel.MergeArea.Cells.Count > 1 Then _
           NbreFusion = NbreFusion + 1
    Next Cel
End Function

Mytå

Re le Forum

En prime, avec le choix du calcul des cellules fusionnées (Les deux, Horizontale ou Verticale )

Function NbreFusion(Plage As Range, Chaine$, Optional Choix As Byte = 0) As Integer
'Choix 0 Fusion Horizontale et Vertical (Par défaut)
'Choix 1 Fusion Horizontale
'Choix 2 Fusion Verticale
    Dim Cel As Range
    Application.Volatile
    If Plage.Count = 1 Then Exit Function
    For Each Cel In Plage
        If Cel.Value = Chaine$ Then
            If Choix = 0 And Cel.MergeArea.Cells.Count > 1 Or _
               Choix = 1 And Cel.MergeArea.Cells.Columns.Count > 1 Or _
               Choix = 2 And Cel.MergeArea.Cells.Rows.Count > 1 Then _
               NbreFusion = NbreFusion + 1
        End If
    Next Cel
End Function

Mytå

Merci Myta.

Eric, bon post validé.

Rechercher des sujets similaires à "compter fusionnees contiennent texte"