XL pour MAC Additionner deux nombres d'une même cellule séparés par alt+enter

elodie.fc33

XLDnaute Nouveau
Bonjour,

Je dois additionner deux nombres inscrits dans une même cellule affichés en colonne (alt+enter) dans une colonne à droite
1799,00
2527,00

Je dois aussi coller chacun de ces nombres dans deux colonnes différentes, en sachant que ces nombres n'ont pas le même nombre de chiffres...

Attention, dans certaines cellules, il n'y a qu'un seul nombre...

Merci pour votre aide
 

Pièces jointes

  • Panier moyen test.xlsx
    203.4 KB · Affichages: 38

soan

XLDnaute Barbatruc
Inactif
Bonsoir job75,

dans ton code VBA, il y a :

.Resize(d.Count) = Application.Transpose(d.keys) 'Transpose est limitée à 65536 lignes

alors si y'a plus de 65536 lignes, ça ne peut plus marcher ? c'est bien dommage ! 😭 mébon, faut reconnaître que dans la majorité des cas, y'a moins de 65537 lignes ! toutefois, au cas où ça dépasserait, comme Microsoft a laissé tomber VBA et ne veut plus le faire évoluer, ne pourrais-tu pas écrire une fonction Transpose() qui n'a plus cette limite ? si tu y arrives, tu pourrais alors la fournir en tant que macro complémentaire ! :)

peut-être aussi qu'un autre expert comme Yeahou ou patricktoulon (salut) pourraient le faire ? ou encore un des nombreux bêta-testeurs d'Excel ? 🍀

soan
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
bonsoir a tous
@soan un truc du genre

VB:
function TransposeDico(d)
Dim Tablo(),i&,elem
redim(Tablo(1 to d.count,1 to 1)
for each elem in d
i=i+1
tablo(i,1)=elem
next
end function

et si tu veux les keys et item de D
Code:
function TransposeDico(d)
Dim Tablo(),i&,elem
(Tablo(1 to d.count,1 to 2)
for each elem in d
i=i+1
tablo(i,1)=elem:tablo(i,2)=d(elem)
next
cela dit pour gagner en rapidité vous pouvez remplir un tableau en même temps que le dico ça vous fait sauter la boucle de transposition , surtout si la liste est longue justement

à noter ici qu'avec mon astuce match on peut carrément se passer de dico et créer le tableau 2 dim directement et sans doublons
 

patricktoulon

XLDnaute Barbatruc
re
transposer un array 1dim sans doublons et sans dico
VB:
Sub test()
    x = Split("toto,titi,riri,toto,fifi,loulou,riri,toto,paul,pierre,toto,jacques,titi,truc", ",")
    x = TransposeX(x)
    Cells(1, 1).Resize(UBound(x), 1) = x
End Sub

Function TransposeX(t)
    Dim a&, i&, c&, tabl()
    ReDim tabl(1 To UBound(t) + IIf(LBound(t) = 0, 1, 0), 1 To 1)
    For Each elem In t
        a = a + 1: x = Application.Match(elem, t, 0)
        If x = a Then c = c + 1: tabl(c, 1) = elem
    Next
    TransposeX = tabl
End Function
a noter là aussi pour ne pas m'ennuyer avec l'option base (1/0) je boucle for each et incremente le c selon x=a
ce qui fait que 'on peut injecter un array en base 1 ou 0
a la sortie le tableau est toujours en base 1
 

Discussions similaires

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 871
dernier inscrit
Maïmanko