begin process at 2012 02 14 20:42:58
  Trouver un code source :
 
dans
 
Accueil > Forum > 

VB.NET et VB 2005

 > 

Divers

 > 

Trucs & Astuces

 > 

Mise en forme cellule Excel


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Mise en forme cellule Excel

jeudi 23 novembre 2006 à 17:27:16 | Mise en forme cellule Excel

Fianchetto

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 <bold>mon texte à mettre en gras</bold>.

Quelqu'un aurait il une idée ? Merci d'avance


jeudi 23 novembre 2006 à 17:33:33 | Re : Mise en forme cellule Excel

Drikce06

Membre Club
Salut pour bold essaye de voir avec la fonction InStr() et pour la tabulation VbTab.

 Drikce 06
jeudi 23 novembre 2006 à 17:42:38 | Re : Mise en forme cellule Excel

Drikce06

Membre Club

Private Sub CommandButton1_Click()

Dim TaString As String
Dim TaStringBold As String
Dim debut As Integer
Dim longueur As Integer

TaString = Range("O2").Value  'ici "salut les gens"
TaStringBold = "les"
debut = InStr(1, TaString, TaStringBold, vbTextCompare)
longueur = Len(TaStringBold)
Range("O2").Characters(debut, longueur).Font.FontStyle = "Bold"

End Sub

 Drikce 06

jeudi 23 novembre 2006 à 18:49:47 | Re : Mise en forme cellule Excel

mortalino

Membre Club


Salut,

je confirme, vbTab pour la Tabulation mais PAS Chr(10) pour le saut de ligne, c'est vbCrLf
Chr(10) = nouvelle ligne
alors 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.

@++


  --Mortalino--
Le mystérieux chevalier, "Provençal, le Gaulois"
/DIV>
vendredi 24 novembre 2006 à 13:43:32 | Re : Mise en forme cellule Excel

Fianchetto

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 :



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




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 ...


vendredi 24 novembre 2006 à 13:50:19 | Re : Mise en forme cellule Excel

Drikce06

Membre Club
Réponse acceptée !

J'ai pas essayé, mais ça ne marche pas quelque chose dans ce genre:

Dim TaString As String
Dim TaStringBold As String
Dim debut As Integer
Dim longueur As Integer

TaString = Range("TaCellule").Value
debut = InStr(1, TaString, TexteAMettreEnGrasQuiEstToujoursIdentique1, vbTextCompare)
longueur = Len(TexteAMettreEnGrasQuiEstToujoursIdentique1)
Range("O2").Characters(debut, longueur).Font.FontStyle = "Bold"

TaString = Range("TaCellule").Value
debut = InStr(1, TaString, TexteVariableAMettreEnGras , vbTextCompare)
longueur = Len(TexteVariableAMettreEnGras )
Range("O2").Characters(debut, longueur).Font.FontStyle = "Bold"

TaString = Range("TaCellule").Value
debut = InStr(1, TaString, TexteAMettreEnGrasQuiEstToujoursIdentique2 , vbTextCompare)
longueur = Len(TexteAMettreEnGrasQuiEstToujoursIdentique2 )
Range("O2").Characters(debut, longueur).Font.FontStyle = "Bold"

 Drikce 06

vendredi 24 novembre 2006 à 14:04:15 | Re : Mise en forme cellule Excel

Fianchetto

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 !

Merci
vendredi 24 novembre 2006 à 14:14:18 | Re : Mise en forme cellule Excel

Drikce06

Membre Club

Ce sera mieux sous forme de sub que tu appelles quand tu veux :

Private Sub CommandButton1_Click()

Call StringBold(Range("A1"), Range("A1").Value, "bonjour")

End Sub

Sub StringBold(ByVal RangeCellule As Range, ByVal TaString As String, ByVal TaStringBold As String)

Dim debut As Integer
Dim longueur As Integer

