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 :

Trouver directement une figure comportant un texte précis


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 63
    Points : 48
    Points
    48
    Par défaut Trouver directement une figure comportant un texte précis
    Bonjour,

    voilà mon problème.
    J'utilise des macros pour créer des shapes et y intégrer un texte.
    Seulement, il est possible que un shape contenant déjà le même texte existe et il ne serait pas utile alors d'en créer un nouveau.

    Juqu'à maintenant, j'utilisais un code en boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                       For Each img In ActiveSheet.Shapes
                            If img.Type = 1 Then
                                 If img.TextFrame.Characters.Text = c.Value then exit sub
                            End If
                        Next
    Mais je trouve ce code un peu ridicule car il peut faire mouliner beaucoup la machine selon le nombre de shapes.

    J'essais donc de trouver une forme avec find
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
                         With ActiveSheet.Shapes.TextFrame.Characters 'ca plante là
                            Set f = .Find("toto")   '(là, quels argument faut il mettre ?
                            If Not f Is Nothing Then
                               MsgBox "cool"
                            End If
                            End With
    , mais je n'y arrive pas.

    Merci de votre aide
    .

  2. #2
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonsoir

    à mon avis ce n'est pas possible. Il faut boucler sur les formes, comme tu le fais actuellement.

    bonne soirée
    michel

  3. #3
    Membre éprouvé
    Avatar de fred65200
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    901
    Détails du profil
    Informations personnelles :
    Âge : 57
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 901
    Points : 1 207
    Points
    1 207
    Par défaut
    bonsoir,

    pourquoi ne pas nommer les Shapes à la création et vérifier ensuite si le Shapes existe. Ou vérifier s'il existe et le créer à la demande.

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 63
    Points : 48
    Points
    48
    Par défaut
    Certes les nommer accélère le processus, et en effet je l'ai fait pour distinguer les origines des infos.

    Donc si j'en crois SilkyRoad, y a pas de code plus fin que la boucle...

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 197
    Points : 300
    Points
    300
    Par défaut
    Bonjour,

    Si tu les as nommés il y a une possibilité d'accès direct, un peu barbare mais peut-être intéressante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Dim myShapeText As String
     
    Err.Clear
    On Error Resume Next
    myShapeText = ActiveSheet.Shapes("NomShape").TextFrame.Characters.Caption
    On Error Goto 0
    If Err <> 0 Then
        ' Code à exécuter si la Shape n'existe pas
    Else
       ' La Shape existe bien et myShapeText contient son texte
    Endif
    Remplacer évidemment "NomShape" par une variable..

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Septembre 2005
    Messages : 63
    Points : 48
    Points
    48
    Par défaut
    Yep, interessant.

    Je les ai certes nommés mais par catégorie et incréments; c'est a dire une info relatif à un client, le nom commence par "client_" mais y a un increment ensuite que je ne domine pas vis à vis de l'information contenu dans la shape...
    donc je cherchais vraiment à trouver un contenu exacte d'une shape et pas son à travers son nom.

Discussions similaires

  1. [LibreOffice][Dessin] Comment redimensionner une figure comportant un texte à l'intérieur
    Par bakou dans le forum OpenOffice & LibreOffice
    Réponses: 1
    Dernier message: 03/04/2014, 15h46
  2. référencer une figure dans un texte
    Par oumay dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 1
    Dernier message: 23/04/2010, 13h15
  3. Placer une figure dans un texte
    Par nypahe dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 1
    Dernier message: 22/06/2009, 17h47
  4. Lien vers une figure dans le texte
    Par GDMINFO dans le forum Tableaux - Graphiques - Images - Flottants
    Réponses: 2
    Dernier message: 04/07/2007, 13h45
  5. text dans une figure ?
    Par lunea dans le forum MATLAB
    Réponses: 2
    Dernier message: 28/07/2006, 09h57

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