Fianchetto
Messages postés41Date d'inscriptiondimanche 13 février 2005StatutMembreDernière intervention14 décembre 2006
-
23 nov. 2006 à 17:27
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 2008
-
24 nov. 2006 à 15:47
Bonjour à tous,
je cherche à pouvoir effectuer une mise en forme assez avancée d'une cellule Excel via le code VBA. Cela inclut principalement des :
- sauts à la ligne,
- tabulations,
- alignements (gauche, droite),
- choix du gras, italique, souligné.
Pour le retour chariot, Chr(10) fait bien l'affaire, pour les tabulations je n'ai pas trouvé la commande alors je passe par des espaces. Pour l'alignement et le choix du gras, mon problème pour une fonction comme : MaCellule.Font.FontStyle "Bold" c'est qu'elle met toute la cellule à gras. Il existe donc la fonction MaCellule.Characters(debut, longueur).Font.FontStyle "Bold" qui permet de passer seulement les caractères choisis en gras. Mais je ne peux pas savoir les variables debut et longueur à l'avance ! Mais je sais quelle partie du texte je souhaite changer.
Bref, je cherche une astuce du genre html comme mon texte à mettre en gras.
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 23 nov. 2006 à 18:49
Salut,
je confirme, vbTab pour la Tabulation mais PAS Chr(10) pour le saut de ligne, c'est vbCrLf
Chr(10) = nouvelle lignealors que vbCrLf Chr(10) + Chr(13) nouvelle ligne + retour chariot
Pour l'alignement, gras, italique, etc... rien ne vaut un enregistrement en direct grâce à l'enregistreur de macro.
@++
<hr width="100%" size="2" />
--Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
Vous n’avez pas trouvé la réponse que vous recherchez ?
Fianchetto
Messages postés41Date d'inscriptiondimanche 13 février 2005StatutMembreDernière intervention14 décembre 2006 24 nov. 2006 à 13:43
Ok, merci à vous pour les précisions notamment sur les vbCrLf et vbTab.
Je n'avais pas pensé à la solution de Drike pour la recherche dans une chaine de caractères avec InStr, donc c'est un bon point. Mais seulement pour les chaines fixes en fait.Le top serait d'avoir des expressions régulières, mais je ne crois pas que VB puisse le faire. A savoir ce que je cherche à faire par exemple, c'est mettre en gras une partie d'un texte de ce genre :
<hr />
texte normal texte normal texte normal texte normal texte normal texte normal
TexteAMettreEnGrasQuiEstToujoursIdentique1 TexteVariableAMettreEnGras TexteAMettreEnGrasQuiEstToujoursIdentique2
texte normal texte normal texte normal texte normal texte normal texte normal
<hr />
Pour prendre un exemple bidon, on pourrait avoir cela :
texte normal : Bonjour Monsieur
TexteAMettreEnGrasQuiEstToujoursIdentique1 : Aujourd'hui n'oubliez pas notre rdv à
TexteVariableAMettreEnGras : Saint Cuq les deux Eglises à 14h30
TexteAMettreEnGrasQuiEstToujoursIdentique2 : chez notre client.
C'est pourquoi je peux difficilement passer par l'enregistreur de macro et par la fonction InStr( sauf si celle-ci accepte des caractères génériques). Je sèche un peu ...
Fianchetto
Messages postés41Date d'inscriptiondimanche 13 février 2005StatutMembreDernière intervention14 décembre 2006 24 nov. 2006 à 14:04
oui tu as peut etre raison ... en fait
debut = InStr(1, TaString, TexteVariableAMettreEnGras , vbTextCompare)
devrait ressemble a quelque chose dans le genre :
debut = InStr(1, TaString, mavariable1 & " et " & mavariable2 , vbTextCompare)
par contre, je dois faire cela sur plusieurs centaines (ptet milliers) de lignes de mon tableau Excel, et chaque ligne ayant une cellule contenant le texte bien compliqué qui précede, ca risque de pas être du gateau, vu toutes les opération de recherche InStr faisant intervenir des variables !