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 :

Application d'un style sur ListObject [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Par défaut Application d'un style sur ListObject
    Bonjour

    soit un ListObjet de 100 lignes

    dont 10 de "remplies"


    si à la main je choisi de changer le style en écrasant l'ancienne mise en forme.

    les 100 lignes sont bien affectées.


    Si je le fait en Vba, seules les ligne non vides sont affectées !!!

    Ou est l'erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("Table1[#All]").Select
    ActiveSheet.ListObjects("Table1").TableStyle = "TableStyleLight7"
    merci

    Oups ...

    je n'ai pas tout dit...

    ce n'est pas le style "TableStyleLight7" que je veux appliquer mais un style perso... "MonStyle" créé par duplication/modification

    mais çà ne change pas grans chose au problème...

    En gros je veux faire en vba l'équivalent de:

    "Metre sous forme de tableau" + "Appliquer et supprimer la mise en forme "

    merci d'avance

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Re...

    Pourquoi sélectionnes-tu la plage avant? Ce n'est pas nécessaire.
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  3. #3
    Membre averti
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Par défaut Re...
    ...C'est un reste de l'enregistreur de macro...

    toujours est-t-il que cela ne suffit pas pour faire l'équivalent de:

    "Metre sous forme de tableau" + "Appliquer et supprimer la mise en forme "

    il semble qu'il faille suprimer la mise en forme avant...

    mais que les parties Police,bordure et remplissage...

    et je ne sais pas faire simplement

    merci
    Louis

  4. #4
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Activesheet.ListObjects("Tableau1").TableStyle="tablestylemedium14"
    fonctionne très bien. Attention que pour les styles préétablis, tu dois utiliser le nom anglais du style

    Es-tu sûr de la taille de ton tableau? Lorsque tu fais la modif à la main, cela fonctionne?

    Il faut évidemment que les couleurs et polices des cellules de ton tableau soient des couleurs et police de thème, car changer de thème n'affecte que les couleurs et polices de thème...

    Donc, avant de réaliser la modif, tu dois mettre le fond de ton tableau à "aucun remplissage", tu dois choisir une police et une couleur de thème. Après, tu peux alors modifier le thème à ta guise, manuellement ou par macro.

    Note également que les formats conditionnels sont prioritaires aux formats de thème...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  5. #5
    Membre averti
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Par défaut
    J'ai supprimé toute notion de style perso

    J'utilise bien les noms anglais des styles

    Je redimentionne mon tableau avant d'appliquer le style

    Lorsque je fais la manip à la main, cela fonctionne

    Voici mon code actuel : le but est d'appliquer un format de "lignes à bandes" aux lignes 3 à 100 des colonne A à N (puisque les formats automatique n'existent plus en 2007...)

    j'applique intentionnellement 2 styles de suite avec un stop entre les 2 pour le déboguage...

    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
    Sub Zonage()
        If ActiveSheet.ListObjects.Count = 0 Then
            ActiveSheet.ListObjects.Add(xlSrcRange, Range("$A$3:$N$500"), "Tablestyledark4", xlYes).Name = "Table1"
        Else
            ActiveSheet.ListObjects(1).Name = "Table1"
            ActiveSheet.ListObjects(1).Resize Range("A3:N400")
        End If
        ActiveSheet.ListObjects("Table1").TableStyle = "Tablestylemedium2"
        Stop
        ActiveSheet.ListObjects("Table1").TableStyle = "Tablestyledark4"
     
     
        ActiveSheet.ListObjects("table1").Unlist
        Range("a1").Select
    End Sub
    merci

    merci j'ai ajouté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Range("a3:n500").Select
        With Selection.Interior
            .Pattern = xlNone
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        With Selection.Font
            .ColorIndex = xlAutomatic
            .TintAndShade = 0
        End With
    la notion de thème ..etc. n'était pas Evidente pour moi...

    merci encore

  6. #6
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Si c'est uniquement pour appliquer des couleurs alternées, tu n'es pas obligé de passer par une mise en tableau. Tu peux utiliser un format conditionnel, manuel ou via VBA, pour alterner tes couleurs de ligne
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  7. #7
    Membre averti
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Par défaut re..
    J'ai bien regardé du côté des formats conditionnels mais je n'ai rien trouvé en rapport avec les lignes alternées

    et comme l'aide dit :

    Vous pouvez rapidement ajouter un ombrage aux lignes paires et impaires en appliquant un style de tableau Excel prédéfini, puis en reconvertissant le tableau créé en plage standard. La mise en forme du style de tableau que vous avez appliqué est conservée.
    .... je voulais juste automatiser cela...

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    C'est une bonne technique aussi, mais il ne faut pas devoir insérer des lignes par la suite, sinon, il faudra refaire la manip.

    Lignes alternées en format conditionnel

    Sélectionne la zone sur laquelle tu veux placer l'alternance de couleur
    Dans Format Conditionnel, choisis "Nouvelle règle" puis "Utiliser une formule..."
    et saisis ceci
    puis détermine le format à appliquer...
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  9. #9
    Membre averti
    Inscrit en
    Février 2005
    Messages
    29
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 29
    Par défaut re...
    Bien vu

    merci encore

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

Discussions similaires

  1. [Style] Application d'un style sur un label
    Par DotNET74 dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 21/05/2010, 12h50
  2. [XSLT] Erreur lors de l'application d'une feuille de style sur mon document
    Par fredonweb dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 26/06/2007, 00h15
  3. Réponses: 5
    Dernier message: 23/07/2005, 00h40
  4. Réponses: 1
    Dernier message: 30/05/2005, 18h02
  5. Application.OnHelp et appui sur F1
    Par mathieutlse dans le forum Langage
    Réponses: 2
    Dernier message: 04/07/2003, 12h19

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