traitement complexe dans une cellule

coline741

XLDnaute Junior
Bonjour à toutes, tous et à chacun,

Je gère des dizaines de discographies d'artistes de jazz, chacune dans un fichier excel.

Dans ce fichier, chaque enregistrement est identifié par une référence de label située dans la partie gauche de la cellule, le titre du vinyle ou du CD dans la partie droite.

Exemple souhaité:
* Clef MGC 4007, MGC 674; Verve MGV 8060; ARS G 419 Various Artists - The Jazz Scene
Je peine sur une macro qui permettrait un présentation comme ci-dessus (hors couleur), sachant que la partie label est séparée de la partie titre par 3 espaces

L'espace étant le séparateur par défaut, je ne sais pas si on peut y arriver !

Voici la macro actuelle :

Sub Macro3()
Dim Cel As Range
For Each Cel In Selection
Cel.Characters(18, 60).Font.Italic = True
Next Cel
End Sub

Pour cette macro les arguments 18, et 60 sont rentrés manuellement dans la fonction Characters(). Evidemment le résultat suivant ne convient pas.

* Clef MGC 4007, MGC 674; Verve MGV 8060; ARS G 419 Various Artists - The Jazz Scene

Afin d'illustrer mon propos, je vous ai mis un fichier en pièce jointe pour le cas que je souhaiterais traiter.

A tous les Vbéistes intéressés par ce sujet, merci d'avance

signé, un chiotteur de 68 ans qui merdoie avec excel 2007

 

Pièces jointes

  • discography.xlsm
    22.6 KB · Affichages: 9

sousou

XLDnaute Barbatruc
Bonjour,
Il semble et si j'ai tout compris, que ta séparation ne soit pas ce que tu pense!!
entre les deux espaces chr(32) il y a un chr(160) pas trop ce que c'est!
alors:
Function chercheg(a)
n = InStr(1, a, Chr(160))
chercheg = Left(a, n)
End Function
Function cherched(a)
n = InStr(1, a, Chr(160))
cherched = Right(a, Len(a) - n)
End Function
 

Paf

XLDnaute Barbatruc
Bonjour,

trop tard !
même constat que sousou

à tester

VB:
Dim Cel As Range, X1 As Long, X2 As Integer, Cible As String
  For Each Cel In Selection
    Cible = Chr(32) & Chr(160) & Chr(32)
    X1 = InStr(Cel, Cible)
    X2 = Len(Cel) - X1 + 1
    If X1 > 0 Then Cel.Characters(X1, X2).Font.Italic = True
  Next Cel

A+
 

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 944
Membres
101 849
dernier inscrit
florentMIG