Erreur Objet

Bonjour,

en essayant de créer une macro pour répondre à un autre sujet, je suis resté bloqué sur une erreur 424, Objet requis.

Le but de la macro est de mettre en couleur les cellules de la sélection qui ont un "+" dans leur formule.

    Sub couleur_si_plus()

    'lsa039 le 21/08/2015

    Dim macellule As Range, critere As Variant
    critere = "*" & "+" & "*"
    With Worksheets("Feuil1")
    For Each macellule In Selection
    If WorksheetFunction.CountIf(macellule.Formula, critere) >= 1 Then
    macellule.Select
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorAccent6
            .TintAndShade = -0.2499
            .PatternTintAndShade = 0
        End With
    End If
    Next macellule

    End With

    End Sub

Merci

Bonjour,

ça serait facile, si tu nous indiquait où le message d'erreur s'est enclenché.

Je pense que la formule

CountIf 

attends un objet Range dans le premier paramètre.

Bonjour,

Essaie Application.WorksheetFunction...

Application.CountIf marcherait. On peut se passer d'Application dans bien des cas mais on ne peut passer outre dans d'autres.

Cordialement.

Ferrand


En complément, l'idée de Raja est également une possibilité. J'ai déjà eu des blocages sur l'indication de la collection dans une boucle For Each (mais je ne me souviens plus si c'était l'erreur 424).

En tout cas, si c'est sur ce point que ça bloque, cela devrait se régler par : Range("A:A").Cells.

Merci de vos retours,

j'ai essayé avec :

For Each macellule In Range("A:A")

et :

If Application.WorksheetFunction.CountIf(macellule.Formula, critere) >= 1 Then

C'est d'ailleurs sur cette dernière ligne que j'ai une erreur.

Edit

et ça aussi :

For Each macellule In Range("A:A").Cells

Edit 2

En effet la fonction demande un élément Range dans le 1er paramètre, et Objet dans le deuxième.

J'ai fait des test avec la fonction, elle fonctionne si je ne m'interresse pas à la formule de la cellule, mais à sa valeur.

Ce serait donc le

.formula

qui bloque ...

Re Isa039,

Comme j'ai dit dans mon premier message, c'est l'erreur du 1èr paramètre de la fonction "CountIf" qui attend un Objet de type Range.

Essaye plutôt comme ça :

Sub couleur_si_plus()
'lsa039 le 21/08/2015
    Dim macellule As Range, critere As Variant
    critere = "*" & "+" & "*"
    With Worksheets("Feuil1")
    For Each macellule In Range("A1:A6") 'la plage à adapter
        If macellule.Formula Like critere Then
            With macellule.Interior
                .Pattern = xlSolid
                .PatternColorIndex = xlAutomatic
                .ThemeColor = xlThemeColorAccent6
                .TintAndShade = -0.2499
                .PatternTintAndShade = 0
            End With
        End If
    Next macellule
    End With
End Sub

Effectivement, .Formula te renvoie la formule, alors que tu cherches une chaîne et que la recherche se fait dans une plage.

Mais cela est à mon avis une autre erreur que la 424.

Ah oui super merci, ça fonctionne.

Par contre tu as une idée de pourquoi ça ne fonctionnait pas l'autre méthode ?

Rechercher des sujets similaires à "erreur objet"