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 :

Le rechercher remplacer qui supprime les font dans un charttitle


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut Le rechercher remplacer qui supprime les font dans un charttitle
    Bonjour,
    Le sujet des charttitles en vba excel est visiblement source de beaucoup de question. J'apporte la mienne, en espérant recevoir une réponse.
    J'ai décidé pour avancé mes collègues de créer un bouton rechercher/remplacer, mais dans les titres de graphique, seul élément que nous ne lions pas à une cellule (ce serait une idée, mais bon, un peu sale quand même).

    Mon soucis :
    la procédure marche ! (c'est pas un soucis ça) mais ne garde pas les fonts, y compris l'italique, chose importante car imposé par une nomenclature précise.
    Vlà la procédure toute conne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
        For Each char In ActiveSheet.ChartObjects
            If char.Chart.HasTitle Then
                char.Chart.ChartTitle.Text
                char.Chart.ChartTitle.Text = Replace(char.Chart.ChartTitle.Text, TextBox1.Text, TextBox2.Text)
            End If
        Next
    End Sub
    trololo

    Mon idée serait de détecter les mises en forme, de garder strings affecté dans une collection puis une fois la modification effectuer, remettre tout comme avant. J'allais m'y mettre quand j'ai compris le point de blocage : comment trouver les chaines de caractère qui ont une mise en forme ?

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 153
    Par défaut
    Bonjour,

    Essaie peut être ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CommandButton1_Click() For Each char In ActiveSheet.ChartObjects If char.Chart.HasTitle Then char.Chart.ChartTitle.Text char.Chart.ChartTitle.characters.Text = Replace(char.Chart.ChartTitle.Text, TextBox1.Text, TextBox2.Text) End If Next End Sub
    Poulpe

  3. #3
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut
    Ca ne fonctionne pas j'aurais bien aimé j'avoue.

    J'ai également essayé ça du coup :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
        For Each char In ActiveSheet.ChartObjects
            If char.Chart.HasTitle Then
                char.Chart.ChartTitle.Text
                char.Chart.ChartTitle.characters.Text = Replace(char.Chart.ChartTitle.characters.Text, TextBox1.Text, TextBox2.Text)
            End If
        Next
    End Sub
    Sans plus de succès.

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2013
    Messages
    153
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2013
    Messages : 153
    Par défaut
    Peut être ça sinon :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub CommandButton1_Click()
        For Each char In ActiveSheet.ChartObjects
            If char.Chart.HasTitle Then
                char.Chart.ChartTitle.Text
                char.Chart.ChartTitle.Characters(1, Len(char.Chart.ChartTitle.Text)).Text = Replace(char.Chart.ChartTitle.Text, TextBox1.Text, TextBox2.Text)
            End If
        Next
    End Sub
    Poulpe

  5. #5
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour

    Peut-être ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub CommandButton1_Click()
     
        For Each char In ActiveSheet.ChartObjects
            If char.Chart.HasTitle Then
     
                char.Chart.ChartArea.AutoScaleFont = False
                char.Chart.ChartTitle.Text = Replace(char.Chart.ChartTitle.Text, TextBox1, TextBox2)
            End If
        Next
    End Sub

  6. #6
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut
    Aucune des deux méthodes dernièrement proposé ne fonctionne :/
    Le format string bloc, il ne permet pas de garder en mémoire les styles des textes, sauf si il existe un type de chaine de caractère qui prenne en compte ce détail, il va me falloir remettre les styles une fois le changement effectué.

    C'est moche mais j'ai un début de réponse.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub trouverItalique()
        For Each g In ActiveSheet.ChartObjects
            Dim phrase As String
            For i = 0 To Len(g.Chart.ChartTitle.Text)
                If InStr(g.Chart.ChartTitle.Characters(i, 1).Font.FontStyle, "Italic") > 0 Then
                    phrase = phrase & g.Chart.ChartTitle.Characters(i, 1).Text
                End If
            Next
            MsgBox (phrase)
        Next
    End Sub

  7. #7
    Membre éclairé Avatar de Uranne-jimmy
    Homme Profil pro
    Bioinformatique
    Inscrit en
    Décembre 2012
    Messages
    778
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Bioinformatique
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Décembre 2012
    Messages : 778
    Par défaut
    C'est toujours aussi foireux, mais ça marche, alors partageons le foireux avec nos pairs !
    En utilisant la procédure du dernier post légèrement modifié (vous comprendrez en quoi) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub CommandButton1_Click()
    Dim char As ChartObject
        For Each char In ActiveSheet.ChartObjects
            If char.Chart.HasTitle Then
                Dim phrase As String
                phrase = trouverItalique(char)
                char.Chart.ChartArea.AutoScaleFont = False
                char.Chart.ChartTitle.Characters.Text = Replace(char.Chart.ChartTitle.Characters.Text, TextBox1.Text, TextBox2.Text)
                Dim index As Integer
                index = InStr(char.Chart.ChartTitle.Characters.Text, phrase)
                char.Chart.ChartTitle.Characters(index, Len(phrase)).Font.Italic = True
            End If
        Next
    End Sub

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/04/2014, 19h14
  2. [Free Pascal] Programme qui supprime les espaces inutiles dans une chaîne
    Par joreveur dans le forum Free Pascal
    Réponses: 18
    Dernier message: 24/08/2012, 16h51
  3. Réponses: 9
    Dernier message: 06/11/2007, 12h36
  4. Recherche programme qui convertit les chiffres arabes en nb
    Par oli57 dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 15/06/2002, 03h11

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