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

Windows Forms Discussion :

[VB.NET][Excel] Bordure de cellule


Sujet :

Windows Forms

  1. #1
    Membre confirmé Avatar de joKED
    Profil pro
    Imposteur en chef
    Inscrit en
    Février 2006
    Messages
    337
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Imposteur en chef

    Informations forums :
    Inscription : Février 2006
    Messages : 337
    Points : 458
    Points
    458
    Par défaut [VB.NET][Excel] Bordure de cellule
    Bonjour à tous.

    J'essaie actuellement de créer un fichier au format Excel en copiant les données contenues dans un autre fichier Excel.

    Je voudrais appliquer une certaine mise en forme à quelques cellules, mais je n'y arrive aboslument pas.
    Je cherche dans un premier temps à affecter une bordure à une cellule, et par la suite à copier le style de cette cellule (couleur de fond, police, bordure) pour l'affecter à une autre.

    Pour l'instant, voila où j'en suis:

    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
     
        Dim myExcel As New Excel.Application
        myExcel.Visible = False
        Dim classeur As Excel.Workbook = myExcel.Workbooks.Open(PATHMODELE & "troc.xls")
        Dim feuille As Excel.Worksheet = CType(classeur.ActiveSheet, Excel.Worksheet)
        Dim rng As Excel.Range = feuille.Range(feuille.Cells(1, 1), feuille.Cells(1, 5)) 'je définis un range
        feuille.Name = "hop" 
        rng.Merge() ' je fusionne les cellules du range
        rng.Value = "hop" 'je lui affecte un texte
        rng.Interior.Color = RGB(255, 0, 0) 'puis une couleur
        Dim rng2 As Excel.Range
        rng2 = feuille.Range(feuille.Cells(4, 4), feuille.Cells(4, 9)) 'voici un autre range
        rng2.Interior.Color = rng.Interior.Color 'je copie la couleur du premier dans le second
     
    'je veux maintenant affecter une bordure et une police au premier range et affecter le style au second range
    Si quelqu'un peut m'aiguiller pour trouver la solution, je lui en serait reconnaissant.

    PS: Si vous connaissez un bon livre traitant du pilotage d'Excel via .NET ou un bon tutorial, n'hésitez pas à me le faire connaitre. La doc msdn ne m'a pas permis de trouver grand chose à propos de ce que je veux faire
    Tant va la cruche à l'eau qu'à la fin y'a plus d'eau.

  2. #2
    Membre confirmé Avatar de joKED
    Profil pro
    Imposteur en chef
    Inscrit en
    Février 2006
    Messages
    337
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Imposteur en chef

    Informations forums :
    Inscription : Février 2006
    Messages : 337
    Points : 458
    Points
    458
    Par défaut
    Personne n'a une petite idée, ni un bouquin qui pourrait m'aider?
    Tant va la cruche à l'eau qu'à la fin y'a plus d'eau.

  3. #3
    Membre éprouvé
    Avatar de HULK
    Inscrit en
    Juillet 2003
    Messages
    1 273
    Détails du profil
    Informations personnelles :
    Âge : 44

    Informations forums :
    Inscription : Juillet 2003
    Messages : 1 273
    Points : 1 280
    Points
    1 280
    Par défaut
    y'a rien qui se passe ou tu as une erreur ?? si oui laquelle ???
    j'suis vert !

  4. #4
    Membre confirmé Avatar de joKED
    Profil pro
    Imposteur en chef
    Inscrit en
    Février 2006
    Messages
    337
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Imposteur en chef

    Informations forums :
    Inscription : Février 2006
    Messages : 337
    Points : 458
    Points
    458
    Par défaut
    C'est bon, j'ai fini par trouver.
    Il suffisait de créer un style et de l'affecter à mon range de la manière suivante:

    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
     
    Dim rng As Excel.Range = ThisApplication.Range("rangeStyles")
        Dim style As Excel.Style
     
        Try
            style = ThisWorkbook.Styles("NewStyle")
        Catch Ex As Exception
            ' Style doesn't exist yet.
            style = ThisWorkbook.Styles.Add("NewStyle")
            style.Font.Name = "Verdana"
            style.Font.Size = 12
            style.Font.Color = RGB(255, 0, 0)
            style.Interior.Color = RGB(200, 200, 200)
            style.Interior.Pattern = Excel.XlPattern.xlPatternSolid
        End Try
     
        rng.Value2 = "'Style Test"
        rng.Style = "NewStyle"
    Pour la bordure, je n'ai toujours pas compris comment faire.
    C'est rageant, il ne me manque que ça à faire...
    Tant va la cruche à l'eau qu'à la fin y'a plus d'eau.

  5. #5
    Membre confirmé Avatar de joKED
    Profil pro
    Imposteur en chef
    Inscrit en
    Février 2006
    Messages
    337
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Imposteur en chef

    Informations forums :
    Inscription : Février 2006
    Messages : 337
    Points : 458
    Points
    458
    Par défaut
    Finalement, j'ai trouvé, et ça fonctionne.

    Le code ci dessous permet d'enlever la bordure du bas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    rng.Borders(Excel.XlBordersIndex.xlEdgeBottom).LineStyle = Excel.Constants.xlNone
    Donc pour en ajouter une, je remplace le Excel.Constants.xlNone par
    Excel.XlLineStyle.xlContinuous pour une ligne continue.

    Voila, c'est résolu, merci de ton aide Hulk, ton lien m'a bien aidé.
    Tant va la cruche à l'eau qu'à la fin y'a plus d'eau.

  6. #6
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Mai 2014
    Messages : 6
    Points : 4
    Points
    4
    Par défaut
    bonjour,

    lorsque j'utilise votre ligne de code, pour ma part j'ai mis :

    Dim wsexcel, classeur, feuille

    wsexcel = CreateObject("Excel.Application")
    wsexcel.Visible = True
    classeur = wsexcel.Workbooks.Open(pathsauv & "\Base de donnée\Données BD\Heures Tâches.xls")
    feuille = wsexcel.ActiveSheet

    feuille.range("A2").Borders(wsexcel.XlBordersIndex.xlEdgeBottom).LineStyle = wsexcel.Constants.xlContinuous

    Une erreur s'affiche : Public member 'XlBordersIndex' on type 'ApplicationClass' not found.

    Je n'arrive pas à trouver la solution, si vous aviez une idée, cordialement

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

Discussions similaires

  1. Transfert Excel --> bordure cellule
    Par zapatta dans le forum Access
    Réponses: 4
    Dernier message: 08/10/2009, 22h15
  2. [VB.Net][Excel]Accéder à la valeur d'une cellule
    Par DonF dans le forum Windows Forms
    Réponses: 6
    Dernier message: 21/09/2006, 11h09
  3. [VBS] - Mise en page d'Excel (Bordure de cellule)
    Par RegiO dans le forum VBScript
    Réponses: 2
    Dernier message: 01/09/2006, 14h44
  4. Réponses: 9
    Dernier message: 27/06/2006, 16h55
  5. Réponses: 2
    Dernier message: 03/05/2006, 22h34

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