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 :

Problème de mise en forme [XL-2013]


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 198
    Points : 80
    Points
    80
    Par défaut Problème de mise en forme
    Bonjour à tous

    J'ai un problème très étrange en Excel 2013.

    J'ai un document Excel qui est généré par une application (faite sur mesure) . Celui-ci contient une liste de donnée.
    Une macro, que l'utilisateur doit exécuter manuellement, ajoute la mise en page (simplement mettre les bordures autour des cellules).
    Rien de compliqué.

    voici le code qui ajoute les bordures:
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    Sub rempli(fg As Boolean, rg As Range, Optional fst As Boolean = True, Optional gras As Boolean = False)
        ' add border around range rg
        ' if fg : true  => top & bottom will be included
        '    fg : false => top & bottom stay blank
        '    rg : range where the border will be draw
        '
        ' option:
        '   fst : true  => draw the top line (default)
        '   fst : false => top line stay blank
        '  gras : true  => border line is medium
        '  gras : false => border line is thin (default)
        ' ----------------------------------------------
     
        rg.Font.ColorIndex = 0
     
        If Not gras Then
     
            If fg Then
                st = xlContinuous
            Else
                st = xlNone
            End If
            rg.Borders(xlInsideVertical).LineStyle = xlContinuous
     
            rg.Borders(xlEdgeLeft).LineStyle = xlContinuous
            rg.Borders(xlEdgeRight).LineStyle = xlContinuous
     
            If fst Then
                rg.Borders(xlEdgeTop).LineStyle = xlContinuous
            Else
                rg.Borders(xlEdgeTop).LineStyle = xlNone
            End If
            rg.Borders(xlEdgeBottom).LineStyle = st
        Else
            rg.Borders(xlEdgeLeft).Weight = xlMedium
            rg.Borders(xlEdgeRight).Weight = xlMedium
            rg.Borders(xlEdgeTop).Weight = xlMedium
            rg.Borders(xlEdgeBottom).Weight = xlMedium
        End If
    End Sub

    Sous Excel 2010 et 2016, tout fonctionne à merveille.

    Sous Excel 2013, je reçois un message d'erreur : "Unable to set the lineStyle property of the border class"

    Ce qui est encore plus étrange, sous Excel 2013 uniquement, en dehors du tableau avec le résultat, cela fonctionne !
    Si je sélectionne une cellule dans le tableau du résultat, je clique droit et choisi "Format cells", le pop-up n'apparait pas.
    Si je choisi une cellule en dehors de ce résultat, le popup apparait.

    J'ai fait un "repair" de MS Office mais sans succès

    Je ne sais plus où chercher!

    Dans le bureau, il y a plusieurs personnes ayant la même version d'Excel. Le problème est également identique chez eux.

    Ce que j'ai déjà fait également c'est d'utiliser cette méthode de travail:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    With rg
        .Borders(xlEdgeTop).LineStyle = xlContinuous
    End Width
    Mais sans succès.

    Voilà, Cela dépasse mes compétences d' Excel.
    Toutes idées sont les bienvenues !
    Merci d'avance
    Bien à vous
    Bonne journée
    André

  2. #2
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Qu'est le "tableau de résultats" ? Un tableau croisé dynamique ? Une table de données ?

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 198
    Points : 80
    Points
    80
    Par défaut Problème d'affichage
    Bonjour,
    Avant tout, merci de réagir promptement.

    Non, vraiment rien de compliqué. C'est un simple tableau contenant 5 colonnes.
    Il y a toujours 380 lignes ... toujours ! pas une de plus, pas une de moins.
    Par contre le nombre de colonne est fonction des critères mais ne dépasse jamais 30 colonnes.

    C'est une liste de produit avec des valeurs (bidons dans cette copie d'écran) qui sont regroupé sur certain critères.

    Je dois simplement ajouter une bordure autour des valeurs ayant ces critères.

    Voici un exemple:
    Nom : da9v.jpg
