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 :

Excel - Extraire le texte d'un SmartArt avec VBA [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Par défaut Excel - Extraire le texte d'un SmartArt avec VBA
    Bonjour,

    Je souhaiterais réaliser une petite macro me permettant d'extraire le texte contenu dans un SmartArt afin de le coller dans des cellules.

    Explication :

    Travaillant dans un service qualité, nous réalisons les analyses des causes des non-conformités en réalisant un SmartArt de type hiérarchique pour réaliser un arbre des causes.

    Voici le type de SmartArt obtenus :

    Nom : SmartArt.PNG
Affichages : 917
Taille : 38,5 Ko

    Je souhaiterais avoir une macro pour incrémenter mon tableau "plan d'actions" et avoir la cause dite "racine" (celle en rouge) qui s'ajoute automatiquement à mon tableau en fonction du SmartArt.

    Pour illustrer mes propos voici un schéma de ce que je souhaiterais réaliser :

    Nom : Schéma.PNG
Affichages : 1247
Taille : 49,0 Ko

    Les flèches rouge correspondent au données texte que je souhaiterais voir apparaître dans mon tableau grâce à la macro.

    Le problème est que je ne sais pas du tout comment procéder pour lire le contenu d'un SmartArt via VBA.

    J'attends vos pistes et idées

    Merci d'avance

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Commence par ce code et regarde ta fenêtre d'exécution vba
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Test()
    Dim SA As SmartArt
    Dim i As Integer
     
    Set SA = Feuil1.Shapes(1).SmartArt  'remplace le 1 par l'index de ton smartart
    With SA
        For i = 1 To .AllNodes.Count
            Debug.Print i & "  -  " & .AllNodes(i).Level & "  -  " & .AllNodes(i).TextFrame2.TextRange.Text
        Next i
    End With
    Set SA = Nothing
    End Sub

  3. #3
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Par défaut
    Merci mercatog pour cette réponse rapide.

    Votre code semble bien fonctionner puisqu'il balaye l'ensemble des formes de mon SmartArt.

    Savez-vous s'il est possible que le code ne sélectionne que le texte en rouge (ou a défaut non noir) pour le coller dans mon tableau en dessous en actions correctives ?

    Si cela peut permettre de mieux appréhender la problématique voici le fichier sur lequel je travail.

    Recherche des causes.xlsx

    Merci pour votre aide

    Cordialement

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bah je t'avais donné la piste. Il suffit de voir les propriétés de la variable SA

    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
    Sub Test()
    Dim SA As SmartArt
    Dim i As Integer
    Dim j As Long
     
    Set SA = Feuil1.Shapes(1).SmartArt
    j = 26
    With SA
        For i = 1 To .AllNodes.Count
            With .AllNodes(i).TextFrame2.TextRange
                'If .Font.Fill.ForeColor = 255 Then '255 correspond au rouge ou RGB(255,0,0)
                If .Font.Fill.ForeColor <>0 Then '0 correspond au noir ou RGB(0,0,0)
                    Feuil1.Cells(j, 2) = .Text
                    j = j + 1
                End If
            End With
        Next i
    End With
    Set SA = Nothing
    End Sub

  5. #5
    Membre régulier
    Homme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Mars 2017
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2017
    Messages : 6
    Par défaut
    Super travail mercatog !

    Tu as résolu mon problème

    Un grand merci à toi

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

Discussions similaires

  1. [AC-2010] Insertion texte dans un champ avec VBA
    Par redojackson dans le forum VBA Access
    Réponses: 6
    Dernier message: 21/07/2014, 08h08
  2. [XL-2010] Extraire fichiers d'un dossier compressé avec vba
    Par thomahh dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 01/08/2012, 12h16
  3. [XL-2007] Utiliser plusieurs couleurs au texte d'une cellule avec vba
    Par CRC dans le forum Excel
    Réponses: 2
    Dernier message: 21/08/2009, 14h37
  4. Extraire le texte d'un pdf avec PdfBox en C#
    Par nadabb dans le forum C#
    Réponses: 10
    Dernier message: 28/05/2009, 21h00
  5. Extraire du texte d'un PDF avec layout.
    Par zedtux dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 09/04/2008, 15h37

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