Plantage après 'Row Insert'
(Windows 7, Excel 2010)
Bonjour
J'utilise une feuille de base Sheets("Budget2017") et une feuille de référence Sheets("TiersList").
La feuille de référence Sheets ("TiersList"), contient une liste de clients définie par le nom (Name = "TiersInfoList", scope: Workbook),
la liste occupe uniquement la colonne B de cette feuille.
Lorsque, sur la feuille de base Sheets ("Budget2017"), après sélection d'une cellule, j'applique le code ...
Code:
activecell.EntireRow.Insert (Shift)
... tout est parfait, une nouvelle ligne est insérée au dessus de la ligne sélectionnée. :D
Par contre, et c'est là mon problème, si j'élimine une ligne quelconque au milieu de la liste de référence "TiersInfoList",
soit manuellement soit en utilisant le code qui suit
(en supprimant d'abord le nom de la liste actuelle et en le recréant à la fin pour la liste amputée):
Code:
1 2 3 4 5 6 7
| Public Const BudgetTiersSortStartRow = 3
ActiveWorkbook.Names("TiersInfoList").Delete
EndRow = Range("B65536").End(xlUp).Row 'nouvelle fin de liste
TiersRange = "$B" & "$" & BudgetTiersSortStartRow & ":$B" & "$" & EndRow
ActiveWorkbook.Names.Add _
Name:="TiersInfoList", RefersTo:="=TiersList!" & TiersRange |
et que j'essaie d'insérer ensuite une nouvelle ligne n'importe où sur la feuille Sheets ("Budget2017"),
Excel se plante immédiatement sans message d'erreur! et toutes les feuilles ouvertes sont inertes
et ne répondent plus. :furax:
Remarques complémentaires:
- Une ComboBox sur Sheets("Budget2017") utilise TiersInfoList comme 'RowSource'.
J'ai essayé de supprimer cette ComboBox mais pas d'amélioration en vue.
- En essayant de piéger l'erreur sur la ligne de code 'ActiveCell.EntireRow.insert' j'obtiens Err.Number = 2147417848.
- En utilisant Sheets ("TiersList") mais alliée à une feuille neutre à la place de ma feuille Sheets("Budget2017"), je n'ai pas ce problème!
Quelqu'un aurait-il une idée sur la cause de ce bug que je n'arrive pas à localiser?
Merci
Jacksun
Plantage après 'Row.Insert'
Bonjour ClémentMarcotte
Merci pour cette information rapide et instructive. Je pense aussi qu'une relation à un autre objet pourrait être la cause.
J'ai encore remarqué que la UserForm principale 'UF25_Saisir' que j'utilise pour insérer ou modifier les saisies sur la feuille sheets("Budget2017") contient, suite à d'importantes modifications faites récemment, 48 objets (!) (probablement créés par erreur en copiant ou en déplaçant des objets existants?).
Les objets inutiles sont: Frame1 - Frame9 et OptionButton1 - OptionButton39
alors que je n'utilise que 4 Frames et 11 OptionButtons qui tous sont identifiés par des noms individuels.
J'ai alors supprimé tous ces objets sur la UF25 en mode (View Object). Mais en mode (View Code) ils subsistent et je ne sais pas comment les supprimer.
Ensuite j'ai exporté puis réimporté UF25 mais sans succés.
Pourraient-ils être la cause de mon problème?
Et surtout que faire pour les éliminer définitivement?:?
Jacksun
Plantage après 'Row.Insert'
Bonjour
J'ai installé VBA Code Cleaner sur mon PC.
Facit:
1. L'installation a été sans problèmes, qui aussi généré une copie (.bak) de mon programme avant changements.
2. Les 48 objets n'ont malheureusement pas été éliminés.
3. Mais mon programme ne répond plus correctement: Sur 300 lignes de ma feuille Excel une vingtaine sont maintenant groupées (!) . Jusqu'à la ligne 57, les données restent figées et environ 30 lignes se sont groupées...Impossible de consulter toutes les 300 lignes.
J'ai pu les dégrouper mais sans pouvoir débloquer la page. J'avais pourtant utilisé une copie de mon programme placé dans un dossier séparé à cet effet. Mon programme original a - pour une raison que j'ignore - aussi été touché et est bloqué.
Il doit y avoir un moyen simple de re-activer cette feuille mais je ne sais pas comment.
Je n'ai pas non-plus trouvé le moyen d'ouvrir le fichier .bak.
Peut-tu m'indiquer comment procéder? Je risque de perdre 1 bon mois de programmation...:arf:
Merci pour ton aide
jacksun
Plantage après 'Row Insert' (suite et fin)
Bonjour
Après le dernier message de Jean-Philippe André, intitulé « Votre message a été déplacé », je n’ai pas reçu de réponse sur le nouveau site.
J'ai finalement résolu le problème de plantage de la manière suivante:
Juste avant d’insérer une nouvelle ligne (qui provoque le bug), je désaffecte la référence du ‘ListFillRange’ pour le restituer immédiatement après insertion.
Code:
1 2 3 4 5 6 7 8 9 10
| 'Clear ListFillRange to prevent RunTime Bug (80010108) !!!
ActiveSheet.Shapes.Range(Array("CBx_BudTiersDirList")).Select
Selection.ListFillRange = ""
With ActiveCell
.EntireRow.Insert (Shift) '=================== insert new row
'Reset ListFillRange
ActiveSheet.Shapes.Range(Array("CBx_BudTiersDirList")).Select
Selection.ListFillRange = "TiersInfoList"
'...
End With |
Pour le problème des multiples apparitions de Frames et de Labels dans la UserForm
j'ai dû recréer toute la UserForm UF25_Saisir! :(
En remerciant Jean-Philippe André et clémentmarcotte pour leur intérêt je termine ici cette discussion(sans trouver l'endroit officiel pour le terminer...)
Jacksun