IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Plantage après 'Row Insert' [XL-2010]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 39
    Points : 25
    Points
    25
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
     activecell.EntireRow.Insert (Shift)
    ... tout est parfait, une nouvelle ligne est insérée au dessus de la ligne sélectionnée.

    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

    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

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Je ne suis pas sur que ce soit une erreur strictement Excel, mais une erreur qui implique un lien avec un autre objet, ou carrément un manque de mémoire vive qui plante OLE.


    Sur cette page : -2147417848 (80010108) L'objet invoqué s'est déconnecté de ses clients.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 39
    Points : 25
    Points
    25
    Par défaut 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

  4. #4
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    En principe, une fois enlevés de la feuille, ils ne devraient pas causer de problème, encore que...

    Ceci dit je viens de penser à un programme que tu pourrais essayer. Personnellement, je ne l'ai jamais utilisé, mais certains en ont dit du bien:

    VBA Code Cleaner
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 39
    Points : 25
    Points
    25
    Par défaut 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...

    Merci pour ton aide

    jacksun

  6. #6
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur après-vente
    Inscrit en
    Novembre 2016
    Messages
    39
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur après-vente
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Novembre 2016
    Messages : 39
    Points : 25
    Points
    25
    Par défaut 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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2010] Plantage code suite à rows.insert
    Par Terejima dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/07/2015, 09h45
  2. Plantage apres insertion de CD
    Par fallais dans le forum Périphériques
    Réponses: 11
    Dernier message: 16/02/2007, 18h32
  3. Redirect de la page après un insert/update/delete
    Par mchicoix dans le forum XMLRAD
    Réponses: 5
    Dernier message: 25/02/2005, 09h31
  4. Réponses: 9
    Dernier message: 07/09/2004, 11h12
  5. [IB6] mon serveur crash apres des insert en série...
    Par Rmotte dans le forum Débuter
    Réponses: 11
    Dernier message: 27/05/2004, 14h53

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo