Mettre en bleu les cellules contenant des formules… sans VBA

Bonjour à tous,

Cette question peut paraître triviale, mais elle n'est pas si facile. En fait, c'est très étrange que MS n'ait jamais pensé à créer une telle fonctionnalité.

Vous pouvez directement consulter le fichier final ici.

L'astuce consiste à créer un nom, ici, la_cellule_a_une_formule qui, en étant en A1, aura pour valeur :
=lire.cellule(48;A1)

La procédure est donc :
- Se mettre en A1
- Insérer un nom (2003 : Insertion - Noms - Définir; sous 2007 : Onglet Formules, puis Définir un nom).
- Taper : la_cellule_a_une_formule comme nouveau nom
- Dans la zone Fait référence à, inscrire =LIRE.CELLULE(48;A1)

Une fois le nom créé, on peut l'utiliser dans une mise en forme conditionnelle :
- Sélectionner la zone où devra s'appliquer la mise en forme conditionnelle
- 2003 : Format - Mise en forme conditionnelle; 2007 : onglet Accueil, puis Mise en forme conditionnelle
- Ensuite, choisir une formule comme type de condition et taper =la_cellule_a_une_formule
- Finalement, choisir une mise en forme spécifique pour une formule.

Voici deux vidéos qui expliquent plus en détails la procédure sous 2007, ainsi que quelques explications complémentaires.

et la deuxième vidéo :

Et finalement le lien qui permet d'avoir plus de détails sur la fonction lire.cellule (get.cell en Anglais) :
http://www.mrexcel.com/forum/showthread.php?t=20611

Bon amusement

Gaetan

L’outil de recherche, aller un peu plus loin

A partir des dernières versions d'Excel, l'outil de recherche, accessible par la combinaison CTRL + F (F pour find qui veut dire recherche en Anglais) permet plusieurs options intéressantes :

- Pour y accéder, cliquez sur le bouton Options>>.

- Vous pourrez alors recherchez sur la feuille, mais aussi sur l'ensemble du classeur (premier menu déroulant.
- Vous pouvez aussi choisir de respecter la casse (majuscule ou minuscule).
- Vous pouvez chercher la totalité du contenu de la cellule.

- Une des options les plus intéressantes est le bouton "Rechercher tout" qui permet d'afficher l'ensemble des endroits où se trouvent ce qu'on recherche. On peut ainsi naviguer très rapidement dans le classeur à la recherche de la bonne formule; il suffit pour cela de cliquer sur un des résultats de la recherche.

Rechercher dans l'ensemble du classeur

Finalement, vous pouvez aussi faire une recherche par format, ce qui peut s'avérer intéressant si vous utilisez beaucoup de format, par exemple, en associant une signification précise à une certaine couleur. Ainsi, dans certaines applications, on peut décider de mettre en jaune clair toutes les cellules devant être saisies, ou encore, mettre en grisé foncé toutes les cellules contenant des formules ne devant pas être effacées.

Donc, cette fonction peut s'avérer très pratique dans bon nombre de cas.

Bon apprentissage

Gaetan

Compter le nombre de fois qu’un mot est présent dans un classeur

Suite à la question d'une lectrice, voici un début de solution en vba à cette question, en vidéo et plus bas avec le texte (cliquer ici pour le fichier).

On va donc scanner l'ensemble des feuilles, puis des cellules de chaque feuille.
Pour chaque cellule, on va ensuite rechercher la présence de la chaine de caractère (le mot) et comptabiliser cette présence.

On met ceci dans une fonction, pour pouvoir l'utiliser facilement par la suite, par exemple si on veut faire des statistiques à partir d'une liste de mots à chercher.

Ca donne donc ceci.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
Sub recherche()
    MsgBox "Ce mot apparaît " & compte_occurence_mot(InputBox("Que recherchez vous ?", "Occurence")) & " fois."
End Sub
Function compte_occurence_mot(mot_que_l_on_recherche As String)
    Dim sh As Worksheet
    Dim cellule As Range
    Dim t As Integer
    Dim longueur_du_mot_que_l_on_cherche As Integer
    longueur_du_mot_que_l_on_cherche = Len(mot_que_l_on_recherche)
    'on scanne toutes les feuilles
    For Each sh In ThisWorkbook.Worksheets
        'On scanne toutes les cellules de la plage utilisé de la feuille
        For Each cellule In sh.UsedRange
            'On scanne toutes les lettres de la cellule
            If Not (IsError(cellule.Value)) Then
                For t = 1 To Len(cellule.Value)
                    'Si on trouve le mot recherché, on incrémente l'occurence
                    If Mid(cellule.Value, t, longueur_du_mot_que_l_on_cherche) = mot_que_l_on_recherche Then
                        compte_occurence_mot = compte_occurence_mot + 1
                    End If
            Next t
                End If
        Next cellule
    Next sh
End Function

Note : en utilisant la fonction application.find, on doit aussi y arriver, ca fera l'objet d'un prochain post
Note 2 : à la place de faire une recherche par cellule, on peut aussi créer un tableau en VBA (array), ce qui évite de devoir lire chaque cellule et donc on accélère la vitesse de la macro, là encore, ce sera pour une autre fois 😉

Si vous voyez d'autres manières d'améliorer ce code, n'hésitez pas !

A bientôt

Gaëtan