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 - Gestion de graphiques SmartArt dans Excel


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Décembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Décembre 2020
    Messages : 3
    Par défaut VBA - Gestion de graphiques SmartArt dans Excel
    Bonjour,

    Je me permets de créer un nouveau sujet car je n'ai pas trouvé de réponse à ma question dans les différents sujets que j'ai parcouru et que mes différents tests n'ont pour l'instant pas amené de résultats concluants. Je m'excuse par avance si le sujet existe déjà.

    Je suis en train de travailler sur des modèles de rapport sur Excel (de la suite Microsoft Office 365) et je me sers de macros pour générer des rapports à partir de ce modèle, avec les informations du client choisi. Dans ce modèle il y a également des graphiques, que je mets à jour mettant à jour les données présentes dans les tableaux sur lesquels ces graphiques pointent, j'ai trouvé ça plus simple que de devoir les recréer un par.

    Il y a également un graphique SmartArt nommé "diagramme 1" et qui ressemble à ça :

    Nom : excel smartart exemple.jpg
Affichages : 876
Taille : 18,1 Ko

    Je voudrais modifier les 4 parties [Texte] pour qu'elles soient modifiées en fonction du client. Malheureusement je n'y arrive pas pour le moment et l'enregistreur de macro ne donne rien non plus. Auriez-vous une idée pour m'aider à faire ça ? Je vous remercie par avance.

    Cordialement,

    Erlendur.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Erlendur Voir le message

    Bonjour,

    Pour repérer le nom du smartart, il vous faut ouvrir le volet sélection. Lors de sa création dans l'onglet, il vous faut dissocier le groupement de shapes. Dans le volet de sélection, un autre nom de groupement va remplacer l'ancien. Une fois fait, essayez ce code en remplaçant les valeurs. Ce sont les 4 premières formes qui correspondent aux formes contenant du texte.
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    Sub ModifierLesTextesDuSmartArt()
     
    Dim ShShape As Worksheet
    Dim MonShape As Shape
    Dim TableauDesValeurs As Variant
    Dim I As Integer, NbShapesAvant As Integer ', NbShapesApres As Integer
     
        TableauDesValeurs = Array("A", "B", "C", "D")
        Set ShShape = ActiveSheet
        With ShShape
            NbShapesAvant = .Shapes.Count
            Set MonShape = .Shapes("Group 1")  ' A adapter
            MonShape.Ungroup
           ' NbShapesApres = .Shapes.Count
            For I = NbShapesAvant To NbShapesAvant + 3
                With .Shapes(I)
                    ' Debug.Print "i : " & I & ", nom : " & .Name & ", texte : " & .TextFrame2.TextRange
                     .TextFrame2.TextRange = TableauDesValeurs(I - NbShapesAvant)
                 End With
            Next I
     
            .Shapes(NbShapesAvant).Select
            Selection.ShapeRange.Regroup.Select
     
            Set MonShape = Nothing
     
       End With
       Set ShShape = Nothing
     
    End Sub

  3. #3
    Candidat au Club
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Décembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Décembre 2020
    Messages : 3
    Par défaut
    Bonjour Eric,

    Je vous remercie pour votre réponse rapide et pour le code détaillé, je suis content de voir qu'il peut exister des solutions, il ne me reste plus qu'à comprendre correctement tout cela

    Par contre, lorsque j'affiche le volet sélection, il y a seulement le nom du graphique qui apparait, je n'y vois pas de nom de groupe :

    Nom : excel smartart volet selection.jpg
Affichages : 771
Taille : 7,9 Ko

    Bonne soirée.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Erlendur Voir le message
    Vous avez oublié une étape, sélectionnez la forme et clic droit / Group / Dissocier. La forme reste toujours groupée et son nom (Group XX) va apparaître dans le volet sélection à la place de Diagram YY.

  5. #5
    Invité
    Invité(e)
    Par défaut Smartart.allnodes
    Citation Envoyé par Erlendur Voir le message
    Autre solution plus simple et agissant directement sur le SmartArt sans passer par le dégroupement :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
     
    Sub TestModifierLeSmartArt()
     
    Dim TableauDesValeurs As Variant
     
        With ActiveSheet
             TableauDesValeurs = Array("A", "B", "C", "D")
             ModifierLeSmartArt .Shapes("Diagram 2"), TableauDesValeurs
        End With
     
    End Sub
     
    Sub ModifierLeSmartArt(ByVal ShapeSMartArt As Shape, ValeursSmart As Variant)
     
    Dim I As Integer, J As Integer, IndexTableau As Integer
    Dim MonSmartArt As SmartArt
     
        IndexTableau = 0
     
        With ShapeSMartArt
             Set MonSmartArt = .SmartArt
             With MonSmartArt
                  For J = 1 To .AllNodes.Count
                      With .AllNodes(J)
                           Select Case J
                                  Case 2, 4, 6, 8
                                       .TextFrame2.TextRange = ValeursSmart(IndexTableau)
                                       Debug.Print J & " : " & .TextFrame2.TextRange
                                       IndexTableau = IndexTableau + 1
                           End Select
                      End With
                  Next J
             End With
         End With
     
         Set MonSmartArt = Nothing
     
    End Sub
    Pour générer ce modèle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    Sub GenererUnSmartArt()
     
        Call ActiveSheet.Shapes.AddSmartArt(Application.SmartArtLayouts( _
            "urn:microsoft.com/office/officeart/2005/8/layout/cycle4")).Select
    End Sub

  6. #6
    Candidat au Club
    Homme Profil pro
    Cyberdocumentaliste
    Inscrit en
    Décembre 2020
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Cyberdocumentaliste

    Informations forums :
    Inscription : Décembre 2020
    Messages : 3
    Par défaut
    Citation Envoyé par Eric KERGRESSE Voir le message
    Autre solution plus simple et agissant directement sur le SmartArt sans passer par le dégroupement
    Bonjour Eric,

    Cette solution est juste parfaite, c'est exactement ce que je cherchais et j'ai pu l'adapter à ma situation sans problème. Un grand merci pour votre réponse aussi rapide qu'utile.

    Le sujet est donc résolu. Passez de bonnes fêtes de fin d'année

    Cordialement,

    Erlendur

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

Discussions similaires

  1. [VBA-E] Générer des combinaisons dans Excel
    Par JSOREL dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 07/03/2007, 17h23
  2. [VBA-E] superposition de matrices dans excel
    Par florent149 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 16/02/2007, 18h13
  3. Graphique généré dans Excel
    Par charleshbo dans le forum Access
    Réponses: 2
    Dernier message: 22/03/2006, 20h31
  4. [VBA] Les propriétés de cellule dans Excel
    Par Kylen dans le forum API, COM et SDKs
    Réponses: 6
    Dernier message: 05/07/2004, 23h02
  5. [VBA-E] Ajouter des fonctions dans Excel
    Par Clezio dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/03/2004, 01h18

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