VBA - Texte Maj en gras

Bonjour,

Quelqu'un aurait une petite idée de formule pour passer tous mes textes majuscules d'un tableau dynamique en gras ?

Merciii,

Bonne journée

Bonjour Nat, bonjour le forum,

Aucune précision de l'emplacement du tableau !?... Code à adapter. Selon la taille du tableau, peut prendre pas mal de temps...

Sub Macro1()
Dim o As Worksheet
Dim PL As Range
Dim CEL As Range
Dim I As Integer

Application.ScreenUpdating = False
Set o = Worksheets("Feuil1")
Set PL = o.Range("A1").CurrentRegion
For Each CEL In PL
    For I = 1 To Len(CEL.Value)
        If Asc(Mid(CEL.Value, I, 1)) > 64 And Asc(Mid(CEL.Value, I, 1)) < 91 Then CEL.Characters(I, 1).Font.Bold = True
    Next I
Next CEL
Application.ScreenUpdating = True
End Sub

Bonjour,

Quand tu parles de tableau dynamique je comprend tableau structuré (ListObject en VBA) donc voici un code qui mets en gras la cellule à la condition que tout le texte qu'elle contient soit en majuscule :

Sub Test()

    Dim Tbl As ListObject
    Dim Cel As Range

    Set Tbl = ActiveSheet.ListObjects(1)

    For Each Cel In Tbl.DataBodyRange.Cells

        If Cel.Value = UCase(Cel.Value) Then Cel.Font.Bold = True

    Next Cel

End Sub

Bonjour Nat, bonjour le forum,

Aucune précision de l'emplacement du tableau !?... Code à adapter. Selon la taille du tableau, peut prendre pas mal de temps...

Sub Macro1()
Dim o As Worksheet
Dim PL As Range
Dim CEL As Range
Dim I As Integer

Application.ScreenUpdating = False
Set o = Worksheets("Feuil1")
Set PL = o.Range("A1").CurrentRegion
For Each CEL In PL
    For I = 1 To Len(CEL.Value)
        If Asc(Mid(CEL.Value, I, 1)) > 64 And Asc(Mid(CEL.Value, I, 1)) < 91 Then CEL.Characters(I, 1).Font.Bold = True
    Next I
Next CEL
Application.ScreenUpdating = True
End Sub

Ca serait à appliquer sur une seule colonne et comme les données ne sont jamais fixes, ca me semble le plus simple de le faire sur une seule colonne et non sur une plage.

Merci je vais essayer ça de suite

Re,

Une colonne c'est aussi une plage !... Ce que je voulais te dire c'est que mon code avait défini la plage PL comme étant l'ensemble des cellules collées à A1, n'ayant pas d'autre explication. Il te faudra adapter...

Bonjour,

Quand tu parles de tableau dynamique je comprend tableau structuré (ListObject en VBA) donc voici un code qui mets en gras la cellule à la condition que tout le texte qu'elle contient soit en majuscule :

Sub Test()

    Dim Tbl As ListObject
    Dim Cel As Range

    Set Tbl = ActiveSheet.ListObjects(1)

    For Each Cel In Tbl.DataBodyRange.Cells

        If Cel.Value = UCase(Cel.Value) Then Cel.Font.Bold = True

    Next Cel

End Sub

Salut,

J'entends par là un tableau dont les plages ne sont jamais fixes.

Nat,

Re,

Une colonne c'est aussi une plage !... Ce que je voulais te dire c'est que mon code avait défini la plage PL comme étant l'ensemble des cellules collées à A1, n'ayant pas d'autre explication. Il te faudra adapter...

J'ai pas encore tout à fait intégré le jargon excel

Bon je pense pouvoir adapter le code.

Cependant, j'ai un message d'erreur "erreur d'exécution 1004: erreur définie par l'application ou par l'objet" hum.. Une petite idée du soucis ?

Nat,

Je suis en train de me demander si c'est pas plus simple de faire la chose suivante;

C'est toujours les mêmes mots qui doivent être en GRAS donc je me suis dit que peu importe leur place dans la tableau (surtout quand celui-ci évolue) ils seront toujours en gras, qu'en pensez-vous ?

Nat,

Re,

Bon, quand tu as une erreur il faut nous indiquer le message (ça c'est fait) mais aussi la ligne de code qui génère cette erreur. Elle est surlignée en jaune quand tu fais débogage...

Sinon, ton idée n'est pas mauvaise. Une proposition de code :

Sub Macro1()
Dim TM() As Variant 'déclare la variable TM (Tableau des Mots)
Dim BE As Variant 'déclare la variable BE (Boîte d'Entrée)
Dim PL As Range 'déclare la variable PL (PLage)
Dim CEL As Range 'déclare la variable CEL (CELulle)
Dim I As Integer 'déclare la variable I (Incrément)

