Bonjour aux héros de la programmation VBA |
Je travaille sur des bases de données musicales et souhaiterais effectuer l'action suivante: |
…présentation originale |
Woody Shaw – The Complete Muse Sessions Label: Mosaic Records MD7-255 |
Woody Shaw – Blackstone Legacy Label: Contemporary Records S7627/8 |
Woody Shaw – Song Of Songs Label: Contemporary Records S7632 |
Art Blakey And The Jazz Messengers – Anthenagin Label: Prestige P-10076 |
…présentation souhaitée |
Mosaic Records MD7-255 Woody Shaw – The Complete Muse Sessions |
Contemporary Records S7627/8 Woody Shaw – Blackstone Legacy |
Contemporary Records S7632 Woody Shaw – Song Of Songs |
Prestige P-10076 Art Blakey And The Jazz Messengers – Anthenagin |
Actuellement j'utilise cette formule qui fonctionne bien |
=DROITE(E52;NBCAR(E52)-CHERCHE("Label: ";E52)-6)&" "&(GAUCHE(E52;CHERCHE("Label: ";E52)-2)) |
Mais il faut la copier sur la cellule adjacente, couper, et collage spécial…et ce des centaines de fois car cette information discographique se situe à la fin de chaque cession |
Une macro VBA concoctée par une ou un spécialiste m'aiderait bien |
D'avance merci |
Mais il faut la copier sur la cellule adjacente, couper, et collage spécial…
Chaque session représente une dizaine de lignes ou plus, donc…Bonjour
Pourquoi ? Tu ne peux pas faire directement en tirant la formule vers le bas, ou avec un double-clic sur la croix dans l'angle inférieur droit de la cellule contenant la formule ?
@ plus
Si ça fonctionne avec les fonctions d'excel, ça fonctionnera avec un macro VBAre
bonjour
avec un peu de reflection tu te rendra compte que comme tes chaines n'ont pas la même structure il te sera impossible de faire quelque chose de 100% fonctionnel
tu a des chaine
blablabla-blablabla-blablabla
blablabla-blablabla:blablabla
et peut être a l'avenir l’intrus(":") faisant parti d'une éventuelle chaîne a garder
conclusion
en l’état fait un replace":" par le "-" et applique ta formule
mais voila ou la limite de l’intuitivité d'excel s’arrête
la moindre non concordance avec ce principe et c'est mort
Function reversetexte(cel As String) As String
Dim T1, T2, T3
If cel <> "" Then
tablo = Split(cel, "–")
T1 = tablo(0)
T2 = Split(tablo(1), "Label:")(0)
T3 = Split(tablo(1), "Label:")(1)
reversetexte = T3 & " " & T1 & " " & T2
Else
reversetexte = ""
End If
End Function
Un premier merci. La présentation approche le résultat souhaité. Je vais tenter de bidouiller pour conserver le tiret – et les 3 espaces entre la référence discographique et le titre proprement dit.re
voici une fonction vba que tu peux utiliser en formule
demoVB:Function reversetexte(cel As String) As String Dim T1, T2, T3 If cel <> "" Then tablo = Split(cel, "–") T1 = tablo(0) T2 = Split(tablo(1), "Label:")(0) T3 = Split(tablo(1), "Label:")(1) reversetexte = T3 & " " & T1 & " " & T2 Else reversetexte = "" End If End Function
Regarde la pièce jointe 1056253
Function reversetexte(cel As String) As String
Dim T1, T2, T3
If cel <> "" Then
tablo = Split(cel, "–")
T1 = tablo(0)&"-"
T2 = Split(tablo(1), "Label:")(0) &" Label"
T3 = Split(tablo(1), "Label:")(1)&" "
reversetexte = T3 & " " & T1 & " " & T2
Else
reversetexte = ""
End If
End Function
Un Grand Merci pour cette approche impeccable.re
VB:Function reversetexte(cel As String) As String Dim T1, T2, T3 If cel <> "" Then tablo = Split(cel, "–") T1 = tablo(0)&"-" T2 = Split(tablo(1), "Label:")(0) &" Label" T3 = Split(tablo(1), "Label:")(1)&" " reversetexte = T3 & " " & T1 & " " & T2 Else reversetexte = "" End If End Function
Function reversetexte(cel As String) As String
Dim T1, T2, T3
If cel <> "" Then
if not cel like"*-*" or not cel like"*Label*" then reversetexte="#Invalid Chain!!":exit function
tablo = Split(cel, "–")
T1 = tablo(0)
T2 = Split(tablo(1), "Label:")(0)
T3 = Split(tablo(1), "Label:")(1)
reversetexte = T3 & " " & T1 & "-" & T2 &" Label"
Else
reversetexte = ""
End If
End Function
Chaque session représente une dizaine de lignes ou plus, donc…
Merci quand même