Erreur (9) renvoyée en permanence par "ClearContents"

Résolu
bmwz3tds Messages postés 11 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 11 mars 2013 - 11 mars 2013 à 11:22
bmwz3tds Messages postés 11 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 11 mars 2013 - 11 mars 2013 à 16:01
Bonjour à tous

J'ai un petit souci avec la fonction ClearContents, utilisée dans VBA sous Excel 2007.
Son utilisation me renvoie en permanence l'erreur 9 (l'indice n'appartient pas à la sélection).
Initialement, je pensais que mon problème venait du fait que je codais "pas très proprement" , car j'utilisais :
Sheets(1).Range("A1:B2").Select
Selection.ClearContents

A noter que j'utilisais Excel 2003...apparemment beaucoup plus permissif ^^

Puis en exécutant mon classeur sous Excel 2007, les problèmes ont commencé à apparaitre en masse, notamment par rapport à cette méthode...

J'ai donc ré-écrit pas mal de chose, mais quelque soit la manière d'utiliser/écrire ce ClearContents le résultat est toujours le même.
Que ce soit en l'écrivant ainsi :
Sub MaMacro_1
Sheets(1).Range("A1:B2").ClearContents
End Sub


ou comme ceci :
Sub MaMacro_2
Dim MaFeuille As Worksheet
Dim MaPlage As Range

Set MaFeuille = ThisWorkbook.Sheets(1)
Set MaPlage = MaFeuille.Range("A1:B2")

With MaPlage
    .ClearContents
End With

End Sub


J'obtiens à chaque fois :
L'indice n'appartient pas à la sélection

...le pire, c'est que la méthode fonctionne tout de même, puisque les cellules concernées sont tout de même effacées.

Quelqu'un aurait-il une explication ?

Bm'

12 réponses

bmwz3tds Messages postés 11 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 11 mars 2013
11 mars 2013 à 16:01
Mon problème est semble-t-il résolu

Comme le préconisait Fabien (merci encore à toi pour la piste ), le souci semble venir d'une des macros complémentaires installées sur mon PC : "Outils pour l'Euro (Conversion et mise en forme pour l'euro)" - EUROTOOL.XLA
En désactivant cette macro, VBA se "comporte" de manière normale

Je vais ajouter un petit test dans mon code au démarrage pour désactiver ce complément s'il est actif sur le pc.

Merci encore à tous pour votre aide ;)
Longue vie au VB

Bm'
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 mars 2013 à 11:29
Ton erreur est ailleurs que là où tu la vois.
ClearContents marche parfaitement pour effacer une plage (si non protégée, bien évidemment).
Ton erreur est donc ailleurs.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
bmwz3tds Messages postés 11 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 11 mars 2013
11 mars 2013 à 12:27
Tout d'abord, merci pour ta réponse

Cependant, je peux affirmer que le souci ne vient pas d'ailleurs ou d'un autre endroit de mon code... car je n'ai tout simplement pas d'autre bout de code ^^

Pour être plus clair :
J'ai également eu le même réflexe que toi en me disant en premier lieu que l'erreur venait d'ailleurs.
C'est pour ça que la 1ère chose que j'ai faite c'est de :
1) Créer un nouveau classeur Excel (2007)
2) Créer un module.
3) Taper uniquement la procédure suivante :
Sub MaMacro_2
Dim MaFeuille As Worksheet
Dim MaPlage As Range

Set MaFeuille = ThisWorkbook.Sheets(1)
Set MaPlage = MaFeuille.Range("A1:B2")

With MaPlage
    .ClearContents
End With

End Sub


Avant exécution de la ligne '.ClearContents' : Err.Number = 0
Après exécution la ligne '.ClearContents' : Err.Number = 9

D'autres idées ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 mars 2013 à 13:10
D'autres idées ?

