Mike-31
7434Messages postés
17 février 2008Date d'inscription
30 mai 2012Dernière intervention
31 janv. 2011 à 22:52
Re,
La demande est pertinente, et pour le fun en supposant que les données sont en colonne A formatées suivant la demande initiale, (référence et prix) exemple produit machin chose 2465,30 ce code permet de modifier les données sur place en plaçant un retour ligne avant le prix quelque soit la longueur de la chaine, en colorisant en rouge et en gras le retour ligne. Si après le prix se trouve l'unité monétaire ex produit machin chose 2465,30 € il convient d'apporter une légére modif au code
Private Sub CommandButton1_Click()
Dim tabLignes() As Long, i As Long, j As Long, tmp As Long
Dim Debut As Byte
Dim Cell As Range
Dim tmpStr() As String
Application.ScreenUpdating = False
For Each Cell In Range("A1:A" & Range("A65536").End(xlUp).Row)
Debut = InStr(1, Cell, " " & StrReverse(Split(StrReverse(Cell.Text), Chr(32))(0)))
If Not Debut = 0 Then
Cell = Left(Cell, Debut) & Chr(10) & Right(Cell, Len(Cell) - Debut)
End If
tmpStr = Split(Cell.Text, Chr(10))
ReDim tabLignes(1 To UBound(tmpStr) + 1, 1 To 2)
For i = LBound(tmpStr) To UBound(tmpStr)
tmp = 0
For j = LBound(tmpStr) To i - 1
tmp = tmp + Len(tmpStr(j))
Next j
tabLignes(i + 1, 1) = tmp + 1 + i
tabLignes(i + 1, 2) = Len(tmpStr(i))
Next i
Cell.Characters(tabLignes(2, 1), tabLignes(2, 2)).Font.ColorIndex = 3
Cell.Characters(tabLignes(2, 1), tabLignes(2, 2)).Font.Bold = True
Next Cell
Application.ScreenUpdating = True
[A1].Select
End Sub
A+
Mike-31
Une période d'échec est un moment rêvé pour semer les graines du savoir.
Pour mettre le texte de la deuxième ligne en gras et caractère 18
Sub Etiquette() Dim Prix As Currency Dim Libelle As String Libelle = "Boite de conserve" Prix = 10.56 With Range("A1") .Value = Libelle & Chr(10) & Prix With .Characters(Start:=Len(Libelle) + 2).Font .Size = 18 .Bold = True End With End With End SubMytå
modification : Erreur lors de la recopie du code