@
@+Thierry
Guest
Bonjour tout le monde.
Non seulement je n'ai pas de temps à vous consacrer cette semaine mais de plus je vais poser une question... (pour une fois !)
Donc voilà ce que je suis en train de faire :
Création d'une variable en tableau pour construire une Liste dans une ListBox de UserForm... Pas de vrai souci (cette private sub est lancée à l'initialisation d'USF2, lequel s'ouvre aprés qu'un AutoFilter ait été appliqué par le USF1
Pour info Mon "TabT" est déclaré dans un Module Standard en "Public TabT() As Variant" (il y a dedans des dates, des Currency, des Strings enfin de tout !)
Private Sub ListBoxDate_Create()
Dim Cell As Range
Dim r As Range
Dim i As Integer
ListBoxDate.ColumnCount = 2
ListBoxDate.ColumnWidths = "2 cm; 2 cm"
ListBoxDate.Clear
Set r = Sheets(1).Range("N2", [N65536].End(xlUp))
Set r = r.SpecialCells(xlCellTypeVisible)
ReDim TabT(0 To r.Count, 1 To 8)
For Each Cell In r
TabT(i, 1) = Format(Cell.Value, "DD/MM/YYYY")
TabT(i, 2) = Format(Cell.Offset(0, 1).Value, "DD/MM/YYYY")
TabT(i, 3) = Cell.Offset(0, -10).Value
TabT(i, 4) = Cell.Offset(0, 5).Value
TabT(i, 5) = Cell.Offset(0, -13).Value
TabT(i, 6) = Cell.Offset(0, -12).Value
TabT(i, 7) = Cell.Offset(0, -11).Value
TabT(i, 8) = Cell.Offset(0, -5).Value
i = i + 1
Next
Me.ListBoxDate.List = TabT
End Sub
Donc à l'issue de cette procédure j'ai bien ma ListboxDate avec deux colonnes de date, Nickel Chrome.
Pour un évènement click sur cette ListBoxDate, je fais différentes choses et je lance cette macro par laquelle je dois remonter des données sur différentes TextBoxes... Comme Ceci
Private Sub InvoiceRecapTabT()
Dim ValMin As Integer
Dim ValSup As Integer
Dim Somme As Currency
Dim i As Integer
Dim S As Integer
ValMin = LBound(TabT)
ValSup = UBound(TabT)
For i = ValMin To ValSup
If TEXTBOXCRITERE= TabT(i, 3) Then
Somme = Somme + TabT(i, 4)
S = S + 1
Y = TabT(i, 5)
M = TabT(i, 6)
D = TabT(i, 7)
End If
Next i
TextBoxUSD = Format(Somme, "# ##0.00")
TextBoxSplit = S
TextBoxDoc = Format(Y, "0000") & " " & Format(M, "00") & " " & Format(D, "0000")
ICI ====> The Problème :
Jusque là "tutti va bene"......... MAIS (of course !!) j'ai besoin de savoir Où je suis dans mon "i" pour un autre champs qui lui nécessite de savoir rééllement à quelle ligne de mon tableau il y a matching avec cette donnée "TEXTBOXCRITERE" entrée dans une autreTextBox...
Pour l'instant je n'arrive pas à trouver comment retourner l'index dans mon Dynamique Array"TabT" quand il y a Matching avec TEXTBOXCRITERE... Pour l'instant je finte comme ceci en utilisant l'index de ma ListBoxDate qui possède donc (heureusement!!!) le même nombre de ligne que "TabN" et qui mon retourne bien cette cléf unique dans le TextBoxIDRef...
Dim ii As Integer
For ii = 0 To ListBoxDate.ListCount - 1
If ListBoxNarration.Selected(ii) Then
TextBoxIDref = TabN(ii, 8)
End If
Next ii
NB Malgré les apparence, je ne travaille pas en MultiSelect, c'est juste le seul moyen que j'ai trouvé pour retourner cet Index de position de Ligne sur TabN... Et je pense qu'il y a plus simple.
Donc je récapitule ma question Comment récupérer l'index de ligne quand il y a matching sur un des items d'un dynamique Array en tableau multi-colonnes...
Par avance merci à ceux qui auront un moment pour m'éclairer, car comme disais une fois STéphane, la gestion des variables en Tableau est assez peu documentée d'exemple.
Bon App
@+Thierry
Non seulement je n'ai pas de temps à vous consacrer cette semaine mais de plus je vais poser une question... (pour une fois !)
Donc voilà ce que je suis en train de faire :
Création d'une variable en tableau pour construire une Liste dans une ListBox de UserForm... Pas de vrai souci (cette private sub est lancée à l'initialisation d'USF2, lequel s'ouvre aprés qu'un AutoFilter ait été appliqué par le USF1
Pour info Mon "TabT" est déclaré dans un Module Standard en "Public TabT() As Variant" (il y a dedans des dates, des Currency, des Strings enfin de tout !)
Private Sub ListBoxDate_Create()
Dim Cell As Range
Dim r As Range
Dim i As Integer
ListBoxDate.ColumnCount = 2
ListBoxDate.ColumnWidths = "2 cm; 2 cm"
ListBoxDate.Clear
Set r = Sheets(1).Range("N2", [N65536].End(xlUp))
Set r = r.SpecialCells(xlCellTypeVisible)
ReDim TabT(0 To r.Count, 1 To 8)
For Each Cell In r
TabT(i, 1) = Format(Cell.Value, "DD/MM/YYYY")
TabT(i, 2) = Format(Cell.Offset(0, 1).Value, "DD/MM/YYYY")
TabT(i, 3) = Cell.Offset(0, -10).Value
TabT(i, 4) = Cell.Offset(0, 5).Value
TabT(i, 5) = Cell.Offset(0, -13).Value
TabT(i, 6) = Cell.Offset(0, -12).Value
TabT(i, 7) = Cell.Offset(0, -11).Value
TabT(i, 8) = Cell.Offset(0, -5).Value
i = i + 1
Next
Me.ListBoxDate.List = TabT
End Sub
Donc à l'issue de cette procédure j'ai bien ma ListboxDate avec deux colonnes de date, Nickel Chrome.
Pour un évènement click sur cette ListBoxDate, je fais différentes choses et je lance cette macro par laquelle je dois remonter des données sur différentes TextBoxes... Comme Ceci
Private Sub InvoiceRecapTabT()
Dim ValMin As Integer
Dim ValSup As Integer
Dim Somme As Currency
Dim i As Integer
Dim S As Integer
ValMin = LBound(TabT)
ValSup = UBound(TabT)
For i = ValMin To ValSup
If TEXTBOXCRITERE= TabT(i, 3) Then
Somme = Somme + TabT(i, 4)
S = S + 1
Y = TabT(i, 5)
M = TabT(i, 6)
D = TabT(i, 7)
End If
Next i
TextBoxUSD = Format(Somme, "# ##0.00")
TextBoxSplit = S
TextBoxDoc = Format(Y, "0000") & " " & Format(M, "00") & " " & Format(D, "0000")
ICI ====> The Problème :
Jusque là "tutti va bene"......... MAIS (of course !!) j'ai besoin de savoir Où je suis dans mon "i" pour un autre champs qui lui nécessite de savoir rééllement à quelle ligne de mon tableau il y a matching avec cette donnée "TEXTBOXCRITERE" entrée dans une autreTextBox...
Pour l'instant je n'arrive pas à trouver comment retourner l'index dans mon Dynamique Array"TabT" quand il y a Matching avec TEXTBOXCRITERE... Pour l'instant je finte comme ceci en utilisant l'index de ma ListBoxDate qui possède donc (heureusement!!!) le même nombre de ligne que "TabN" et qui mon retourne bien cette cléf unique dans le TextBoxIDRef...
Dim ii As Integer
For ii = 0 To ListBoxDate.ListCount - 1
If ListBoxNarration.Selected(ii) Then
TextBoxIDref = TabN(ii, 8)
End If
Next ii
NB Malgré les apparence, je ne travaille pas en MultiSelect, c'est juste le seul moyen que j'ai trouvé pour retourner cet Index de position de Ligne sur TabN... Et je pense qu'il y a plus simple.
Donc je récapitule ma question Comment récupérer l'index de ligne quand il y a matching sur un des items d'un dynamique Array en tableau multi-colonnes...
Par avance merci à ceux qui auront un moment pour m'éclairer, car comme disais une fois STéphane, la gestion des variables en Tableau est assez peu documentée d'exemple.
Bon App
@+Thierry