Affichages : 570
Taille : 18,8 Ko

    Voilà,
    Encore merci
    André

  4. #4
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Est-ce que la feuille ne serait pas protégée contre les modifications ?

    Idée : au lieu d'utiliser du code VBA, tu peux peut-être regarder du côté de la mise en forme conditionnelle.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 198
    Points : 80
    Points
    80
    Par défaut Réponse
    Bonjour,

    Pour la protection, non. Si cela serait le cas, j'aurais le problème dans toute les version.
    Pour ce qui concerne la mise en forme conditionnel, l'idée n'est pas mauvaise.
    Je vais y regarder.

    Vu le nombre de cas particulier, y a t'il une limitation au nombre de condition différentes (± 50)

    Merci pour votre support.
    Je vais essayer.
    Je ne sais pas fournir une réponse aujourd'hui.

    Bien à vous
    André

  6. #6
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Les version d'Excel après 2007 n'ont il me semble pas de limite sur le nombre de mises en forme conditionnelles mais 50 règles ça fait un sacré paquet et l'interface ne te présente que 5 règles à la fois.
    Ce n'est pas super confortable quand tu en as beaucoup, le VBA est sans doute plus facile à vivre.

    Ce qui m'étonne le plus dans ton cas c'est que tu ne puisses pas le faire à la main non plus c'est pour cela que je pensais à la protection.

    À tout hasard, as-tu essayé de sélectionner les cellules du tableau, les copier et les coller dans une autre feuille ? Dans un autre classeur ? Est-ce que tu peux les formater dans le nouvel environnement.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  7. #7
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par dede_bo Voir le message
    Bonjour,

    Sans aucune garantie :

    Le tableau ci-dessous indique les paramètres pour XlLineStyle (Office 365). Votre paramètre XlNone pour aucun trait n'existe pas dans la liste.
    Sinon, essayez de remplacer les xl... par leur valeur numérique.

    Regardez également si le problème ne vient pas de cette ligne en la neutralisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ' rg.Borders(xlInsideVertical).LineStyle = xlContinuous

    Pièce jointe 502080

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 198
    Points : 80
    Points
    80
    Par défaut Réponse finale
    Bonjour,
    J'aimerais vous remercier tous pour votre contribution et vos idées.

    Hier soir, en cherchant, j'ai découvert ceci : http://support.sas.com/kb/52/492.html

    Suivant ce lien, cette erreur se produit lorsque les bordures Excel sont endommagées. Pour résoudre ce problème, il faut effacer les bordures Excel avec l'instruction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Sub border() 
        Selection.Borders.LineStyle = xlNone
    End Sub
    J'ai essayé et cela à fonctionné.

    j'ai quelques commentaires pour:

    marot_r:
    Dans l'exemple que j'ai donné, j'ai simplement crée un petit tableau très simple pour expliquer le principe.
    Dans la réalité, la structure est beaucoup plus complexe et dynamique.
    Ajouter les bordures à la main va prendre un temps (je ne vais pas dire considérable) mais tout près d'une heure.

    En ce qui concerne de recopier les cellules dans un nouveau document, oui, cela fonctionne.
    A condition d'utiliser "paste special" / "value"

    Eric KERGRESSE:
    Effectivement votre idée me plais beaucoup. Utiliser une valeur est mieux qu'un texte.
    Je vais faire le nécessaire. Merci pour l'astuce.

    Voilà, encore merci à tous

    PS:
    J'écris ce commentaire pour les modérateurs du site:
    Je clôturerai ce poste vendredi, pour laisser le temps aux éventuelles commentaires additionnels


    André

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par dede_bo Voir le message
    Effectivement votre idée me plais beaucoup. Utiliser une valeur est mieux qu'un texte.
    Bonjour,

    Ma suggestion n'avait d'intérêt qu'au cas où aucune autre solution n'aurait fonctionné. C'était juste une piste pour voir.

    Dans un fonctionnement normal d'excel, vous pouvez utiliser l'une ou l'autre des notations. En revanche, si vous instanciez Excel depuis une autre application (Word,....), seule la notation par les numéros fonctionne. CQFD.

  10. #10
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 198
    Points : 80
    Points
    80
    Par défaut petit commentaire
    Eric KERGRESSE

    Bonjour, travailler sur des documents Excel est un job secondaire.
    Mon premier travail est Web Master (nom pompeux) ... que j'aime pas trop.

    Mais bon, lorsque je fabrique un site, j'utilise toujours les indexes. Cela évite que les gens encodent n'importe quoi !
    Car, pour retrouver quelque chose, après, cela devient compliquer !

    Donc, à mes yeux, votre idée est très bonne.

    Je ne sais pas la mettre en pratique tout de suite, j'ai beaucoup de travail actuellement.
    Mais, merci tout de même.
    André

  11. #11
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 331
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 331
    Points : 23 786
    Points
    23 786
    Par défaut
    Bonjour.

    Juste pour dire que je ne souhaitais pas que tu fasses le travail à la main.
    Désolé si ma tournure de phrase t'a fait comprendre cela.
    Je m'étonnais simplement que tu ne puisse pas même le faire à la main pour un essai.

    Merci pour l'info sur comment corriger le problème.

    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

  12. #12
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2015
    Messages
    198
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2015
    Messages : 198
    Points : 80
    Points
    80
    Par défaut
    marot_r

    Ne t'inquiète pas, il y a pas de soucis.

    La cellule est comme "bloquée". quand tu clique droit, rien ne se passe.
    En dehors de la zone de données, cela fonctionne.

    Ce que j'ai même essayé: sélectionner une zone quelconque dans les données, cliquez sur l'icône pour les bordures et rien ne se passe.
    Par contre, les couleurs elles, peuvent être modifier !
    Vraiment bizarre...

    Enfin, cela fonctionne. C'est le principal !
    Merci encore
    André

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 13/08/2009, 20h20
  2. [CR9] [CRXI] Problème de mise en forme sur un nom de groupe
    Par Maltus dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 06/09/2006, 10h32
  3. [VBA_E] Problème de mise ne forme,pour balayage
    Par baptbapt dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 29/08/2006, 13h33
  4. [VBA] Problème enregistrement mise en forme fichier word
    Par guenfood dans le forum VBA Word
    Réponses: 1
    Dernier message: 07/06/2006, 14h10

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