Pb : Variable objet ou variable de bloc With non définie

Bonjour forum,

Le code suivant me retourne l'erreur : Variable objet ou variable de bloc With non définie

Sub corrigeOrtho()
Dim Sh As Worksheet
fautes = Array("Gommes", "Règle Transparent 20 cm Atuglass ", "Règle plate Transparente 20 cm ", _
            "Règle Cristal Incolore 30 cm", "Règle plate Transparente 30 cm ", "Aimants ""puissant"" - Rouges", _
            "Brosse Tableau Velleda", "Porte-Blocs cube ""Translucide""", "Feuilles Doubles P.C", _
            "Chemise à sangle  - Canari", "    ""          ""               - Gris", _
            "    ""          ""               - Noir", "112 x 220 Blanche. AutoC. Av Fenêtre", _
            "229 x 324 Kraft Soufflet 30")
correctifs = Array("Gomme", "Règle plate Transparente 20 cm", "Règle plate Transparente 20 cm", _
            "Règle plate Transparente 30 cm", "Règle plate Transparente 30 cm", "Aimants ""puissants"" - Rouges", _
            "Brosse Tableau Blanc Velleda", "Porte - Bloc cube ""Translucide""", "Feuilles Doubles P.C (x400)", _
            "Chemise à sangle - Canari", "    ""          ""              - Gris", _
            "    ""          ""              - Noir", "112 x 220 Blanch. AutoC. Av Fenêtre", _
            "229 x 324 Kraft soufflet 30")
With Sh
    For Each ft In fautes
        .Cells.Replace What:=ft, Replacement:=correctifs(i), LookAt:=xlWhole
        i = i + 1
    Next ft
End With
End Sub

A la ligne :

With Sh
    For Each ft In fautes
        .Cells.Replace What:=ft, Replacement:=correctifs(i), LookAt:=xlWhole
        i = i + 1
    Next ft
End With

Je n'arrive pas à comprendre pourquoi. Il me semblait que le code était juste!

Merci d'avance pour vos éclaircissements.

Bonjour

Tu défini ta variable Sh comme étant de type Worsheet, mais tu ne lui affecte aucun objet feuille.

avant "With Sh", tu peux ajouter, par exemple

Set Sh = ActiveSheet

Cordialement

Bonjour Demeb,

Merci pour la réactivité!

En fait je voudrais appliquer la macro corrigeOrtho sur toutes les feuilles d'un classeur mais apparemment ce que tu m'as dit de faire ne marche pas!

Où est le problème?

Pour appliquer la macro à toutes les pages du classeur actif, tu peux écrire

Sub corrigeOrtho()

Dim Sh As Worksheet

fautes = Array("Gommes", "Règle Transparent 20 cm Atuglass ", "Règle plate Transparente 20 cm ", _

"Règle Cristal Incolore 30 cm", "Règle plate Transparente 30 cm ", "Aimants ""puissant"" - Rouges", _

"Brosse Tableau Velleda", "Porte-Blocs cube ""Translucide""", "Feuilles Doubles P.C", _

"Chemise à sangle - Canari", " "" "" - Gris", _

" "" "" - Noir", "112 x 220 Blanche. AutoC. Av Fenêtre", _

"229 x 324 Kraft Soufflet 30")

correctifs = Array("Gomme", "Règle plate Transparente 20 cm", "Règle plate Transparente 20 cm", _

"Règle plate Transparente 30 cm", "Règle plate Transparente 30 cm", "Aimants ""puissants"" - Rouges", _

"Brosse Tableau Blanc Velleda", "Porte - Bloc cube ""Translucide""", "Feuilles Doubles P.C (x400)", _

"Chemise à sangle - Canari", " "" "" - Gris", _

" "" "" - Noir", "112 x 220 Blanch. AutoC. Av Fenêtre", _

"229 x 324 Kraft soufflet 30")

For Each Sh In ActiveWorkbook.Worksheets

With Sh

i = 0

For Each ft In fautes

.Cells.Replace What:=ft, Replacement:=correctifs(i), LookAt:=xlWhole

i = i + 1

Next ft

End With

Next Sh

End Sub

Merci beaucoup Demeb! C(est ce que je voulais!

Rechercher des sujets similaires à "variable objet bloc definie"