IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

[VBA E] Characters et couleurs


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    6
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 6
    Par défaut [VBA E] Characters et couleurs
    Bonjour le forum,
    Voila j'ai du texte avec plusieurs lettres en couleur ou lettre barrée.
    Je modifie les caractères rouge en bleu et les autres couleurs en noir
    Cela fonctionne avec mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub remplacelacouleur() 
    For i = 1 To 50
     
    If Selection.Characters(i, 1).Font.ColorIndex = 3 Then
    Selection.Characters(i, 1).Font.ColorIndex = 5
    Else:
    Selection.Characters(i, 1).Font.ColorIndex = 0
    End If
     
    Next i
    End Sub
    Mon premier problème et je voudrais supprimer mes characters barré
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Selection.Characters(i, 1).Font.Strikethrough = True then ?????
    Mon deuxième problème est que je voudrais pouvoir la faire tourner sur une plage de cellule.

    Merci d'avance pour vos pistes
    Bruno

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 572
    Par défaut
    sans aller chercher très loin et sans avoir testé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if Selection.Characters(i, 1).Font.Strikethrough = True then Selection.Characters(i, 1).delete
    quand a tourner sur une plage de cellule, je ne comprend pas la question

  3. #3
    Membre éclairé Avatar de ancel17
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Mars 2007
    Messages
    312
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : Mars 2007
    Messages : 312
    Par défaut
    pour le faire tourner sur une plage de cellule en supposant que la plage soit sélectionnée, tu peux tenter ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Dim c As Range
     
    For Each c In Selection.Cells
        For i = 1 To 50
            If c.Characters(i, 1).Font.ColorIndex = 3 Then
                c.Characters(i, 1).Font.ColorIndex = 5
            Else
                c.Characters(i, 1).Font.ColorIndex = 0
            End If
            If c.Characters(i, 1).Font.Strikethrough = True Then
                c.Characters(i, 1).delete
            End If
        Next i
    Next

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonjour
    la boucle for i = 1 to .... n est pas necessaire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Dim c As Range
     
    For Each c In Selection.Cells    
            If c.Characters.Font.ColorIndex = 3 Then
                c.Characters.Font.ColorIndex = 5
            Else
                c.Characters.Font.ColorIndex = 0
            End If
            If c.Characters.Font.Strikethrough = True Then
                c.Characters.delete
            End If
     
    Next c

  5. #5
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonsoir à tous,

    je n'ai pas testé la macro, mais il me semble qu'il faut faire une boucle du dernier caractère au premier avec Step - 1.

    Exemple sans Step - 1
    1234 (imaginez le souligné comme un barré)

    si je supprime le 2nd caractère, je passe au 3è qui n'est pas 3 mais 4; le 3 barré n'est pas supprimé.

    Pour moi le bon code est le suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Dim c As Range
     
    For Each c In Selection.Cells
        For i = c.Characters.Count To 1 Step -1
     
            If c.Characters(i, 1).Font.ColorIndex = 3 Then
                c.Characters(i, 1).Font.ColorIndex = 5
            Else
                c.Characters(i, 1).Font.ColorIndex = 0
            End If
            If c.Characters(i, 1).Font.Strikethrough = True Then
                c.Characters(i, 1).Delete
            End If
        Next i
    Next c
    cordialement
    fred65200

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 572
    Par défaut
    juste manière de participer
    Citation Envoyé par fred
    si je supprime le 2nd caractère, je passe au 3è qui n'est pas 3 mais 4.
    en fait
    si je supprime le 2nd caractère, je passe au 3è qui n'est pas 3 mais 2.
    ou
    si je supprime le 2nd caractère, je passe au 4è qui n'est pas 4 mais 3.

  7. #7
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonsoir alsimbad

    il me semble que dans la chaîne 1234, si on ne commence pas par le dernier caractère.
    si tu retires le 2ème caractère, il te reste 134, et
    donc le 3ème caractère est 4 et pas 2 puisque tu l'a retiré de ta chaîne??

    fred65200

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 572
    Par défaut
    salut fred
    c'est vrai, je pensais pas au step -1
    mais meme dans ce cas, quand j'enleve le deuxieme caractere de la chaine 4 3 2 1 , c'est le 3 que j'enleve
    et puis de toute maniere, je pense qu'on parle dans le vide
    ces histoires d'ordre, d'occurence qui disparraissent, et de step -1 ne sont d'actualité que quand on supprimme des cellules ou des ligne parce qu'il y a effacement physique de la ligne en question, et donc décalage. dans un groupe de données, il n'y a pas ce phénomene. quoi que, ici ce sont des caracteres que l'on supprime réelement....je sais pas a vrai dire. il est un peu tôt là, tu a peut etre raison
    bonne journée
    j'édite
    Citation Envoyé par fred
    je passe au 3è qui n'est pas 3 mais 4
    faut dire aussi, que je me rend compte que je t'ai mal lu
    j'ai lu je passe au 3eme qui n'est plus le troisieme mais le quatrieme
    il fallait lire qui n'est plus le chiffre 3 mais la chiffre 4
    donc lu comme ça, si l'on exepte la prise en compte du step -1, tu a entierement raison

  9. #9
    Membre émérite
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Par défaut
    bonjour alsimbad,
    Je ne suis pas tout à fait d'accord avec toi.

    Regarde le classeur joint.
    @+

    fred65200
    Fichiers attachés Fichiers attachés

  10. #10
    Membre Expert
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    1 572
    Détails du profil
    Informations personnelles :
    Âge : 62
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 1 572
    Par défaut
    non, tout a fait, tu as entierement raison sur le fait qu'il faille faire un step -1 pour que ça tourne. quand je dis
    si l'on exepte la prise en compte du step -1,
    je voulais dire que dans ton explication

    Exemple 1234 (imaginez le souligné comme un barré)
    si je supprime le 2nd caractère, je passe au 3è qui n'est pas 3 mais 4
    puisque tu applique un steep -1 quand tu supprime le deuxieme caractere, en fait tu supprime le chiffre 3, et donc ensuite tu passe au troisieme chiffre qui n'est plus 2 mais 1.
    me trompe je ?

Discussions similaires

  1. [VBA-A] Changer la couleur d'une ligne en datasheet
    Par nuriel2 dans le forum VBA Access
    Réponses: 1
    Dernier message: 31/03/2006, 13h14
  2. [VBA-W] Mettre des couleurs ds un label
    Par jagdjg dans le forum VBA Word
    Réponses: 6
    Dernier message: 30/03/2006, 16h19
  3. [VBA-E]changer la couleur des onglets
    Par xavier_claustres dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/02/2006, 15h45
  4. [VBA EXCEL] changer la couleur du texte de cellules
    Par dume75 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/02/2006, 00h08
  5. [VBA-E] Chartspace : définir couleur d'une série
    Par alexxx69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 26/10/2005, 22h57

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo