VBA Range("Tableau1[#Headers]").Cells(, i)

  • Initiateur de la discussion Initiateur de la discussion Regueiro
  • Date de début Date de début

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 !

Regueiro

XLDnaute Impliqué
Bonsoir à Tous
J'ai un petit problème.
J'aimerais sélectionner les cellules 2 à 4 de mon tableau.
Auriez vous une solution.

Code:
Sub Macro2()
   For i = 2 To 4 Step 1
    'Range("Tableau1[#Headers]").Columns(2 & "," & i).Select
    Range("Tableau1[#Headers]").Cells(, i).Select
    Selection.Font.Italic = True
    Next i
End Sub

Pour ensuite l'adapter à une autre macro.

Code:
Sub CréerLabel()
'Alimentation des Labels du USF ( F_BDD)
Dim Ctrl As Control
Dim USF As UserForm
Dim i As Integer
Dim nbcol
Set Plage = Range("Tableau1[#Headers]")

nbcol = Range("Tableau1").Columns.Count
Set USF = F_BDD.MultiPage1.Pages(1).Frame2
    For Each Ctrl In USF.Controls
    If TypeOf Ctrl Is MSForms.Label Then
          For i = 1 To USF.Controls.Count
            Ctrl.Caption = Plage.Columns(i + 1).Value
    '.Caption = Plage.Columns(i).Value
            Next i
    End If
    
    'MsgBox Ctrl.Name & " " & TypeName(Ctrl)
    Next


End Sub

Meri d'avance
A+
 
Re : VBA Range("Tableau1[#Headers]").Cells(, i)

Re
Pour mon 1er problème c'est résolu

Code:
    Range("Tableau1[#Headers]").Columns(i).Font.Italic = True
Je pense qu'il n'aime pas les select.

Maintenant le 2ème problème 😕

Bonne soirée à demain
 
Re : VBA Range("Tableau1[#Headers]").Cells(, i)

Bonsoir à Tous
Je suis à bout touchant, mais toujours un problème.
Je n'arrive pas à alimenter mes Labels avec la caption des titres.
Quelqu'un aurait-il une idée.
Je ne peux actuellement pas vous mettre de fichier joint :

Code:
Private Sub UserForm_Initialize()
Dim lstObj As ListObject
Dim Plage As Range
Dim PlageTitre As Range
Dim NumCol As Long
Dim i
Dim nbcol
Dim Ctrl As Control
'xxx DECLARATION DES VARIABLES xxxxxxxxxxxxxxx
    Set lstObj = Worksheets("BD Client").ListObjects("Tableau1")
    nbcol = lstObj.ListColumns.Count
    
    MsgBox nbcol
    Set Plage = lstObj.DataBodyRange
    'Set PlageTitre = lstObj.HeaderRowRange
    MsgBox Plage.Address
    'MsgBox PlageTitre.Address
   'MsgBox PlageTitre.Columns(2).Value
   
    
'xxxxxxxx ALIMENTATION DES LABELS DES MULTIPLAGES
    With Me.MultiPage1.Pages(1).Frame2
        'With Me.Frame2
    
        'For Each Ctrl In Frame2.Controls
      
        For i = 1 To Frame2.Controls.Count
        NumCol = i
        
'MsgBox Me.Frame2.Controls.Count
MsgBox NumCol

                Me.Controls("Label" & i).Caption = lstObj.HeaderRowRange.Columns(NumCol).Value
                
                
  Next i
'Next Ctrl

        End With
Merci de votre aide
 
Re : VBA Range("Tableau1[#Headers]").Cells(, i)

salut 🙂

un exemple en pièce jointe pour peut être t'aider.

a plus

édition :

un autre exemple de boucle peut etre plus adapté à ta demande :

Code:
For i = 2 To lstObj.HeaderRowRange.Count
    Me.MultiPage1.Pages(1).Controls("Label" & i) = lstObj.HeaderRowRange.Item(i)
Next i
 

Pièces jointes

Dernière édition:
Re : VBA Range("Tableau1[#Headers]").Cells(, i)

Re Bonjour
Enfin trouver le Code à Ma convenance.
Merci de ton aide

