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 :

Stocker une variable lors de l'appel d'une commande ActiveX


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Octobre 2018
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 216
    Par défaut Stocker une variable lors de l'appel d'une commande ActiveX
    Bonjour,

    Est-il possible de stocker une variable (voire même un object complexe) lors de l'appel d'une commande ActiveX ? Je préférerais ne pas utiliser de variable globale.

    L'idée serait de pouvoir conserver des données avant l'appel d'une commande ActiveX et d'y accèder après.

    Merci par avance

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

    Perso, je stocke mes données (répertoires, fichiers, etc..) dans des zones nommées dans un onglet de paramètres.

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Citation Envoyé par Orbeaman Voir le message
    Bonjour,

    Est-il possible de stocker une variable (voir même un object complexe) lors de l'appel d'une commande ActiveX ? Je préférerais ne pas utiliser de variable globale.

    L'idée serait de pouvoir conserver des données avant l'appel d'une commande ActiveX et d'y accèder après.

    Merci par avance
    Bonjour
    tu devrais te relire avant de valider ton message

    ta ligne 2 est en contradiction avec la ligne 1
    quand au sujet lui meme je lis dans ta demande (voir même un object complexe)

    je dirais que pour stoquer un object il n'y a pas d'autre moyen qu'une variable

    maintenant pour stoquer une données ne serait-ce que le nom de l'object donc string effectivement tu peux stoquer dans un sheets prevu pour ca

    voir aussi le tag de l'object si c'est un activX ou userform (sauf sur activX sur sheets dont le tag est innacessible par VBAsi je ne me trompe pas )
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Octobre 2018
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 216
    Par défaut
    Merci pour vos réponse !

    Oui, je viens de m'apercevoir que ma question n'était pas très clair. Mais en mentionnant un objet, je ne voulais pas me limiter à un simple nombre ou une chaine de caractères... En fait, je ne voudrais pas non-plus me limiter à un ActiveX. Dans ce cas là, je crains qu'il faudrait écrire une fonction spécifiquement pour l'écriture et la lecture des (sous-)propriétés de l'objet, non ?

    Par exemple, avec un événement Worksheet_SelectionChange est-il possible de changer la couleur de la ligne sélectionnée et restaurer la couleur originale en sélectionnant une autre ligne (c'est à dire faire appel à la précédente ligne lors de la sélection d'une nouvelle) ?

    Je ne suis pas sûr ce que tu sous-entends par "tag"... Pour moi, ça serait juste un simple label ?

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    tu ne veux pas utiliser de variable globale OK MAIS!!!!....a tu deja entendu parler de variable static a l'interieur de levenement puisque ici par exemple il sagit de l'evenement selectionchange dans un sheets
    quel est l'avantage de ces variable static
    en fait elle se comportent un peu comme des variable globale mais a l'interieur de l'evenement autrement dit mais une fois l'evenement efectué quand cet evenement est re efectué la variable a garder sa dernier valeur et elle peu etre utilisable , et cela que ce soit un object ou une valeur (string,long,integer,double)

    en voici un tout petit exemple de rien du tout ,justement sur l'evenement selection_change du sheets
    il te faut alors deux chose memoriser la cellule et sa couleur donc ici 2 variables static
    demo
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Static oldcel As Range: Static oldcouleur As Long
           If Not oldcel Is Nothing Then oldcel.Interior.Color = oldcouleur
           If Target.Column = 1 Then
              Set oldcel = Target: oldcouleur = Target.Interior.Color
            Target.Interior.Color = vbRed
        End If
    End Sub
    Nom : demo.gif
Affichages : 144
Taille : 174,7 Ko
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre éclairé
    Homme Profil pro
    Ingénieur aéronautique
    Inscrit en
    Octobre 2018
    Messages
    216
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur aéronautique

    Informations forums :
    Inscription : Octobre 2018
    Messages : 216
    Par défaut
    Merci Patrick, c'est exactement ce que je cherchais.

    A vrai dire, j'ai récemment créée une pseudo-classe statique (en modifiant les attribues), ce qui se rejoint en quelque sorte. Je verrai pour les objets ActiveX dans un second temps.

  7. #7
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    et bien pour les activx c'est pareil sauf que a l'inverse des cellules il n'y a pas d'evenement regroupant tout les labels(ActivX)
    alors on va faire une seule fonction que l'evenement de chaque evenement label l'abel vont appeler
    et on va ajouter l'evenement selection change pour remettre le dermier label cliqué a l'origine
    alors voila comment on fait
    les evenement apel label et sheets

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Label1_Click()
        chang_Lab Label1.Object, True
    End Sub
    Private Sub Label2_Click()
        chang_Lab Label2.Object, True
    End Sub
    Private Sub Label3_Click()
        chang_Lab Label3.Object, True
    End Sub
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        chang_Lab suit:=False
    End Sub
    tu vois rien de bien compliqué

    c'est quoi ce "true" ou ce "suit" :
    et bien c'est le 2d argument de la fonction general des labels
    il me sert justement a metre ou pas la couleur du clik
    autrement dit dans les label suit est a true et pour le selection_change du sheets il est a false
    cette condition me sert simplement a séparer la fonction en deux si c'est apelé par un label ca remet l'ancien et ca met en rouge le nouveau
    si c'est apellé par le selection_change ca remet l'ancien et c'est tout
    remarque aussi les arguments de la function qui sont "Optional" ca me permet de simplifier les apels quand j'injecte pas tout les argument (voir evenement selection_change)
    tout ca maintenant dit voila le code la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Function chang_Lab(Optional ByRef label As Object, Optional suit As Boolean)
        Static lab As Object: Static couleur As Long
        If Not lab Is Nothing Then lab.BackColor = couleur
        If suit Then
            Set lab = label: couleur = label.BackColor
            label.BackColor = vbRed
        End If
    End Function
    demo

    Nom : demo.gif
Affichages : 131
Taille : 170,1 Ko
    maintenant tu sais quasiment tout
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

Discussions similaires

  1. Réponses: 3
    Dernier message: 29/05/2015, 17h24
  2. Utilisation d'une variable lors de l'appel de la fonction
    Par guy16 dans le forum Général Python
    Réponses: 18
    Dernier message: 12/05/2015, 15h47
  3. Réponses: 11
    Dernier message: 10/10/2014, 14h54
  4. Réponses: 3
    Dernier message: 08/10/2014, 15h48
  5. Réponses: 5
    Dernier message: 06/01/2006, 11h41

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