Entete et le VBA

yoshi07

XLDnaute Nouveau
Bonjour à tous
Après moultes passages sur ce forum, je me suis décidé à m'inscrire et à vous exposez mon problème

Je suis sous window Vista ( Personne n'est parfait ^^ ) et j'utilise Excel 2010.

Je cherche le moyen de transformer les en-têtes d'un tableau en des cellules sans la petite flèche du tri/menu déroulant.
Et ceci en VBA.
Car lorsque je le fait via l'option "Enregistrer une macro" et "Arrêter une macro".
Visual Basic ne note pas le changement de l'en-tête en cellule quelconque.

Si besoin je peux fournir un exemple.
 

Gorfael

XLDnaute Barbatruc
Re : Entete et le VBA

Salut yoshi07 et le forum
Si tu as fais une macro "apprentissage", tu vas un code de la forme :
Code:
    With ActiveSheet.PageSetup
        .PrintTitleRows = ""
        .PrintTitleColumns = ""
    End With
    ActiveSheet.PageSetup.PrintArea = ""
    With ActiveSheet.PageSetup
        .LeftHeader = "A"
        .CenterHeader = "B"
        .RightHeader = "C"
        .LeftFooter = ""
        .CenterFooter = ""
        .RightFooter = ""
        .LeftMargin = Application.InchesToPoints(0.787401575)
        .RightMargin = Application.InchesToPoints(0.787401575)
        .TopMargin = Application.InchesToPoints(0.984251969)
        .BottomMargin = Application.InchesToPoints(0.984251969)
        .HeaderMargin = Application.InchesToPoints(0.4921259845)
        .FooterMargin = Application.InchesToPoints(0.4921259845)
        .PrintHeadings = False
        .PrintGridlines = False
        .PrintComments = xlPrintNoComments
        .PrintQuality = 600
        .CenterHorizontally = False
        .CenterVertically = False
        .Orientation = xlPortrait
        .Draft = False
        .PaperSize = xlPaperA4
        .FirstPageNumber = xlAutomatic
        .Order = xlDownThenOver
        .BlackAndWhite = False
        .Zoom = 100
        .PrintErrors = xlPrintErrorsDisplayed
    End With
en l'élagant un peu pour ne concerver que les en-tête, on se retrouve avec
Code:
    With ActiveSheet.PageSetup
        .LeftHeader = "A"
        .CenterHeader = "B"
        .RightHeader = "C"
    End With
mettre dans la mise en page de la feuille active, dans l'en-tête de gauche "A", du centre "B" et de droite "C".
Je ne peux pas faire mieux avec ton sujet.
A+
 

yoshi07

XLDnaute Nouveau
Re : Entete et le VBA

La j't'avouerai que tu m'as perdu ^^'

J'ai joint un fichier de démonstration.
Je souhaiterai créer une macro qui transforme mon tableau 1 en mon tableau 2.
C'est à dire que les petits icônes de flèches disparaissent.
( Je sais pas si je m'exprime correctement :s )
 

Pièces jointes

  • demo.xlsm
    11.6 KB · Affichages: 105
  • demo.xlsm
    11.6 KB · Affichages: 117
  • demo.xlsm
    11.6 KB · Affichages: 116

Gorfael

XLDnaute Barbatruc
Re : Entete et le VBA

Salut yoshi07 et le forum
Pas sûr de comprendre : les menus de chaque colonne sont générés par le fait d'être en filtrage automatique.
N'ayant que la version Excel2003, ils n'apparaissent pas sur l'aperçu (ou l'impression), chez moi. Alors, va falloir expliquer.
À tout hasard, supprime le filtre automatique
A+
 

yoshi07

XLDnaute Nouveau
Re : Entete et le VBA

Quand je génère un tableau, j'ai automatiquement le petit bouton pour choisir le filtre que je veux sur chaque entête de colonnes.
Chose qui m'est totalement inutile. Je cherche donc à automatiser le fait de :
- Sélectionner le tableau
- Le convertir en une plage.

Je joint une image pour montrer la différence.
 

Pièces jointes

  • demo.jpg
    demo.jpg
    19.1 KB · Affichages: 131

julberto

XLDnaute Occasionnel
Re : Entete et le VBA

Bonjour yoshi07,

- Ou tu cliques sur ton tableau. Puis sous l'onglet Création, dans le groupe Outils, cliquer sur "Convertir en plage".

- Ou tu cliques avec le bouton droit sur le tableau, pointer sur Tableau, puis cliquer sur "Convertir en plage".

- Ou Immédiatement après avoir créé ton tableau, cliquer sur Annuler dans la barre d’outils Accès rapide pour reconvertir le tableau en plage.

cordialement
 

julberto

XLDnaute Occasionnel
Re : Entete et le VBA

Bonjour yoshi07,

Les voix du seigneur sont parfois impénétrables....
Pour aller dans le sens de Gorfael, voila ce que me donne l'enregistreur automatique :
Code:
Sub Macro2()'
' Macro2 Macro
'
    Range("C3:F3").Select
    Selection.AutoFilter
End Sub
Mais je n'en vois pas l'avantage....
cordialement
 

Krisantem

XLDnaute Nouveau
Re : Entete et le VBA

Bonjour,

yoshi07, j'espère que tu consulteras cette discussion car je pense avoir trouvé la solution à ton problème.

Je cherchais de mon côté comment lire les en-têtes d'un tableau en VBA et j'ai réussi grâce à l'enregistreur de commandes à découvrir la collection ListObjects qui comprend tous les tableaux (objet ListObject) de la feuille de calcul.

Cet objet ListObject comporte des méthodes et des propriétés.

Ainsi la méthode Unlist de cet objet permet de convertir un tableau en plage de cellules. Cela semble correspondre à ce que tu cherches à faire.

Code:
ActiveSheet.ListObjects("Tableau1").Unlist

Bye.
 

Pièces jointes

  • demo.xlsm
    16.9 KB · Affichages: 82
  • demo.xlsm
    16.9 KB · Affichages: 96
  • demo.xlsm
    16.9 KB · Affichages: 103

Discussions similaires

Réponses
50
Affichages
5 K

Statistiques des forums

Discussions
312 508
Messages
2 089 132
Membres
104 042
dernier inscrit
tropsy89