Lancer une macro avec un clic

koko_spv89

XLDnaute Occasionnel
Bonjour à tous

Dans VB j'ai un code qui me lance une page "popup" en face d'une image que je viens de déplacer, cette fenetre s'afficher lorsque je viens cliquer sur un bouton de commande.

J'aimerai que fenetre popup puisse s'ouvrir également lorsque je fais un clic droit sur l'ojbet.
par exemple, une ligne dans le menu clic droit intitulé "afficher infos" et ça m'affiche 'FenêtrePOPUP'.

C'est possible facile? j'ai vu certains code sur le net mais c'est pr ajouter une valeur à une cellule par exemple et non en rapport avec une image.
 
Dernière édition:

gilbert_RGI

XLDnaute Barbatruc
Re : Lancer une macro avec un clic

Bonjour à tous

Dans VB j'ai un code qui me lance une page "popup" en face d'une image que je viens de déplacer, cette fenetre s'afficher lorsque je viens cliquer sur un bouton de commande.

J'aimerai que fenetre popup puisse s'ouvrir également lorsque je fais un clic droit sur l'ojbet.
par exemple, une ligne dans le menu clic droit intitulé "afficher infos" et ça m'affiche 'FenêtrePOPUP'.

C'est possible facile? j'ai vu certains code sur le net mais c'est pr ajouter une valeur à une cellule par exemple et non en rapport avec une image.

Bonjour

en admettant que la fençetre popup soit un userform

voilà un code à mettre dans un module standard

Code:
Public Const NOMMACRO As String = "nom_affiché"


Sub Auto_Open()
    Dim mBar As CommandBarControl

    On Error Resume Next
    Set mBar = Application.CommandBars("Cell").Controls(NOMMACRO)
    On Error GoTo 0
    If mBar Is Nothing Then
        With Application.CommandBars("Cell")
            With .Controls.Add(msoControlButton)
                .Caption = NOMMACRO
                .OnAction = "macro"
                .FaceId = 60 
            End With
        End With
    End If
End Sub

Sub Auto_Close()
Unload UserForm1
  On Error Resume Next
  Application.CommandBars("Cell").Controls(NOMMACRO).Delete
End Sub

Sub macro()
UserForm1.Show (0)
End Sub

avec ce code dans le clique droit de la souris en bas de la liste déroulante il y aura macro

mettre le n° de l'icone voulu

Salutations

RGI
 

koko_spv89

XLDnaute Occasionnel
Re : Lancer une macro avec un clic

RE,

Nan ma fenetrepopup n'est pas un userform, c'est un groupement de plusieurs choses et (bulle [forme automatique], zones de texte).

voir en PJ à quoi ça ressemble....

Les Combobox ne font pas parti de fenetre popup.

Merci Gilbert mais comme ce n'est pas un userform ça ne marchera pas j'imagine?!
 

Pièces jointes

  • fenetre popup.JPG
    fenetre popup.JPG
    17.1 KB · Affichages: 104

gilbert_RGI

XLDnaute Barbatruc
Re : Lancer une macro avec un clic

RE,

Nan ma fenetrepopup n'est pas un userform, c'est un groupement de plusieurs choses et (bulle [forme automatique], zones de texte).

voir en PJ à quoi ça ressemble....

Les Combobox ne font pas parti de fenetre popup.

Merci Gilbert mais comme ce n'est pas un userform ça ne marchera pas j'imagine?!
Bonjour

il est possible de rendre cet ensemble soit visible ou non visible avec du code VBA

donc à partir de la tu crées une macro ayant le code

et celui que j'ai fourni te permettra de le manipuler

mais il est aussi possible de faire un userform avec cet ensemble :D

à toi de voir

Salutations

RGI
 

koko_spv89

XLDnaute Occasionnel
Re : Lancer une macro avec un clic

RE,

Le code pour la rendre visible est invisible je l'ai :
Code:
Public Sub [B][COLOR="Red"]Valider_Déplacement_Click()[/COLOR][/B]

