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

  1. #1
    Membre habitué
    Application d'un tableau personnalsé par une macro
    Bonjour à tous,

    Décidément, les macros et les tableaux me donnent du fil à retordre même si je me limite à des choses basiques.
    Je souhaite appliquer le style de tableau personnalisé "paramètres" au tableau qui est sélectionné.

    Ma macro (crée en mode enregistrement) est :

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub parametres_maj()
    '
    ' parametres_maj Macro
        Sheets("Paramètres").Select
        Range("JEUNES[#All]").Select
     
    '   Application du style de tableau
        ActiveSheet.ListObjects("JEUNES").TableStyle = "paramètres"
     
        Range("B5").Select
    End Sub


    Elle se cantonne à sélectionner le tableau et ... c'est à peu près tout, la couleur de fond n'est pas modifiée. J'ai idée que ce mode enregistrement n'enregistre pas tout !
    Pour preuve, quand je clique droit sur mon style de tableau "paramètres" et je choisis "Appliquer et supprimer la mise en forme", j'obtiens bien ce que je veux.


    Je pense que la macro est incomplète et je pateauge fortement.

    Sauriez-vous ce qui manque ? (hormis des connaissances )
    Merci d'avance.

  2. #2
    Rédacteur

    Bonjour,
    En VBA sauf cas très exceptionnel, il est parfaitement inutile de sélectionner, une ou plusieurs cellules, une feuille ou un classeur.
    On modifie les propriétés ou on utilise les méthodes directement en précisant l'objet et ce quelle que soit la cellule active

    Voici un exemple d'une procédure qui modifie le style d'un tableau et qui fonctionne parfaitement. Je n'ai pas tester avec un style personnalisé parce-que j'utilise un style prédéfini
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub T()
      With ThisWorkbook.Worksheets("ListingFormation").ListObjects("T_Training")
      .TableStyle = "TableStyleMedium3"
      End With
    End Sub


    Je vois avec plaisir que tu as retrouvé ton "Jeunes"
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  3. #3
    Membre habitué
    Bonjour Philippe,

    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    En VBA sauf cas très exceptionnel, il est parfaitement inutile de sélectionner, une ou plusieurs cellules, une feuille ou un classeur.
    On modifie les propriétés ou on utilise les méthodes directement en précisant l'objet et ce quelle que soit la cellule active
    Merci pour l'info.

    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    Voici un exemple d'une procédure qui modifie le style d'un tableau et qui fonctionne parfaitement. Je n'ai pas tester avec un style personnalisé parce-que j'utilise un style prédéfini
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub T()
      With ThisWorkbook.Worksheets("ListingFormation").ListObjects("T_Training")
      .TableStyle = "TableStyleMedium3"
      End With
    End Sub

    En remplaçant ListingFormation par le nom de ma feuille et T_Training par le nom du tableau, ça ne fonctionne pas chez moi.

    Citation Envoyé par Philippe Tulliez Voir le message
    Je vois avec plaisir que tu as retrouvé ton "Jeunes"
    Je n'ai toujours pas résolu mon autre problème de nom de tableau qui serait présent alors que je ne le vois pas.

    Merci.

  4. #4
    Rédacteur

    Bonjour Denis,
    En remplaçant ListingFormation par le nom de ma feuille et T_Training par le nom du tableau, ça ne fonctionne pas chez moi
    Qu'est-ce qui ne fonctionne pas ?
    Le style n'est pas modifié, il y a un message d'erreur ?

    Si le style ne se modifie pas, il se peut qu'une autre mise en forme existe mais comme tu as indiqué que cela fonctionnait manuellement, j'écarte cette possibilité.

    Je n'ai toujours pas résolu mon autre problème de nom de tableau qui serait présent alors que je ne le vois pas
    C'est pourtant le nom que tu as donné au tableau dans le code que tu as publié
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  5. #5
    Membre habitué
    Re-bonjour Philippe,

    Citation Envoyé par Philippe Tulliez Voir le message

    Qu'est-ce qui ne fonctionne pas ?
    Le style n'est pas modifié, il y a un message d'erreur ?
    Aucun message d'erreur, on dirait que rien ne se passe.

  6. #6
    Rédacteur

    Bonjour,
    Aucun message d'erreur, on dirait que rien ne se passe
    Peux-tu confirmer que tu as un résultat lorsque tu le fais manuellement sur ce tableau là ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  7. #7
    Membre habitué
    Citation Envoyé par Philippe Tulliez Voir le message

    Peux-tu confirmer que tu as un résultat lorsque tu le fais manuellement sur ce tableau là ?
    Je confirme !!!!!!

  8. #8
    Rédacteur

    Ce message n'a pas pu être affiché car il comporte des erreurs.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  9. #9
    Membre habitué
    Re-merci pour ton aide précieuse.

    J'ai créé le style de tableau "paramètres" en allant dans "Mettre sous forme de tableau" puis en choisissant "Nouveau style de tableau".

    Je suis dans le faux ?

  10. #10
    Rédacteur

    Bonjour,
    Je ne parlais pas de cela.
    Le code que j'ai publié, a pour but d'appliquer un style précis donc natif ou personnalisé mais pas de créer un style.
    Ai je mal compris ta question ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  11. #11
    Membre habitué
    Non, non, tu as parfaitement compris ma demande.
    Je me cantonnais à te dire comment j'avais créé mon style de tableau pour savoir si c'est moi qui ne le faisais pas correctement.

  12. #12
    Rédacteur

    Bonjour,
    Pour comprendre ce qui ne va pas, il faut isoler les problèmes et fermer des portes. Concentrons nous donc sur le problème lié à ta demande.
    Le code que j'ai publié fonctionne je peux te l'assurer. Aussi bien avec des styles natifs qu'avec un style personnalisé (j'en ai créé un avant de répondre bien entendu)
    Comme je l'ai expliqué plus haut
    Sélectionner plusieurs styles d'une façon manuelle et vérifier si les styles choisis s'affichent correctement
    Si cela ne fonctionne pas, voir ce que j'ai expliqué plus haut dans le cas contraire, c'est incompréhensible.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  13. #13
    Membre habitué
    Re-bonjour,

    Citation Envoyé par Philippe Tulliez Voir le message

    Sélectionner plusieurs styles d'une façon manuelle et vérifier si les styles choisis s'affichent correctement
    Je viens d'en ouvrir une grosse de porte... genre château-fort : Aucune mise en forme ne change quelque soit le style de tableau choisi
    C'est grave, docteur ?

  14. #14
    Membre habitué
    Bonjour,

    Après m'être arraché les derniers cheveux qui me restent sur le crâne, je viens de trouver une raison.
    J'avais appliqué un fond de couleur à toute la feuille et ce fond semble prendre le pas sur le style de tableau.
    J'intègre ça à ma macro et je reviens.

  15. #15
    Rédacteur

    Bonjour,
    C'est exactement ce que j'ai expliqué sur plusieurs de mes réponses et notamment au #Fil 4
    Si le style ne se modifie pas, il se peut qu'une autre mise en forme existe mais comme tu as indiqué que cela fonctionnait manuellement, j'écarte cette possibilité
    mais également au fil #8
    Si ce n'est pas le cas, cela signifie que tu as une mise en forme effectuée manuellement avec les commandes du groupe Police de l'onglet [Accueil] ou encore faite par une mise en forme conditionnelle.
    Ce sont les seules raisons qui expliquerait que la mise en forme de style ne s'applique pas au tableau et ce au stade de mes connaissances actuelles du produit mais il est possible qu'il y ait d'autres éléments que j'ignore


    C'est pour cela que j'insistais de savoir si tu avais effectué le test manuellement et si cela fonctionnait mais comme tu persistais dans ton affirmation, c'était un peu compliqué.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  16. #16
    Membre habitué
    Bonjour,

    Désolé si j'ai mal compris ta demande.
    J'avais compris que tu me demandais si mon style de tableau avait été créé avec l'outil remplissage et non pas avec "Nouveau style de tableau", d'où mon explication qui t'a mis dans le doute...
    Ceci étant, si en manuel je mets un fond blanc puis applique mon style de tableau, ça fonctionne mais pas dans la macro.
    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
    Sub V()
    '
    ' V Macro
    '
     
    '
        Range("JEUNES[#All]").Select
        Range("JEUNES[[#Headers],[Dates]]").Activate
        With Selection.Interior
            .Pattern = xlSolid
            .PatternColorIndex = xlAutomatic
            .ThemeColor = xlThemeColorDark1
            .TintAndShade = 0
            .PatternTintAndShade = 0
        End With
        Range("JEUNES[#All]").Select
        Range("JEUNES[[#Headers],[Dates]]").Activate
        ActiveSheet.ListObjects("JEUNES").TableStyle = "paramètres"
    End Sub

  17. #17
    Rédacteur

    Bonjour,
    Un format généré par un style dans un tableau structuré n'apparaît qu'en seconde position après le format de cellules (Interior.Color, Font, etc.) qu'il soit effectué manuellement ou par code VBA et la mise en forme conditionnelle prime également.
    Donc, les lignes 9 à 15 du dernier code publié vont empêcher le style de s'afficher correctement

    Pour s'en convaincre, il suffit d'entrer des données dans une plage de cellules vierges de tout format, par exemple trois colonnes, de quelques lignes et on place une couleur de fond dans les cellules de la première colonne que l'on converti ensuite en tableau structuré, auquel on applique un style quelconque.

    On pourra constaté que le style est appliqué à toutes cellules à l'exception de la première colonne comme illustré ci-dessous

    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA

  18. #18
    Membre habitué
    Bonjour,

    Citation Envoyé par Philippe Tulliez Voir le message

    Un format généré par un style dans un tableau structuré n'apparaît qu'en seconde position après le format de cellules (Interior.Color, Font, etc.) qu'il soit effectué manuellement ou par code VBA et la mise en forme conditionnelle prime également.
    Ah..... Je comprends. Merci

    Et une dernière question toute bête : Comment fait-on pour "effacer" une plage de cellules afin qu'elle soit vierge de tout format ?
    Le seul fait de mettre Aucun remplissage suffirait ?
    Je teste ça.

  19. #19
    Membre habitué
    Ça fonctionne en effet.
    Un très grand merci à toi Philippe pour ta patience et ta persévérance.

  20. #20
    Rédacteur

    Bonjour,
    Et une dernière question toute bête : Comment fait-on pour "effacer" une plage de cellules afin qu'elle soit vierge de tout format ?
    Suivant les cas en présence, plusieurs options s'offrent à nous.
    La plus radicale, est la commande effacer les formats mais cela signifie que tous les formats sont effacés (date, séparateur de milliers, etc.) (en VBA, c'est la méthode ClearFormats de l'objet Range)

    Le seul fait de mettre Aucun remplissage suffirait ?
    Si tu n'as utiliser que ce type de format, oui cela devrait suffire mais il m'est arrivé de devoir également supprimer les bordures, les polices, etc. donc je passe par un effacement total des formats et je reformate les colonnes Date, et valeurs numériques.
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Quelques contributions : USERFORM - Créer, Consulter, Modifier et Supprimer des enregistrements à l'aide d'un formulaire - Géolocalisation d'une adresse avec Excel et Google sans VBA