Erreur (9) renvoyée en permanence par "ClearContents" [Résolu]

bmwz3tds 11 Messages postés jeudi 20 novembre 2003Date d'inscription 11 mars 2013 Dernière intervention - 11 mars 2013 à 11:22 - Dernière réponse : bmwz3tds 11 Messages postés jeudi 20 novembre 2003Date d'inscription 11 mars 2013 Dernière intervention
- 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'
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
bmwz3tds 11 Messages postés jeudi 20 novembre 2003Date d'inscription 11 mars 2013 Dernière intervention - 11 mars 2013 à 16:01
3
Merci
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'

Merci bmwz3tds 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 122 internautes ce mois-ci

Commenter la réponse de bmwz3tds
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 11 mars 2013 à 11:29
0
Merci
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.
Commenter la réponse de ucfoutu
bmwz3tds 11 Messages postés jeudi 20 novembre 2003Date d'inscription 11 mars 2013 Dernière intervention - 11 mars 2013 à 12:27
0
Merci
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 ?
Commenter la réponse de bmwz3tds
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 11 mars 2013 à 13:10
0
Merci
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.
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionContributeurStatut 11 avril 2018 Dernière intervention - 11 mars 2013 à 13:17
0
Merci
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.
Commenter la réponse de ucfoutu
fabiendag - 11 mars 2013 à 13:31
0
Merci
c'est peut etre du a un composant ou une macro complémentaire installé sur certain pc et pas d'autres !!!!


Fabien
Commenter la réponse de fabiendag
c148270 303 Messages postés mercredi 12 janvier 2005Date d'inscription 3 octobre 2013 Dernière intervention - 11 mars 2013 à 13:36
0
Merci
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
Commenter la réponse de c148270
fabiendag - 11 mars 2013 à 13:41
0
Merci
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
Commenter la réponse de fabiendag
c148270 303 Messages postés mercredi 12 janvier 2005Date d'inscription 3 octobre 2013 Dernière intervention - 11 mars 2013 à 13:55
0
Merci
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
Commenter la réponse de c148270
bmwz3tds 11 Messages postés jeudi 20 novembre 2003Date d'inscription 11 mars 2013 Dernière intervention - 11 mars 2013 à 14:50
0
Merci
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)...
Commenter la réponse de bmwz3tds
fabiendag - 11 mars 2013 à 14:54
0
Merci
ok regarde cela et tiens nous au courant :)


Fabien
Commenter la réponse de fabiendag
bmwz3tds 11 Messages postés jeudi 20 novembre 2003Date d'inscription 11 mars 2013 Dernière intervention - 11 mars 2013 à 15:07
0
Merci
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)
Commenter la réponse de bmwz3tds

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.