Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Référence en tête de colonne

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Photosol

XLDnaute Junior
Bonjour,

Mon problême est simple:

- Sous Excel, une colonne à un nom: A B C D...

- lorsque l'on transforme une plage en tableau; les noms des colonnes du tableau reprennent les en têtes. "capital; Nom ; Prénom" suivant le nom que l'on donne à l'entête de colonne.

jusqu'ici rien de bien révolutionnaire, mais tout de même très pratique car ceci permet de pouvoir ajouter ou supprimer des colonnes sans décaler les références car celle ci n'est plus sur la colonne mis sur l'en tête.


Ma question est simple, existe t'il une solution pour que sous VBA on puisse reprendre une en tête de colonne de tableau plutôt que d’être obligé de nommer une colonne.

Avez vous compris ce que je veux dire, et surtout avez vous une réponse?

Merci beaucoup!
 
Re : Référence en tête de colonne

Bonjour Photosol 🙂,
Quelque chose comme
Code:
Range("Tableau1[Colonne1]").Select
ou
Code:
Range("Tableau1[[#All],[Colonne3]]").Select
😛...
Bonne suite 😎
 
Re : Référence en tête de colonne

Salut JNP,

justement je souhaiterais ne pas mettre une référence qui bouge (la colonne 1 peut changer si j'insère une nouvelle colonne en 1ère position), mais mettre le nom réel de la colonne comme "Tableau1[Nom]".

Ainsi je pourrais mettre Nom où je veux dans mon tableau sans avoir à retoucher mes lignes de code...
 
Re : Référence en tête de colonne

Re 🙂,
C'est bien de cela qu'il s'agit, mon tableau n'avait pas d'entêtes, d'où Colonne1 🙄... Mais avec
Code:
Range("Tableau1[Nom]").Select
ça fonctionne 😛...
Par contre, il n'est pas possible d'insérer une colonne dans un tableau avnt la première colonne il me semble 🙄...
Bonne suite 😎
 
Re : Référence en tête de colonne

Re JNP,

En effet le .select marche, cependant mes lignes de codes sont différentes, as tu une petite idée pour les lignes que je t'ai mises en dessous? pour remplacer les "A" par les références du tableau. (je sais je suis peut être un peu naze...)


TextBox1 = WS.Range("A" & Me.ComboBox1.ListIndex + 3)


.Range("B" & derligne) = TextBox2


.Range("B" & Me.ComboBox1.ListIndex + 3) = TextBox2

merci!!
 
Re : Référence en tête de colonne

Re 🙂,
Quelque chose comme ça
Code:
TextBox1 = Range("Tableau1[Nom]")(Me.ComboBox1.ListIndex + 3)
Range("Tableau1[Prénom]")(derligne) = TextBox2
Range("Tableau1[Nom]")(Me.ComboBox1.ListIndex + 3) = TextBox2
à adapter pour la hauteur 🙄...
Pas la peine de préciser la feuille, les zones nommées sont valables dans tout le classeur 😛...
Bonne soirée 😎
 
Re : Référence en tête de colonne

Je dois certainement être un peu nul, et je vraiment désolé de t'embêter encore,
mais je n'arrive pas à intégrer ces références dans mon fichier...

Je te le transmet, si tu pouvais me faire voir en direct ce serait parfait!
et tu comprendras mieux mon soucis avec la pièce jointe..
 

Pièces jointes

Re : Référence en tête de colonne

Re 🙂,
Alors déjà
Code:
Private Sub Ini()
Dim CTRL As Control 'Variable pour la collection des controls
    Dim Cel As Range
'On Vide tous les Controls
For Each CTRL In Me.Controls
If TypeOf CTRL Is MSForms.TextBox Or TypeOf CTRL Is MSForms.ComboBox Then
CTRL = ""
End If
Next CTRL
For Each Cel In Range("Tableau3[NOM]") 'boucle sur toutes les cellules éditées de la colonne Nom
    With Me.ComboBox1 'prend en compte la ComboBox1
        .AddItem Cel.Value 'ajoute la valeur de la cellule cel à la colonne 0 de la ComboBox1
        .Column(1, .ListCount - 1) = Cel.Offset(0, 1).Value 'ajoute la valeur de la cellule de la colonne D à la colonne 1 de la ComboBox1
        'pour utiliser une autre colonne que la B, il suffit d'augmenter la valeur de Offset(0, x) qui correspond au décalage par rapport à A
    End With 'fin de la prise en compte de la ComboBox1
Next Cel 'prochaine cellule de boucle
End Sub
mais surtout (tu me feras le plaisir de renuméroter tes TextBox dans le bon ordre 😛)
Code:
Private Sub ComboBox1_Click()
If Me.ComboBox1.ListIndex = -1 Then Exit Sub 'ON sort si pas de sélection
Dim I As Integer
For I = 1 To 21
Controls("TextBox" & I) = Range("Tableau3[#Headers]")(I).Offset(Me.ComboBox1.ListIndex + 1)
Next I
'If Range("C" & Me.ComboBox1.ListIndex + 3).Comment Is Nothing Then
'   TextBox22 = " "
'Else
'TextBox22 = Range("C" & Me.ComboBox1.ListIndex + 3).Comment.Text
'End If
 
'ici on initialise les Variable pour mémoriser le valeur précédente en cas de Modif
With Me
Nom = .ComboBox1
Prenom = .TextBox1
End With
End Sub
Je te laisses continuer 😉...
Bon courage 😎
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…