Code:
Private Sub UserForm_Initialize()
Dim lstObj As ListObject
Dim i As Byte
Dim c As Range
Dim X
Dim Ctrl As Control
Set lstObj = Worksheets("feuil1").ListObjects("Tableau1")
For X = 1 To Me.Frame1.Controls.Count
MsgBox X
Me.Frame1.Controls("Label" & X) = lstObj.HeaderRowRange.Cells(X).Value
Next X

'XX Boucle pour remplir X Labels selon Nbre de Cellules de la plage titre
'For Each c In lstObj.HeaderRowRange
 '   i = i + 1
  '  Me.MultiPage1.Pages(1).Controls("Label" & i) = c
'Next c
'XXX
End Sub
 
Re : VBA Range("Tableau1[#Headers]").Cells(, i)

bonjour,

sur excel 2003 ça ne marche pas non plus parce que:

Code:
For X = 1 To Me.Frame2.Controls.Count
nous donne pour 1 à 9

Code:
Me("Label" & X).Caption
nous donnera donc Label1, Label2, Label3 ...

Or les labels concernées sont nommés Label100, Label101, Label102 ...

solution: modifier Me("Label" & X).Caption en Me("Label" & X+99).Caption

pas eu le temps de voir la suite .

Bonne journée
 
Re : VBA Range("Tableau1[#Headers]").Cells(, i)

Bonjour à Tous
Paf merci pour ton aide c'est parfait.
J'ai encore un petit problème pour alimenter les textbox de la multipage 2.
Lorsque je double-click sur mon listBox il se positionne sur la Multipage 2.
Et les Textbox doivent alimenter.
Mais j'ai un décalage d'une colonne ?
Cela doit être un problème de listIndex mais je ne maitrise pas?
Merci de votre Aide.

Code:
Dim lstObj As ListObject
Dim Plage As Range
Dim X, Y
Dim nbcol
Dim Ctrl As Control
Private Sub UserForm_Initialize()
'xxx DECLARATION DES VARIABLES xxxxxxxxxxxxxxx
Set lstObj = Worksheets("BD Client").ListObjects("Tableau1")
nbcol = lstObj.HeaderRowRange.Count
MsgBox nbcol
Set Plage = lstObj.DataBodyRange

'xxxxxxxx ALIMENTATION DES LABELS DES MULTIPLAGES xxxxxxxxxxxxx
    With Me.Frame2
    Dim a, b, c, d
    a = 10    'Position Leff
    b = 100     'largeur Width
    c = 25      'Hauteur Height
    d = 5       'Position Top
        
        For X = 1 To Me.Frame2.Controls.Count
            'Me("Label" & X + 99).Caption = lstObj.HeaderRowRange.Cells(X)                  'Code OK
            'Me("Label" & X + 99).Caption = lstObj.HeaderRowRange.Columns(X).Value  'Code Ok
            With Me("Label" & X + 99)
                .Caption = lstObj.HeaderRowRange.Columns(X).Value
                .Left = a
                .Width = b
                .Height = c
                .Top = d
                .ForeColor = vbRed
            d = d + 30      'Décalage pour le positionnement du prochain Label
            End With
        Next X
    End With
    
            For Y = 1 To Me.Frame2.Controls.Count Step 2
                With Me("Label" & Y + 99)
                    .ForeColor = vbWhite
                End With
            Next Y
            
'xxxxxxxx ALIMENTATION DES TextBox DES MULTIPLAGES xxxxxxxxxxxxx
With Me.Frame3
    a = 1     'Position Leff
    b = 150  'largeur Width
    c = 25      'Hauteur Height
    d = 5       'Position Top
    For X = 1 To Me.Frame3.Controls.Count
          'MsgBox X
          With Me("TextBox" & X)
            .Left = a
            .Width = b
            .Height = c
            .Top = d
                d = d + 30      'Décalage pour le positionnement du prochain TextBox
            End With
    Next X
End With

'xxx ALIMENTATION DU LISTBOX xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    With Me.ListBox1
        .Clear
        .ColumnCount = nbcol
        .AddItem
        .List = Plage.Value
            For i = 1 To nbcol
                temp = temp & Plage.Columns(i).Width * 0.9 & ";"
            Next
        .ColumnWidths = temp
    End With

Me.MultiPage1.Value = 0

With Me.Frame1
.Caption = " F O R M U L A I R E   D E   R E C H E R C H E "
End With

With Me.Label1
Set Plage = Range("Tableau1[Code client]")
Reponse = Application.WorksheetFunction.Max(Plage)
.Caption = Format(Reponse, "00000")
.ForeColor = 3
End With

Dim Cel As Range
   Set mondico = CreateObject("Scripting.Dictionary")
    For Each Cel In Range("Tableau1[Type Client]")
     If Not mondico.Exists(Cel.Value) Then mondico.Add Cel.Value, Cel.Value
   Next Cel
   Me.ComboBox1.AddItem "*"
   For Each i In mondico.Items
     Me.ComboBox1.AddItem i
   Next
   Me.ComboBox1.ListIndex = 0
End Sub
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
    Me.MultiPage1.Value = 1     'Pour acceder la page 2 du multipages
    'With Me.Frame3
        ligne = Me.ListBox1.ListIndex + 2
        'MsgBox Me.ListBox1.ListCount

        'MsgBox Me.ListBox1.ColumnCount
        For X = 1 To Me.Frame3.Controls.Count
       ' Me ("TextBox" & X).Cancel
       
       Me("TextBox" & X).Value = Me.ListBox1.List(ligne, X)
        Next X
End Sub
Private Sub Image1_Click()
Unload Me
End Sub
Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    'Interdit la fermeture de l'USF avec la crois
    If CloseMode = vbFormControlMenu Then
        Cancel = True
        Me.Caption = "Click the CommandButton to close Me!"
    End If
    MsgBox "Vous devez appuyer sur le bouton Close sur la 1ère page"
End Sub
A+
 

Pièces jointes

Re : VBA Range("Tableau1[#Headers]").Cells(, i)

Re Bonjour,

Vous voulez répartir les différentes colonnes de la ligne de listbox sélectionnée par double clic dans les textbox


Si vous sélectionnez, par double clic, la première ligne de la listbox (son ListBox1.ListIndex vaut 0)
puis vous "copiez" dans des textbox les données de la ligne dont l'indice est 0 + 2


vous ne transférez donc pas les données de la lignes sélectionnée , puisque l'indice a changé !

il faut, soit modifier le contenu de la variable ligne en:
Code:
ligne = Me.ListBox1.ListIndex

soit modifier l'indice lors de la copie dans les textbox :
Code:
Me("TextBox" & X).Value = Me.ListBox1.List(Me.ListBox1.ListIndex , X)

Bon courage
 
Re : VBA Range("Tableau1[#Headers]").Cells(, i)

Re Bonsoir
Merci pour les INFOS.
Malheureusement les 2 codes de fonctionnent pas.

1 code :
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
ligne = Me.ListBox1.ListIndex
Me.MultiPage1.Value = 1 'Pour acceder la page 2 du multipages
For X = 1 To Me.Frame3.Controls.Count
Me("TextBox" & X).Value = Me.ListBox1.List(ligne, X)
Next X
End Sub

2 code :
Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)

Me.MultiPage1.Value = 1 'Pour acceder la page 2 du multipages
For X = 1 To Me.Frame3.Controls.Count


'Me("TextBox" & X).Value = Me.ListBox1.List(Me.ListBox1.ListIndex, X)

Next X
End Sub
Voir sur l'image ci-dessous :
Les informations dans les TextBox sont décalées?
La première TextBox devrait Le code client

Capture200.jpg
Merci
A1
 
Re : VBA Range("Tableau1[#Headers]").Cells(, i)

Rebonsoir
Il fallait juste rajouter x - 1 étant que la première colonne du ListBox = 0

Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Ligne = Me.ListBox1.ListIndex
Me.MultiPage1.Value = 1 'Pour acceder la page 2 du multipages
For X = 1 To Me.Frame3.Controls.Count
Me("TextBox" & X).Value = Me.ListBox1.List(Ligne, X - 1)
Next X
End Sub
Bonne soirée
A+
 
- 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

Réponses
5
Affichages
914
Réponses
2
Affichages
528
Réponses
15
Affichages
788
Retour