XL 2013 ma fonction perso (multiBase0ToBase1) ne fonctionne plus correctement

patricktoulon

XLDnaute Barbatruc
re bonjour a tous
ben aujourd'hui c'est le jour des bizarreries
j'ai ma fonctionMagic perso base 0 to base 1 ( en une ligne) qui ne fonctionne plus sur 2013
en effet elle me restitue mon tableau avec plus de colonne
le columns.count d'une feuille pour être précis
VB:
Function Base0ToBase1 (tbl)
    Base0ToBase1 = Application.Index(tbl, Evaluate("ROW(1:" & UBound(tbl) + 1 & ")"), Evaluate("column(1:" & Ubound(tbl)+1 & ")"))
End Function

pour la tester
VB:
Sub test()
    Dim tablo(5, 10), tblBase1
    texte = "ligne 1 index = " & LBound(tablo) & vbCrLf & "colone 1 index = " & LBound(tablo, 2)
    texte = texte & vbCrLf & " derniere ligne  index = " & UBound(tablo) & vbCrLf & "derniere colonne  index = " & UBound(tablo, 2)
    MsgBox texte

    tblBase1 = Base0ToBase1 (tablo)
    texte = "ligne 1 index = " & LBound(tblBase1) & vbCrLf & "colone 1 index = " & LBound(tblBase1, 2)
    texte = texte & vbCrLf & " derniere ligne  index = " & UBound(tblBase1) & vbCrLf & "derniere colonne  index = " & UBound(tblBase1, 2)
    MsgBox texte

End Sub
🤔🤔🤔🤔
 
Solution
purée je me suis encore bien levé moi ce matin
je ne fait que des sottises
c'est bon c''est corrigé c'est les lettres de colonnes qu'il faut pas les numero dans le 2d evaluate

VB:
Sub test()
    Dim tablo(5, 10), tblBase1
    texte = "ligne 1 index = " & LBound(tablo) & vbCrLf & "colone 1 index = " & LBound(tablo, 2)
    texte = texte & vbCrLf & " derniere ligne  index = " & UBound(tablo) & vbCrLf & "derniere colonne  index = " & UBound(tablo, 2)
    MsgBox texte

    tblBase1 = Base0ToBase1(tablo)
    texte = "ligne 1 index = " & LBound(tblBase1) & vbCrLf & "colone 1 index = " & LBound(tblBase1, 2)
    texte = texte & vbCrLf & " derniere ligne  index = " & UBound(tblBase1) & vbCrLf & "derniere colonne  index = " & UBound(tblBase1, 2)...

patricktoulon

XLDnaute Barbatruc
purée je me suis encore bien levé moi ce matin
je ne fait que des sottises
c'est bon c''est corrigé c'est les lettres de colonnes qu'il faut pas les numero dans le 2d evaluate

VB:
Sub test()
    Dim tablo(5, 10), tblBase1
    texte = "ligne 1 index = " & LBound(tablo) & vbCrLf & "colone 1 index = " & LBound(tablo, 2)
    texte = texte & vbCrLf & " derniere ligne  index = " & UBound(tablo) & vbCrLf & "derniere colonne  index = " & UBound(tablo, 2)
    MsgBox texte

    tblBase1 = Base0ToBase1(tablo)
    texte = "ligne 1 index = " & LBound(tblBase1) & vbCrLf & "colone 1 index = " & LBound(tblBase1, 2)
    texte = texte & vbCrLf & " derniere ligne  index = " & UBound(tblBase1) & vbCrLf & "derniere colonne  index = " & UBound(tblBase1, 2)
    MsgBox texte

End Sub
Function Base0ToBase1(tbl)
       Base0ToBase1 = Application.Index(tbl, Evaluate("ROW(1:" & UBound(tbl) + 1 & ")"), Evaluate("column(" & Cells(1).Resize(, UBound(tbl, 2) + 1).EntireColumn.Address(0, 0) & ")"))
End Function

pour info(pour ceux qui ne connaissent pas)
créer un array 2 dim (10 lignes sur 1 colonne avec les nombre dedans )
Code:
x=Evaluate("ROW(1:" & 10 + 1 & ")")
msgbox x(2,1)

créer un array 1 dim de 10 item avec les chiffres dedans
Code:
x=Evaluate("column(A:k )")
msgbox x(2)

on peut aussi evaluer des row en le transposant pour l'array des colonnes
VB:
Function Base0ToBase1_V2(tbl)
    With Application: Base0ToBase1_V2 = .Index(tbl, Evaluate("ROW(1:" & UBound(tbl) + 1 & ")"), .Transpose(Evaluate("ROW(1:" & UBound(tbl, 2) + 1 & ")"))): End With
End Function
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 075
Messages
2 085 080
Membres
102 772
dernier inscrit
bluetesteur