debut = InStr(1, TaString, TaStringBold, vbTextCompare)
longueur = Len(TaStringBold)
RangeCellule.Characters(debut, longueur).Font.FontStyle = "Bold"

End Sub


 Drikce 06

vendredi 24 novembre 2006 à 14:17:45 | Re : Mise en forme cellule Excel

Drikce06

Membre Club
Ce qui te donne pour l'exemple du haut:

Private Sub CommandButton1_Click()

Call StringBold(Range("A1"), Range("A1").Value, "TexteAMettreEnGrasQuiEstToujoursIdentique1")
Call StringBold(Range("A2"), Range("A2").Value, "TexteVariableAMettreEnGras ")
Call StringBold(Range("A3"), Range("A3").Value, "TexteAMettreEnGrasQuiEstToujoursIdentique2 ")

End Sub

Sub StringBold(ByVal RangeCellule As Range, ByVal TaString As String, ByVal TaStringBold As String)

Dim debut As Integer
Dim longueur As Integer

debut = InStr(1, TaString, TaStringBold, vbTextCompare)
longueur = Len(TaStringBold)
RangeCellule.Characters(debut, longueur).Font.FontStyle = "Bold"

End Sub

 Drikce 06

vendredi 24 novembre 2006 à 15:45:12 | Re : Mise en forme cellule Excel

Fianchetto

Oui je pensais passer par des procedures Sub histoire de ne pas reécrire toujours la même chose. Merci pour l'aide



1 2

Cette discussion est classée dans : cherche, excel, cellule, forme, gras


Répondre à ce message

Sujets en rapport avec ce message

Excel mise en gras et copie de cellule (VBA) [ par Shino78 ] Bonjour, Voila ce que je cherche à faire sur Excel en VBA:  On commence par sélectionner une cellule(final) via inputbox, ensuite on sélectionne une c mise en forme conditionnelle cellule excel [ par andlauer ] Bonjour, je suis débutant en la matière et je cherche à faire une macro (je pense qu'il faut en passer par là) qui permette de changer la couleur de VBA Excel : Recherche d'un texte en gras dans une cellule [ par VaRioR ] Bonjour à tous !Je cherche à isoler un texte en gras dans une cellule excel.Par exemple :Si dans une cellule, j'ai un texte du type :"Bonjour, je m'ap Mise en forme d'une cellule sous Excel [ par filou260381 ] Bonjour,je cherche comment mettre en forme une cellule d'une feuille Excel avec VB6. J'arrive à le faire en utilisant les noms des cases, par exemple: [Excel] Mis en forme sur cellule protégé [ par Sebelec ] Bonjour à tous !!voila je cherche sur excel à faire ressortir les cellules qui sont protégé afin d'avoir une vue d'ensemble de toute mes cellule qui s excel programmer bouton pour mise en forme de cellule automatique [ par keben666 ] Bonjour Je suis plus que débutant en VB... et j'aurais voulu pouvoir creer deux boutons dans une feuille excel pour changer une colonne en euro ou keu selection d'une cellule d'un tableau dans word [ par rons ] Bonjour, SOS  Besoin d'aides!!   Merci de m'aider.MON BUT: depuis Excel copier une cellule dans un tableau Word et faire un collage speci Mettre en gras certains éléments d'une cellule Excel [ par zujam ] Bonjour,Je remplis une feuille Excel à travers un programme VB.par exemple, je vais sélectionner et mettre dans une mm cellule Excel, tous les clients [Déplacé VB6 --> VBA] excel - identification groupe [ par corsair2a ] Bonjour, Je voudrais savoir comment identifier le nombre de cellule appartenant au même groupe puis exécuter une fonction dessus (valeur moyenne par INCREMENTATION D'UNE SELECTION DE CELLULE EXCEL [ par winvsmac ] Bonsoir, Je suis confronté à la problématique suivante : Environnement VB6 + Excel 2007 Sur un formulaire, j'ai une liste box qui comporte une série


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,874 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales