Modif formule module sur VBA couleur/texte

Bonjour j'aimerai modifier mon module VBA

Le but était de reconnaitre un texte spécifique associé à une couleur et de compter le nombre de cellules associant les 2.

Je cliquais sur un texte, puis une couleur, puis la plage de donnée, et il me donnait le nombre cellules ou le texte sélectionné se retrouvait, avec une couleur de fond donnée.

Exemple si je cliquais sur AB, puis une cellule de couleur jaune, et sélectionnait ma plage de données, il me notait le nombre de cellules où AB était écrit sur un fond de couleur jaune.

Ça marche super mais je voudrais maintenant pouvoir entrer des formules à l'intérieur de celle ci quand je la pose après =

Je voudrais que à la place de sélectionner le texte, je puisse directement l'écrire moi-même.

Parce que la sélection de texte m’empêche de faire une combinaison de formule à l'intérieur de cette même formule.

Je pose en pièce jointe un exemple avec le module VBA pour que vous puissiez m'aider à le modifier.

Merci par avance

12test-couleur.xlsm (17.05 Ko)

Bonsoir,

Je voudrais que à la place de sélectionner le texte, je puisse directement l'écrire moi-même.

Tu peux le faire ! Rien à modifier.

Tu peux juste faire un peu de finition en supprimant toutes les lignes Debug.Print oubliées...

Cordialement.

Mince... Je suis mauvais je n'avais jamais dû le faire correctement alors...

Donc du coup ma demande est un peu différente... Ce que je voudrai au final c'est trouver une formule qui me permette de compter le nombre de cellule ou seules les 2 premières lettres sont prises en compte.

Donc le nombre de cellules avec le texte "AB" dans les 2 premières lettres, avec fond de couleur jaune, avec la plage de données à sélectionner...

C'est ça au final que je n'arrive pas à faire. J'essaie avec "gauche" à la place de mettre ma sélection de texte habituelle, mais je ne peut pas sélectionner de grandes plages de données... et ça ne marche pas du coup...

Si tu pouvais m'orienter au moins...

Je te remercie

Bonjour,

à tester :

dim r as range

dim mot as String

for each r in selection 'faire ta selection de plage

mot = left(r.value,2) 'prendre les 2 première lettre de la cellule

if ucase(mot) = "AB" then ' ucase pour eviter la casse (si c'est vraiment "AB" que tu veut il suffit d'enlever ucase

'faire les couleur de la cellule ou autre

end if

next r

j'espere que sa t'aurai aider

Bonsoir,

Si tu veux que ça ne prenne en compte ton expression que si elle est en début de chaîne, il suffit de modifier la façon de compter de la fonction...

Ainsi (après nettoyage de quelques bouts inutiles et oubliés...)

Option Compare Text

Function NBTXTCLR(s$, cellule As Range, plage As Range)
    Dim cpt%, i%, o
    Application.Volatile
    For Each o In plage
        If o.Interior.Color = cellule.Interior.Color Then
            'If InStr(o, s) > 0 Then cpt = cpt + 1
            If o.Value Like s & "*" Then cpt = cpt + 1
        End If
    Next o
    NBTXTCLR = cpt
End Function

J'ai invalidé l'ancienne ligne de comptage et en est mis une autre. Tu peux revenir à la situation initiale en enlevant l'apostrophe devant la première ligne pour la mettre devant la seconde.

Ne laisse pas les deux sans apostrophe, cela te cumulerait les résultats des deux façons de compter !

Si tu arrives à être précis dans les différents résultats que tu peux vouloir, on peut faire une fonction qui répond à tout sans avoir à la modifier pour changer le résultat, mais simplement à partir de paramètres mis en l'écrivant selon le résultat que tu veux obtenir dans chaque cas...

Cordialement.

Coool!!!

Ça à l'air de marcher super!!!

Je vérifie tout ça de manière un peu plus approfondie et je valide

MERCI !!!

Rechercher des sujets similaires à "modif formule module vba couleur texte"