Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Plusieurs formats dans une seule cellule avec macro ?

  • Initiateur de la discussion Initiateur de la discussion fb62840
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

fb62840

XLDnaute Impliqué
Bonjour à toutes et à tous,

J'aimerais savoir s'il est possible d'appliquer des formats différents dans une même cellule par macro ?

Précision :
Je collecte des infos sur une feuille, je stocke les données dans une array, puis j'agrège les données dans une cellule les unes sous les autres avec un retour chariot.

J'ai 3 infos à formater :
- une adresse mail
- et deux numéro de téléphone

Merci pour votre aide.
 
Re : Plusieurs formats dans une seule cellule avec macro ?

Salut fb62840,

Oui c'est possible de formater une cellule caractère par caractère, mais ça dépend de ce que tu veux faire.

Un petit fichier de ce que tu souhaites comme résultats nous aiderait à t'aider.
 
Re : Plusieurs formats dans une seule cellule avec macro ?

Bonjour,

Merci pour la réponse.

En pièce-jointe le fichier demandé.

C'est probablement dans cette portion de code que je pourrais agir pour obtenir de formater la variable tablo(i, 8) afin d'en faire une adresse mail.

Code:
If Tablo(I, 1) <> "" Then
        Wkb.Sheets(I - 1).Name = Tablo(I, 1)
        Wkb.Sheets(I - 1).Range("C1").Value = Tablo(I, 1) & " " & Tablo(I, 2) & vbLf & Tablo(I, 3) & " " & Tablo(I, 4) & " " & Tablo(I, 5) & vbLf & Tablo(I, 8) 'Nom et prénom, adresse et adresse mail du Candidat

Explications :
onglet base : éléments qui seront repris dans une array, et parmi ceux là une adresse mail
onglet résultat : feuille créée par macro avec affectation des valeurs dans l'array aux différentes cellules de la feuille
Problème : le lien hypertexte n'est pas actif, et j'ai besoin qu'il le soit (dans un format standard, c'est à dire bleu souligné s'il est actif, et autre couleur s'il a été cliqué).

Pour information : toutes les infos du classeurs sont fictives.

Merci pour votre aide
 

Pièces jointes

Re : Plusieurs formats dans une seule cellule avec macro ?

En fait ce n'est pas du formatage que tu as à appliquer.
Tu souhaites ajouter un lien hypertext, le seul moyen que je connaisse en vba est:

ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="mailto:"& email, TextToDisplay:=nomprénom & Chr(10) & adresse & Chr(10) & email

A noter que c'est toute la cellule qui à le lien et non le texte dans la cellule.
 
Re : Plusieurs formats dans une seule cellule avec macro ?

Bonjour,

Merci pour la solution.
En effet, on peut affecter le lien à l'ensemble de la cellule mais ça ne convient pas car dans ce cas la mise en forme "html" concerne tous les éléments contenu dans la cellule.

Il me semblait qu'il devait être possible de retrouver dans la cellule (à partir de la fin de son contenu) l'adresse email, qui est en fait "le dernier mot" de la chaîne et d'appliquer à cette partie de chaîne le format html, mais je suis certainement dans l'erreur.

merci encore.
 
Re : Plusieurs formats dans une seule cellule avec macro ?

En fait on peut appliquer a posteriori une mise en forme caractère de la cellule, mais c'est la cellule qui à le lien hypertexte et non seulement le texte de l'adresse.
Ci-dessous un bout de code qui s'applique à la cellule C1 telle qu'elle est dans ton fichier:
Code:
Worksheets("Résultat de la macro").Hyperlinks.Add Anchor:=Range("C1"), Address:="mailto:aaronmabel@mail.fr", TextToDisplay:="Aaron Mabel" & Chr(10) & "1 rue Agapet 59000 Lille" & Chr(10) & "aaronmabel@mail.fr"

    With ActiveCell.Characters(Start:=1, Length:=0).Font
        .Name = "Arial"
        .FontStyle = "Normal"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleSingle
        .ColorIndex = 5
        .TintAndShade = 0
        .ThemeFont = xlThemeFontNone
    End With
    With ActiveCell.Characters(Start:=1, Length:=36).Font
        .Name = "Arial"
        .FontStyle = "Normal"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleNone
        .ThemeColor = xlThemeColorLight1
        .TintAndShade = 0
        .ThemeFont = xlThemeFontNone
    End With
    With ActiveCell.Characters(Start:=37, Length:=19).Font
        .Name = "Arial"
        .FontStyle = "Normal"
        .Size = 10
        .Strikethrough = False
        .Superscript = False
        .Subscript = False
        .OutlineFont = False
        .Shadow = False
        .Underline = xlUnderlineStyleSingle
        .ColorIndex = 5
        .TintAndShade = 0
        .ThemeFont = xlThemeFontNone
    End With
Bien sûr le code est a adapter à ta macro (décompte du nombre de caractères...).
 
Re : Plusieurs formats dans une seule cellule avec macro ?

Bonjour,

Merci pour ce code, je vais tester.

Je suis finalement parvenu à mes fins,

Premièrement en utilisant le contenu de la variable pour rechercher la String dans la cellule et la mettre en forme,
J'obtiens ainsi "un simili" lien, c'est à dire qu'il est bleu et souligné, mais il n'est pas actif.

Code:
For Each cel In Range("C1") 'Cellule qui contient le nom, le prénom, l'adresse, et enfin l'adresse mail
    If InStr(cel, Tablo(I, 8)) Then ' je recherche dans la cellule la chaîne de caractère de Tablo(I, 8) qui est l'adresse mail
    a = InStr(cel, Tablo(I, 8))
    With cel.Characters(Start:=a, Length:=Len(Tablo(I, 8))).Font 'J'utilise la valeur de la longueur de Tablo(I, 8) pour définir la 'portion à mettre en forme
          .Color = 16711680
          .Underline = xlUnderlineStyleSingle
    End With
     End If

Deuxièmement, pour rendre actif le clic sur l'adresse mail, je dessine une zone cliquable et j'affecte comme lien hypertexte le contenu de la variable Tablo(I, 8), ainsi tout se passe "comme si" c'était effectivement un lien.

Code:
ActiveSheet.Shapes.AddShape(msoShapeRectangle, 429#, 45#, 264#, 15#).Select
ActiveSheet.Hyperlinks.Add Anchor:=Selection.ShapeRange.Item(1), Address:=Tablo(I, 8)
Selection.ShapeRange.Fill.Visible = msoFalse
Selection.ShapeRange.Line.Transparency = 0#
Selection.ShapeRange.Line.Visible = msoFalse
Range("A1").Select

Le plus délicat étant alors de définir avec une extrême précision la position de la zone, et donc naturellement de protéger la feuille et la zone.

Bonne fin d'après-midi
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…