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

VB.NET Discussion :

[Excel] Erreur sur la propriété Outline


Sujet :

VB.NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre chevronné Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 339
    Par défaut [Excel] Erreur sur la propriété Outline
    Bonjour,
    Dans mon application qui importe des données dans un tableur Excel. Je suis amené a regrouper plusieurs lignes sans problème.
    Pour améliorer l'affichage je souhaite que la ligne grouper soit en haut au lieu d'en bas par défaut. Dans Excel il suffit de désélectionner l'option suivante :
    Nom : Capture2.PNG
Affichages : 154
Taille : 19,7 Ko

    Pour connaitre la commande concernée, j'ai utilisé l'enregistreur de Macro.
    La propriété concernée est : Outline.SummaryRow décrite ici : https://msdn.microsoft.com/fr-fr/lib...ummaryrow.aspx

    Lorsque j’exécute :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim Classeur_Excel As Workbook
    Dim Feuille_Excel As Worksheet
    Classeur_Excel = Globals.ThisAddIn.Application.ActiveWorkbook
    Feuille_Excel = Globals.ThisAddIn.Application.ActiveSheet
     
    If Feuille_Excel.Outline.SummaryRow = XlSummaryRow.xlSummaryBelow Then
           Feuille_Excel.Outline.SummaryRow = XlSummaryRow.xlSummaryAbove
    End If
    Le message d'erreur survient :
    Nom : Capture.PNG
Affichages : 165
Taille : 20,6 Ko

    J'ai effectué de nombreux test et essais et je ne comprend pas pourquoi. La lecture de la propriété dans le if ne pose pas de problème mais que l'assignation d'une valeur renvoie une erreur. Alors que cette propriété n'est pas "Read only".

    Je vous remercie par avance.
    Bonne journée.

  2. #2
    Inactif  

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    À vrai dire, je n'ai jamais trop essayé en VB.net, mais quand on fait de l'automation en VBA, le meilleur moyen de travailler avec les constantes de l'application pilotée à distance est d'utiliser les valeurs numériques des constantes et non leur noms.

    Si je me fie à mon aide de VBA:

    xlsummaryabove = 0
    xlsummarybelow = 1

    Donc, si c'est comme en VBA, essaie avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Feuille_Excel.Outline.SummaryRow = 1 Then
           Feuille_Excel.Outline.SummaryRow = 0 
    End If
    Je ne garantis rien pour ce qui suit, mais tu pourrais aussi essayer cela (en principe, cela devrait marcher, mais j'ai appris à me méfier d'OLEAutomation):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const xlsummaryabove as integer = 0
    const xlsummarybelow as integer= 1
    If Feuille_Excel.Outline.SummaryRow = xlSummaryBelow Then
           Feuille_Excel.Outline.SummaryRow = xlSummaryAbove
    End If
    Ou là, avec un "gros gros peut-être", recréer l'énumération dans le code VB.net, comme une Enum "ordinaire"

  3. #3
    Membre chevronné Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 339
    Par défaut
    Salut,
    Tout d'abord merci de ta réponse, et du temps consacré.

    Citation Envoyé par clementmarcotte Voir le message
    Si je me fie à mon aide de VBA:

    xlsummaryabove = 0
    xlsummarybelow = 1

    Donc, si c'est comme en VBA, essaie avec:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Feuille_Excel.Outline.SummaryRow = 1 Then
           Feuille_Excel.Outline.SummaryRow = 0 
    End If
    J'ai déjà testé cela sans succès.


    Je ne garantis rien pour ce qui suit, mais tu pourrais aussi essayer cela (en principe, cela devrait marcher, mais j'ai appris à me méfier d'OLEAutomation):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const xlsummaryabove as integer = 0
    const xlsummarybelow as integer= 1
    If Feuille_Excel.Outline.SummaryRow = xlSummaryBelow Then
           Feuille_Excel.Outline.SummaryRow = xlSummaryAbove
    End If
    Ou là, avec un "gros gros peut-être", recréer l'énumération dans le code VB.net, comme une Enum "ordinaire"
    Je vais tester cela demain...
    Merci

  4. #4
    Membre chevronné Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 339
    Par défaut
    Salut,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const xlsummaryabove as integer = 0
    const xlsummarybelow as integer= 1
    If Feuille_Excel.Outline.SummaryRow = xlSummaryBelow Then
           Feuille_Excel.Outline.SummaryRow = xlSummaryAbove
    End If
    Ne fonctionne pas et me renvoie la même erreur.

    Merci et bonne journée.

  5. #5
    Inactif  

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

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 903
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    La plupart de mes programmes ou des exemples que je peux avoir sont sur un disque USB que je n'ai pas avec moi. Aussi bien dire que je vais à l'oeillomètre.

    Dans l'aide de VBA-Excel (sauf que VBA, ce n'est pas du VB.net et que ceux qui pratiquent les deux savent que ce n'est pas pareil), ils disent que Outline, c'est une propriété et un objet. (Je suis sûr que les puristes de la POO doivent sauter au plafond, mais bon. ) Donc, une autre hypothèse:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Dim Classeur_Excel As Workbook
    Dim Feuille_Excel As Worksheet
    Classeur_Excel = Globals.ThisAddIn.Application.ActiveWorkbook
    Feuille_Excel = Globals.ThisAddIn.Application.ActiveSheet
     
    'ajout théorique non testé
    Dim Plan_Excel as outline = Feuille_Excel.outline
    'Remplacement théorique non testé
    If Feuille_Excel.Outline.SummaryRow = 1 Then
           Plan_Excel.SummaryRow = 0 
    End If
    'Partie remplacée, non testée.
     
    'If Feuille_Excel.Outline.SummaryRow = XlSummaryRow.xlSummaryBelow Then
    '       Feuille_Excel.Outline.SummaryRow = XlSummaryRow.xlSummaryAbove
    'End If

  6. #6
    Membre chevronné Avatar de r.morel
    Homme Profil pro
    Dessinateur CAO
    Inscrit en
    Août 2014
    Messages
    339
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Dessinateur CAO
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2014
    Messages : 339
    Par défaut
    Cela renvoie, encore une fois, la même erreur.
    Je te remercie encore de ton aide.
    Bonne soirée

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

Discussions similaires

  1. Erreur sur la propriété ImageUrl
    Par Bono_BX dans le forum ASP.NET
    Réponses: 5
    Dernier message: 13/09/2010, 13h29
  2. Accès SQL dans fichier excel erreur sur une ligne
    Par troubleshooting dans le forum Excel
    Réponses: 3
    Dernier message: 17/11/2009, 15h46
  3. VB .Net et Excel, erreur sur poste
    Par sweet76 dans le forum VB.NET
    Réponses: 10
    Dernier message: 20/08/2008, 13h11
  4. excel erreur sur une condition
    Par zaza45 dans le forum Excel
    Réponses: 7
    Dernier message: 09/04/2008, 13h27
  5. Réponses: 13
    Dernier message: 14/02/2006, 18h45

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