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 :

Localiser le nom d'une shape avec un offset


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Par défaut Localiser le nom d'une shape avec un offset
    Bonjour à vous,


    J'ai un macro trouvé sur internet qui me permet de trouver le nom de la shape présente dans une cellule.

    Je fonctionne avec un Offset.

    Sur la même ligne, à la gauche du bouton principale (Rectangle bleu) , se trouve 3 boutons aligner sur les trois cellules qui suivent vers la gauche.

    Nom : Capture.JPG
Affichages : 544
Taille : 12,9 Ko

    J'ai une macro qui me permet de savoir si la shape comportant le nom Image est présente.

    Tout fonctionne bien si il n'y a pas de shape avant
    Exemple:

    Shape présente seulement en Offset(0, -3) (Tout fonctionne bien)

    Shape présente en Offset(0, -2) et Offset(0, -3) (Il valide la shape présente en Offset(0, -2) même si la macro est pour valider la shape présente en Offset(0, -3)

    Je ne sais pas si je suis assez clair, mais voici mon code

    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
     
    Private Sub CommandButton6_Click()
       Dim xRg As Range
        Dim xShape As Shape
        Dim xFlag As Boolean
        On Error Resume Next
        Set xRg = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(0, -3)
        If xRg Is Nothing Then Exit Sub
        xFlag = False
        For Each xShape In ActiveSheet.Shapes
           If xShape.Name Like "*Image*" Then
                xFlag = True
            End If
        Next
        If xFlag Then
            MsgBox "Image exists!"
        Else
            MsgBox "Image does not exist"
        End If
    End Sub
    J'espère qu vous allez pouvoir m'aider!

    Merci

  2. #2
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Salut

    Pourrais tu expliquer ce que tu cherches à faire plutôt. Quel est le but? Tu cliques sur quoi et tu souhaiterais obtenir quoi?

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  3. #3
    Membre averti
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Octobre 2015
    Messages
    54
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Conseil

    Informations forums :
    Inscription : Octobre 2015
    Messages : 54
    Par défaut
    La raison de mon utilisation du Offset est parce que j'ai plusieurs boutons sur la feuille.

    Le offsett me permet de localiser la bonne shape.

    Cette situation est sans reproches.

    Ce que je cherche à faire.

    J'ai un userform avec 3 boutons qui me permet de ciblé les boutons présents dans ma feuille active de 1 à 3 Nom : Capture.JPG
Affichages : 529
Taille : 12,9 Ko.

    Ma problématique est lorsque je clique sur le bouton 1, qui est associé au offset (0, -3), il ne vérifie pas seulement la cellule du offset. Il débute par valider le nom du offset (0, -1) ensuite, le offset (0, -2) pour terminer avec le offset (0, -3). Dans l'éventualité que le nom du bouton du offset (-0, -1) est le même que la recherche, il m'indique "Image exist", alors que dans le offset (0, -3) le nom n'est pas le même et je devrais avoir la réponse du msgbox "Image does not exist"

    Je sais pas si je suis assez clair une fois de plus.

    Merci de vous pencher sur mon problème

  4. #4
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 122
    Par défaut
    Hum, quelque chose comme ç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
    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
    40
    41
    42
    43
    Function IsBoutonOK(CellBouton As Range, NomBouton As String) As Byte
    'IsBoutonOK renvoit
        '0 si la cellule ne comporte pas de bouton
        '1 si un bouton est présent mais n'a pas le bon nom
        '2 si le bouton porte le bon nom
    Dim aShp As Shape
     
        'On boucle sur les shape de la feuille
        For Each aShp In CellBouton.Worksheet.Shapes
            'On regarde si le shape est bien dans la cellule pointée
            If aShp.TopLeftCell Is CellBouton Then
                'Le bouton est dans la cellule CellBouton, on vérifie son nom
                IsBoutonOK = IIf(aShp.Name <> NomBouton, 1, 2)
                Exit For
            End If
        Next
     
    End Function
     
     
    Sub test()
    Dim xRg As Range
    Dim xShape As Shape
    Dim xFlag As Byte
     
        On Error Resume Next
        'Il vaudrait mieux nomer la feuille plutôt que d'utiliser ActiveSheet
        Set xRg = ActiveSheet.Shapes(Application.Caller).TopLeftCell.Offset(0, -3)
        On Error GoTo fin
     
        If Not xRg Is Nothing Then
            xFlag = IsBoutonOK(xRg, "Image")
            If xFlag > 1 Then
                'Le bouton est bien dans la cellule est porte le bon nom
            ElseIf xflg > 0 Then
                'Le bouton porte un nom différent mais est présent dans la cellule
            Else
                'Pas de bouton dans cette cellule
            End If
        End If
     
     
    End Sub
    Non testé

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. changer le nom d'une database avec vb.net
    Par top_skiner dans le forum VB.NET
    Réponses: 2
    Dernier message: 16/09/2008, 14h46
  2. Renommer le nom d'une colonne avec toad
    Par lightzeus dans le forum Toad
    Réponses: 4
    Dernier message: 13/08/2008, 15h34
  3. [MySQL] Récupérer le nom d'une colonne avec le nom de la table
    Par hacksi dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 30/06/2008, 11h15
  4. Recuperer le nom d'une table avec un RowID ?
    Par Arvulis dans le forum Administration
    Réponses: 9
    Dernier message: 09/01/2008, 16h09
  5. [Access] Nom d'une table avec un espace dans SQL
    Par Corsaire dans le forum Langage SQL
    Réponses: 7
    Dernier message: 21/04/2006, 15h50

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