Dim Sh As Shape
Dim i As Byte, Ligne As Integer
    With Feuil5
         For Each Sh In .Shapes
            If Left(Sh.Name, 5) = "Lance" Then
                Ligne = Entete + Val(Replace(Sh.Name, "Lance", ""))
                Feuil1.Range("t" & Ligne) = (Int(Sh.Top * 1000000)) + Sh.Left
                If Feuil1.Range("u" & Ligne).Value <> Feuil1.Range("t" & Ligne).Value Then
                   [B] [COLOR="red"]Affiche Sh, Shapes("fenetre"), CoinHaut, CoinGhe
                    Affiche Sh, ComboBox1, CoinHaut + 28, CoinGhe + 35
                    Affiche Sh, ComboBox2, CoinHaut + 65, CoinGhe + 30
                    Affiche Sh, ComboBox3, CoinHaut + 110, CoinGhe + 40
                    Affiche Sh, ComboBox4, CoinHaut + 150, CoinGhe + 10
                    Affiche Sh, ValiderSaisie, CoinHaut + 180, CoinGhe + 35
                    Affiche Sh, FermerSaisie, CoinHaut + 3, CoinGhe + 105
                    Affiche Sh, AnnulerLance, CoinHaut + 180, CoinGhe + 70[/COLOR][/B]                    ComboBox4.Value = [Ext_Tempo]
                End If
            End If
        Next Sh
    End With
    
End Sub

Private Sub [B][COLOR="red"]ValiderSaisie_Click()[/COLOR][/B]

Dim NumeroLance As Byte, i As Byte
   For i = 1 + Entete To NbLances + Entete
        If Feuil1.Range("t" & i).Value <> Feuil1.Range("u" & i).Value Then NumeroLance = i
    Next i
    Feuil1.Range("K" & NumeroLance) = ComboBox1.Value
    Feuil1.Range("l" & NumeroLance) = ComboBox2.Value
    Feuil1.Range("M" & NumeroLance) = ComboBox3.Value
    Feuil1.Range("N" & NumeroLance) = ComboBox4.Value
    [B][COLOR="red"]FenêtrePOPUP (False)[/COLOR][/B]

    For i = 1 + Entete To NbLances + Entete
      Feuil1.Range("u" & i).Value = Feuil1.Range("t" & i).Value
    Next i
    
End Sub

Sub Affiche(Sh As Shape, tatiak As Object, T As Long, L As Long)

    With tatiak
        .Visible = True
        .Top = Sh.Top + T
        .Left = Sh.Left + L
    End With
    
End Sub

Sub FenêtrePOPUP(ON_OFF As Boolean)

    Shapes("fenetre").Visible = ON_OFF
    ComboBox1.Visible = ON_OFF
    ComboBox2.Visible = ON_OFF
    ComboBox3.Visible = ON_OFF
    ComboBox4.Visible = ON_OFF
    ValiderSaisie.Visible = ON_OFF
    FermerSaisie.Visible = ON_OFF
    AnnulerLance.Visible = ON_OFF
    
        
End Sub

Qd je clique sur valider déplacement j'ai la page et tout ce qui va bien qui s'affiche, et qd je clique sur validerSaisie ben là tout se faire apres m'avoir mi les valeurs ds les cases qui vont bien!

Le truc et que j'aimerai, indépendament de cet affichage par le bouton de commande "Valider déplacement", je puisse par l'intermédiaire d'un clic droit sur l'image, je puiss avoir dans le menu un lien qui me dise m'affiche la fenetrePOPÜP !
 

koko_spv89

XLDnaute Occasionnel
Re : Lancer une macro avec un clic

RE,

C pas la macro en elle même qui me pose soucis car ça j'avais réussi à la faire. Par contre ce code permet d'afficher une nouvelle ligne dans le menu d'une cellule et non qd je clique droit sur l'image.
 
G

Guest

Guest
Re : Lancer une macro avec un clic

bonjour Koko,

Y'avait longtemps que je n'avais pas eu l'occasion de te répondre...ton projet avance semble-t-il.

Tu peux simuler un click-droit avec une image de la "boîte à outil contrôles" mais pas avec une image de "Insertion/image".

Simulation clic-droit:
Code:
Option Explicit
Dim bClickDroit As Boolean

Private Sub Image1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    bClickDroit = Button = 2
End Sub

Private Sub Image1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
    If bClickDroit Then
        MsgBox "coucou je peux lancer la macro que je veux!"
    End If
End Sub

Où Image1 est ton image. code à insérer dans le module de feuille qui comporte l'image.

A bientôt
 
Dernière modification par un modérateur:

Discussions similaires

Statistiques des forums

Discussions
312 572
Messages
2 089 819
Membres
104 284
dernier inscrit
Yohan90