Formule ou mise en forme conditionnelle?

Bonjour,

J'ai besoin d'un coup de main svp:

Le fichier contient un tableau avec en première ligne des nombres et le reste des ligne des pourcentages. Je souhaite afficher une étoile dans les cellules des colonnes dont la première cellule (appartenant donc à la première ligne) contient un nombre inférieur à 10. (pour plus de clarté voir PJ).

Merci d'avance

31exemple.zip (12.19 Ko)

Bonjour muguiwara,

Code à mettre dans le code de la Feuil1 :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim derlign As Long, cel As Range
    derlign = [a65536].End(xlUp).Row
    For Each cel In [a4:q4]
        If cel < 10 Then
            cel.Resize(derlign - 4 + 1, 1).NumberFormat = """*"""
        Else
            cel.NumberFormat = "General"
            cel.Offset(1).Resize(derlign - 5 + 1, 1).NumberFormat = "0%"
        End If
    Next cel
End Sub

Bonjour,

Un grand merci à toi, ça marche nickel

Est ce possible d'ajouter une condition: si la cellule contient : "#DIV/0!" remplacer par "*"

(j n'y connais rien en VBA, désolé )

Merci d'avance!

Bonne journée

muguiwara a écrit :

Est ce possible d'ajouter une condition: si la cellule contient : "#DIV/0!" remplacer par "*"

Tu souhaites changer totalement le contenu de la cellule ? Car je ne sais pas remplacer l'affichage d'une erreur par autre chose, à moins de changer le contenu (formule ou valeur) de la cellule.

Salut,

Oui, stp. changer le contenu est ok pour moi.

Merci

Ok alors remplace le code ci-dessus par celui-ci :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim derlign As Long, cel As Range
    derlign = [a65536].End(xlUp).Row
    For Each cel In [a4:q4]
        If IsError(cel) Then
            If CVErr(xlErrDiv0) = cel Then cel.Resize(derlign - 4 + 1, 1).Value = "*"    'gestion des erreurs #DIV/0!
        ElseIf cel < 10 Then
            cel.Resize(derlign - 4 + 1, 1).NumberFormat = """*"""
        Else
            cel.NumberFormat = "General"
            cel.Offset(1).Resize(derlign - 5 + 1, 1).NumberFormat = "0%"
        End If
    Next cel
End Sub

A noter donc que s'il y a une erreur #DIV/0!, toutes les valeurs de la colonne sera remplacée par des *.

Bonjour,

Merci pour le code mais ça ne marche pas

Peut être que c 'est ma faute, je pense m'être mal fait comprendre.

Il faut remplacer '#DIV/0!" par "*" quelque soit la cellule et pas seulement si c'est la première ligne ( les 2 conditions sont indépendantes).

Autre chose, est ce que tu aurais l'extrême gentillesse d'écrire le prochain code en prenant en compte un tableau :

c4:an80.

Merci d'avance

Bonne journée

Pour la plage a4:an80 c'est donc les #DIV/0! qu'il faut prendre en compte ?

Bonjour,

les 2 conditions doivent s'appliquer sur la plage a4:an80.

j'ajoute aussi que je souhaite que le contenu des cellules soit changé et non uniquement l'affichage (pour les 2 conditions).

Encore merci

Bonne journée

Essaie avec ce code :

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim cel As Range
    For Each cel In [a4:an4]
        If cel <> "" Then If cel < 10 Then cel.Resize(80 - 4 + 1, 1).Value = "*"
    Next cel
    For Each cel In [a4:an80]
        If IsError(cel) Then If CVErr(xlErrDiv0) = cel Then cel.Value = "*"    'gestion des erreurs #DIV/0!
    Next cel
End Sub

Si j'ai bien compris.

Un très grand merci à toi

C'est parfait!

Bonne journée

Rechercher des sujets similaires à "formule mise forme conditionnelle"