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 :

Alterner couleur de lignes avec interop


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut Alterner couleur de lignes avec interop
    Bonjour tout le monde,

    J'ai un petit souci avec un bout de code et je ne comprends pas d'où vient l'erreur

    Le but de la ligne est dans le titre

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim format As Excel.FormatCondition = mafeuille.Rows.FormatConditions.Add( _
                Excel.XlFormatConditionType.xlExpression, Excel.XlFormatConditionOperator.xlEqual, "=mod(row(),2) = 1")
            format.Interior.Color = ColorTranslator.ToOle(Color.WhiteSmoke)
    Le message d'erreur qui m'arrive est :



    Alors qu'il n'y a q'un paramètre obligatoire, tout le reste est optionnel

    Si quelqu'un pouvait me dire d'où ça vient...

    Merci d'avance.

  2. #2
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Et de cette façon ? A adapter bien sûr :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    'si le classeur est en Français, sinon, =MOD(ROW(),2) et =MOD(ROW()+1,2)
    'une ligne en jaune et une ligne en rouge sur la zone utilisée de la feuille
    Dim Format1 As Excel.FormatCondition = mafeuille.UsedRange.FormatConditions.Add(2, , "=MOD(LIGNE();2)")
    Dim Format2 As Excel.FormatCondition = mafeuille.UsedRange.FormatConditions.Add(2, , "=MOD(LIGNE()+1;2)")
     
    Format1.Interior.Color = 65535
    Format2.Interior.Color = 255
    Hervé.

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Merci Theze de te pencher sur mon cas

    Bon, j'ai essayé ton code et je plante dés la 1ère ligne avec la même erreur :



    j'ai essayé ça aussi mais sans succès :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dim selection = mafeuille.Range("A1", "F" & numLigne)
     
            selection.FormatConditions.AddColorScale(ColorScaleType:=2)
            selection.ColorScaleCriteria(1).FormatColor.Color = ColorTranslator.ToOle(Color.White)
            selection.ColorScaleCriteria(2).FormatColor.Color = ColorTranslator.ToOle(Color.WhiteSmoke)

  4. #4
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Ce code fonctionne bien chez moi, adapte le nom du classeur avec son chemin et le nom de la feuille puis teste :
    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
     
            Dim Excel As Object
            Dim Classeur As Object
            Dim Feuille As Object
            Dim Plage As Object
            Dim Format1 As Object
            Dim Format2 As Object
     
            Excel = CreateObject("Excel.Application")
     
            Excel.visible = True
            Classeur = Excel.workbooks.open("D:\MonClasseur.xls")
            Feuille = Classeur.worksheets("Feuil1")
            Plage = Feuille.range("A1:F22")
     
            'si le classeur est en Français, sinon, =MOD(ROW(),2) et =MOD(ROW()+1,2)
            'une ligne en jaune et une ligne en rouge sur la zone utilisée de la feuille
            Format1 = Feuille.UsedRange.FormatConditions.Add(2, , "=MOD(LIGNE();2)")
            Format2 = Feuille.UsedRange.FormatConditions.Add(2, , "=MOD(LIGNE()+1;2)")
     
            'défini les couleurs de fond
            Format1.Interior.Color = 65535
            Format2.Interior.Color = 255
     
        End Sub
    Hervé.

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Je me retrouve avec la même erreur que lorsque je faisais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim format As Excel.FormatCondition = mafeuille.Rows.FormatConditions.Add( _
                Excel.XlFormatConditionType.xlExpression, Excel.XlFormatConditionOperator.xlEqual, "=mod(row(),2) = 1")
            format.Interior.Color = ColorTranslator.ToOle(Color.WhiteSmoke)
    à savoir :

    Le nombre de paramètres spécifié ne correspond pas au nombre attendu
    Je ne comprends vraiment pas cette erreur, étant donné que visual ne me souligne pas ces lignes comme des erreurs et qu'il n'y a pas d'erreurs à la compilation. C'est vraiment lorsqu'il passe sur ces lignes qu'il plante, j'ai essayé avec des missing, des "virgules vides", pour remplir tout les paramètres attendus, mais rien n'y fait, il me dit toujours que le nombre de paramètres n'est pas le bon.

  6. #6
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonjour,

    Mais as-tu essayé le code que je t'ai posté et si oui, sur quelle ligne ça plante ?

    Hervé.

  7. #7
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Citation Envoyé par Theze Voir le message
    Bonjour,

    Mais as-tu essayé le code que je t'ai posté et si oui, sur quelle ligne ça plante ?

    Hervé.
    Oui bien sûr que je l'ai essayé

    Il plante sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Format1 = Feuille.UsedRange.FormatConditions.Add(2, , "=MOD(LIGNE();2)")
    et il me dit :

    Le nombre de paramètres spécifié ne correspond pas au nombre attendu

  8. #8
    Expert éminent
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Points : 6 871
    Points
    6 871
    Par défaut
    Bonsoir Shadam,

    Je suis sous VB2008 et chez moi aucun problème, le classeur s'ouvre bien avec les lignes colorées en rouge et jaune sans aucune erreur ! Bizarre ?

    Hervé.

  9. #9
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Oui, je pense que c'est un problème dans ma référence COM, ma dll ne doit pas être complète (si c'est possible ) ou un truc dans le genre... En tout cas merci de ton aide, j'ai essayé au moins 5 façons différentes d'attaquer le problème et aucune ne marche!!!

  10. #10
    Membre confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mars 2011
    Messages
    453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 453
    Points : 478
    Points
    478
    Par défaut
    Bon et bien voilà, en ayant marre de tourner en rond et de me heurter à des problèmes incompréhensibles, j'ai résolu le problème en faisant ça avec mes petites mains "à l'ancienne" :

    un bon vieux booléen :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim lignePaire As Boolean = False
    et un petit test tout bête mais qui fonctionne à la perfection après chaque insertion de ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    If lignePaire Then
       .Range("A" & numLigne, "Q" & numLigne).Interior.Color = ColorTranslator.ToOle(Color.LightGray)
        lignePaire = False
    Else
       .Range("A" & numLigne, "Q" & numLigne).Interior.Color = ColorTranslator.ToOle(Color.White)
       lignePaire = True
    End If
    En tout cas encore merci à Theze d'avoir tenter de m'aider à trouver une solution, même si apparemment tu l'as trouvée et qu'elle ne fonctionnait pas chez moi...

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

Discussions similaires

  1. alterner couleur de bloque avec code smarty
    Par ldiaz dans le forum Mise en page CSS
    Réponses: 0
    Dernier message: 11/11/2012, 13h47
  2. Copier puis insérer une ligne avec interop
    Par Shadam dans le forum VB.NET
    Réponses: 1
    Dernier message: 23/09/2011, 15h42
  3. Alterner couleurs des lignes
    Par samspitz dans le forum Langage
    Réponses: 1
    Dernier message: 03/03/2009, 22h26
  4. Alterner couleur une ligne sur deux
    Par NiC1305 dans le forum Langage
    Réponses: 7
    Dernier message: 06/04/2008, 13h23
  5. Comment changer les couleurs des lignes avec displaytag
    Par rlnd23 dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 09/10/2006, 14h52

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