Non ! Aucune (et pour cause) !
1) Ton problème est forcément en amont de ClearContents.
2) l'erreur dénoncée concerne un objet inexistant
Mais ne bouge pas : je vais faire le test moi-même (et avec excel 2007) .


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 mars 2013 à 13:17
Je savais bien que j'allais perdre mon temps, mais bon ... puisque tu y tenais :
J'ai donc accompli scrupuleusement (et sous 2007, comme toi), toutes les opérations que tu as décrites dans ton message du lundi 11 mars 2013 à 12:27:07, sans en changer la moindre virgule === >> Aucun message d'erreur et "fait son devoir" à la perfection et sans la moindre faille
Je vais aller faire ma sieste (fais-en autant).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviendrai que si nécessité de la compléter.
0
c'est peut etre du a un composant ou une macro complémentaire installé sur certain pc et pas d'autres !!!!


Fabien
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
11 mars 2013 à 13:36
Bonjour
Ce qui me parait surprenant c'est le nom de la feuille
par défaut le nom est feuil1 traduite en vba par Sheet1
J'ai renommer la feuille 1 donc traduit par 1
Mais

celà s'écrit Set MaFeuille = ThisWorkbook.Sheets("1")
avec des apostrophes

bonne journée
0
euh cl... en vba le nom de la feuille reste Feuil1
tu écris worksheets("Feuil1") et non worksheets("sheet1")
et sheets(1) fait référence à la première feuille du classeur alors que sheets("1") fait référence à la feuille qui s'appelle 1 du classeur


Fabien
0
c148270 Messages postés 303 Date d'inscription mercredi 12 janvier 2005 Statut Membre Dernière intervention 3 octobre 2013 1
11 mars 2013 à 13:55
Je n'ai pas pensé à l'index.

Pour le "sheet1" je l'ai obtenu par l'enregistreur de macro sous excel 2010 mais sur un poste d'essai dans mon service qui subit pas mal d'outrages.

Sur un poste standard j'ai bien "Feuil1" comme tu l'écrits

Je vais signaler le fait
0
bmwz3tds Messages postés 11 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 11 mars 2013
11 mars 2013 à 14:50
Merci à tout le monde pour votre aide

@ucfoutu : Merci d'avoir fait le test... et je suis content si chez toi ça marche...

@fabien : ta piste des macros complémentaires me semble très intéressante !! je vais creuser par là !!
Car en effet j'ai un .xla qui se lance au démarrage d'Excel et je n'avais pas pensé à ça.

Par ailleurs, j'ai refais d'autres tests :
- Pour le nom de la feuille, bien entendu, ça ne change rien.
Que je mette son nom en dure (ex :
Sheets("MaFeuille")
)ou bien que j'utilise un index (ex :
Sheets(1)
), ça ne change rien.
- Le problème n'est pas lié à l'utilisation de la méthode ClearContents.
Car lorsque j'essaye de faire un 'simple'
Activesheet.Range("A1").Value = "toto"
j'ai le même code erreur (9)... même si au final l'action est tout de même réalisée...
Ce qui me laisse penser que le problème est donc 'plus général'.
...peut etre du coté des Références/Macros complémentaires coté Excel que j'utilise (comme ATPVBAEN.XLA - Outils d'analyse)...
0
ok regarde cela et tiens nous au courant :)


Fabien
0
bmwz3tds Messages postés 11 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 11 mars 2013
11 mars 2013 à 15:07
Ok, donc voici quelques précisions quant aux références et/ou macros complémentaires qui sont utilisés sur mon PC :

Niveau EXCEL (VBE) (en passant par 'Options Excel' \ 'Compléments') :
Dans la liste des 'Compléments d'application actifs', j'ai :
- Analysis ToolPak
- Analysis ToolPak VBA
- Outils pour l'euro

Niveau VBA :
- Visual Basic for Applications
- Microsoft Excel 12.0 Object Library

A noter que dans VBA, je peux effectivement voir les Projets suivants de chargés :
- atpvbaen.xls (ATPVBAEN.XLAM)
- EuroTool (EUROTOOL.XLAM)
- VBA Project (Classeur1.xls)
- VBAProject (FUNCRES.XLAM)
0
Rejoignez-nous