bmwz3tds
Messages postés11Date d'inscriptionjeudi 20 novembre 2003StatutMembreDernière intervention11 mars 2013
-
11 mars 2013 à 11:22
bmwz3tds
Messages postés11Date d'inscriptionjeudi 20 novembre 2003StatutMembreDernière intervention11 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 :
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.
bmwz3tds
Messages postés11Date d'inscriptionjeudi 20 novembre 2003StatutMembreDernière intervention11 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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.
bmwz3tds
Messages postés11Date d'inscriptionjeudi 20 novembre 2003StatutMembreDernière intervention11 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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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.
Vous n’avez pas trouvé la réponse que vous recherchez ?
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 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.
c148270
Messages postés303Date d'inscriptionmercredi 12 janvier 2005StatutMembreDernière intervention 3 octobre 20131 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
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
bmwz3tds
Messages postés11Date d'inscriptionjeudi 20 novembre 2003StatutMembreDernière intervention11 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)...
bmwz3tds
Messages postés11Date d'inscriptionjeudi 20 novembre 2003StatutMembreDernière intervention11 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)