Très mignon ! Souligner une partie du texte de la cellule par VBA

Ca donne ceci comme exemple :

Sub test()
Range("A1") = "Et on souligne seulement une partie du texte."
Range("A1").Characters(16, 13).Font.Underline = True
End Sub

On peut aussi effectuer d'autres formatages (merci à Michel) :
Sub PartieTexte()
   Range("A1") = "Et on souligne seulement une partie du texte."
   Range("A1").Characters(16, 13).Font.Underline = True
   Range("A1").Characters(16, 13).Font.ColorIndex = 3
   Range("A1").Characters(16, 13).Font.Size = 15
End Sub

A bientôt

Source : http://www.mrexcel.com/forum/excel-questions/715012-visual-basic-applications-underline-only-portions-text-single-cell.html

Gaetan

Dernier commentaire... :-)

Bonjour à tous,

Je dois dire que ca fait du bien des commentaires comme celui-ci 😉

---

C’est sans tartufferie que je conseille les CDs de formation de Gaëtan.
J’ai les tout derniers et sincèrement on les bossant régulièrement, on progresse sans commune mesure.
N’hésitez pas à vous lancer dans la programmation VBA sur Excel même des petites macro que vous aurez créées vous aideront à franchir le pas et à les étoffer dans le temps.
N’hésitez pas à piquer à Gaëtan quelques lignes de code de ces cours pour voir ce que cela fait dans vos macro. N’ayez pas peur !
Au mieux quand cela marche, on est heureux comme des gamins le matin du 25 décembre et au pire…..On est super frustré face à cette stupide machine qui n’a pas fait le moindre effort pour essayer de comprendre ce que vous tentiez de lui demander. 8-D
Lancez-vous et bon courage !
Romuald

---

A bientôt

Gaetan

[MISE A JOUR] Très belle fonction pour concaténer une plage

Note : je viens d'éditer ce post pour prendre en compte les commentaires ci-dessous.
Merci à tous.

Vous pouvez télécharger ici un fichier exemple.

Cette fonction permet de concaténer une plage avec un séparateur.


Function ConcatenateRange(ByVal cell_range As range, _
Optional ByVal seperator As String) As String
Dim cell As range
Dim newString As String
Dim cellArray As Variant
Dim i As Long, j As Long

cellArray = cell_range.Value

For i = 1 To UBound(cellArray, 1)
For j = 1 To UBound(cellArray, 2)
If Len(cellArray(i, j)) <> 0 Then
newString = newString & (seperator & cellArray(i, j))
End If
Next
Next

If Len(newString) <> 0 Then
newString = Right$(newString, (Len(newString) - Len(seperator)))
End If

ConcatenateRange = newString

End Function

Si vous utilisez CHR(10) comme séparateur, ca va mettre les différents éléments les uns en dessous des autres (voir la fonction ConcatenateRangeRetourLigne du fichier).
Il faut aussi activer le retour à la ligne automatique pour cette cellule :

concatener-plage-renvoi-automatique-a-la-ligne

Pour utiliser cette fonction, copiez le code dans un module VBA, puis dans Excel, vous tapez la fonction en commençant par =.

Voici une vidéo qui explique comment faire à partir d'un fichier vide :

A bientôt

Source :
http://stackoverflow.com/questions/8135995/how-to-merge-all-column-into-one-cell-in-excel

Gaëtan