On Error Resume Next 'gestion des erreurs (en cas d'erreur passe à la ligne suivante)
TM = Array("PIERRE", "PAUL") 'définit le tableau de mots TM (ici tu écris en dur la liste des mots)
ici: 'étiquette
Set BE = Application.InputBox("Sélectionnez la colonne", "COLONNE", Type:=8) 'définit la boîte d'entrée BE
If BE Is Nothing Then Exit Sub 'si bouton [Annuler], sort de la procédure
If Err <> 0 Then 'condition : si une erreur a été générée
    'si "Non" au message, sort de la procédure
    If MsgBox("Vous devez selectionenr une colonne entière en cliquant sur son En-Tête !" & Chr(13) & "Voulez-vous continuer ?", vbYesNo, "COLONNE") = vbNo Then Exit Sub
    GoTo ici 'va à l'étiquette "ici"
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
If Application.WorksheetFunction.CountA(BE) = 0 Then Exit Sub 'si le nombre de cellules non vides de la plage BE est égal à 0, sort de la procédure
Set PL = BE.SpecialCells(xlCellTypeConstants) 'définit la plage PL
For Each CEL In PL 'boucle 1 : sur toutes les cellules CEL de la plage PL
    For I = 0 To UBound(TM) 'boucle 2 : sur tous les mots du tableau des mots TM
        If CEL.Value = TM(I) Then CEL.Font.Bold = True 'si la cellule contient le mot, format de la cellule en gras
    Next I 'prichain mot de la boucle 2
Next CEL 'procchaine cellule de la boucle
End Sub

Re ThauThème,

Je vais essayer avec ce que tu m'as donné pour voir si c'est plus simple.

Une question comme ca, il existe une formule lorsque je fais un reset de mon tableau qui ne supprime pas des cellules définies ?

Du style, tu supprimes ces lignes " ", sauf celles-ci " "

Merci,

Nat

Re,

Oui si tu définis la plage au préalable. Le code ci-dessous va effacer les ligne 4 à 10, 14 et 16 à 20 :

Sub Macro1()
Dim PL As Range
Set PL = Application.Union(Rows(4 & ":" & 10), Rows(14), Rows(16 & ":" & 20))
PL.ClearContents
End Sub

Voici ce que j'appelle un tableau structuré :

Re,

Oui si tu définis la plage au préalable. Le code ci-dessous va effacer les ligne 4 à 10, 14 et 16 à 20 :

Sub Macro1()
Dim PL As Range
Set PL = Application.Union(Rows(4 & ":" & 10), Rows(14), Rows(16 & ":" & 20))
PL.ClearContents
End Sub

Re,

J'ai écrit

Private Sub CommandButton2_Click()

Dim PL As Range

Set PL = Application.Union(Cells("A30:F74"))

PL.ClearContents

Boite de dialogue qui m'affiche "erreur de compilation : argument non facultatif"

Nat,

Re,

Non, dans ton cas c'est une plage de cellules jointes (non séparées par une ou plusieurs lignes vides, ou ,une ou plusieurs colonnes vides). Remplace :

Set PL = Application.Union(Cells("A30:F74"))

par :

Set PL = Range("A30:F74")

Bonjour,

Toujours pour mon problème de textes en majuscule que je voudrais voir en gras, j'ai écrit ceci:

Private Sub Worksheet_Change(ByVal Target As Range)

    If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("B9:B100")) Is Nothing _
            And Target = UCase(Target) And Target <> "" Then
        Target.Font.Bold = True
    End If
End Sub

Ca peut etre une piste pour que le code s'applique directement au texte déjà présent sans à devoir tout réécrire dans les données s'affichent automatiquement ?

Nat

Re,

Le code que tu proposes n'agira que sur une seule cellule. La cellule modifiée, écrite en majuscule dans la plage B9:B100.

Je n'ai pas testé mais en gros c'est ce que tu as écris. Les autres cellules resteront inchangées, qu'elles soient majuscule ou minuscule. Loin de ton premier post me semble-t-il...

C'est couillon de passer ton temps à nous proposer des codes qu'on ne comprends pas plutôt que de nous dire ce qui ne va pas dans le code de Theze ou le mien !...

Re,

Le code que tu proposes n'agira que sur une seule cellule. La cellule modifiée, écrite en majuscule dans la plage B9:B100.

Je n'ai pas testé mais en gros c'est ce que tu as écris. Les autres cellules resteront inchangées, qu'elles soient majuscule ou minuscule. Loin de ton premier post me semble-t-il...

C'est couillon de passer ton temps à nous proposer des codes qu'on ne comprends pas plutôt que de nous dire ce qui ne va pas dans le code de Theze ou le mien !...

Salut,

J'essaie de faire un mixte mais j'arrive pas à résoudre mon soucis apparement.

Bon bon, je re explique mon problème, si tu veux dans ma feuille 1 je sélection dans un menu déroulant un nom, ce nom, sélectionné, fait apparaitre dans la feuille 2 un tableau qui n'est jamais fixe car en fonction du nom choisi dans la feuill 1 les options qui sont associées sont différentes donc jamais de même taille.

Dans ce tableau, des titres en majuscule apparaissent mais à des cellules toujours différentes donc j'aimerais que quand je choisis un nom de la feuille 1, les titres en majuscule passent automatiquement en GRAS dans la feuille 2.

J'espère avoir éclairci mon problème

Nat,

Re,

Ton problème ne sera vraiment clair que quand tu daigneras fournir un fichier exemple.

Rechercher des sujets similaires à "vba texte maj gras"