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 :

transferer valeur d'une variable dans un formulaire [XL-2010]


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
    Sapeur pompier
    Inscrit en
    Février 2008
    Messages
    442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Sapeur pompier
    Secteur : Service public

    Informations forums :
    Inscription : Février 2008
    Messages : 442
    Par défaut transferer valeur d'une variable dans un formulaire
    Bonjour,

    J'ai un gros soucis avec les variables, plus je lis les tutos et plus je me noies

    Voila lorsque je cdouble clique sur une cellule, je récupere le numéro de ligne puis j'ouvre un formulaire d'identification, puis un autre formulaire s'ouvre.
    C'est dans ce deuxieme formulaire que je souhaite me servir de la valeur de la ligne récupérée, mais je ne sais pas comment récupérer cette valeur.
    Pouvez vous me venir en aide SVP?

    Je vous en remercie par avance
    Seb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    'verifie si c'est la colonne 16,17 ou 18 qui est activée
        If Target.Column > 15 And Target.Column < 19 Then
     
            'recupere le numéro de ligne de la cellule activée
     
               Cancel = True
                numlig = Target.Row
     
            'demande le mot de passe en ouvrant le formulaire
                        UsfMDPDmr.Show
        End If
    End Sub
    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
    Private Sub UserForm_Initialize()
    'remet le champs MDP a 0 et met le focus sur lui
        TxtMdpDMR.Value = ""
        TxtMdpDMR.SetFocus
     
     
    End Sub
     
    Private Sub CmdAnnuler_Click()
        TxtMdpDMR.Value = ""
        Unload Me
        End Sub
     
    Private Sub CmdOK_Click()
    'on verifie si le mot de passe entrée est le bon
     
        If TxtMdpDMR.Text = "toto" Then
        'on ouvre le formulaire de saisie et on ferme celui-ci
            usfdmr.Show
            Unload UsfMDPDmr
        Else
            MsgBox ("mauvais mot de passe")
        End If
     
    End Sub

  2. #2
    Membre expérimenté
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 146
    Par défaut
    Question moultes fois posée, me semble-t-il...

    Dans les déclarations de n'importe quel formulaire UserFormX, tu déclares :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public MaValeurEchange as (cequetuveux : String, Variant, Single)
    Et n'importe où dans le code (sur les WorkSheets ou sur les autres UserForm), tu as le droit de faire appel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    UserFormX.MaValeurEchange = (cequejeveuxluipasser)
    Il ne te reste plus, dans ton UserFormX, qu'à récupérer la valeur de ta variable (à son chargement ou activation par exemple)!

  3. #3
    Invité
    Invité(e)
    Par défaut Bonjour,
    Chaque contrôle d'un UserForm dispose d'une propriété TAG:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    'verifie si c'est la colonne 16,17 ou 18 qui est activée
        If Target.Column > 15 And Target.Column < 19 Then
     
            'recupere le numéro de ligne de la cellule activée
     
               Cancel = True
                numlig = Target.Row
     
            'demande le mot de passe en ouvrant le formulaire
                        UsfMDPDmr.Tag= Target.Row
                        UsfMDPDmr.Show
        End If
    End Sub

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub CmdOK_Click()
    'on verifie si le mot de passe entrée est le bon
     
        If TxtMdpDMR.Text = "toto" Then
        'on ouvre le formulaire de saisie et on ferme celui-ci
             usfdmr.Tag=Me.Tag
            usfdmr.Show
            Unload Me
        Else
            MsgBox ("mauvais mot de passe")
        End If
     
    End Sub
    Code Exemple dans usfdmr : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub UserForm_Activate()
    MsgBox ActiveSheet.Cells(Me.Tag, 1)
    End Subb
    Dernière modification par Invité ; 26/02/2014 à 13h14.

  4. #4
    Membre expérimenté
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    146
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 146
    Par défaut
    +1, rdurupt...

    Y'a des jours, on se fait des noeuds au cerveau pour rien

    Mais ma suggestion reste valable si on doit passer au UserForm plusieurs valeurs, en particulier de types différents, sans être obligé de faire ensuite un Split(.Tag,";") par exemple...

  5. #5
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par Phil'oche Voir le message
    +1, rdurupt...

    Y'a des jours, on se fait des noeuds au cerveau pour rien

    Mais ma suggestion reste valable si on doit passer au UserForm plusieurs valeurs, en particulier de types différents, sans être obligé de faire ensuite un Split(.Tag,";") par exemple...
    Perso je préfère un sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Charger(Var1 as string,Var2 as integer)
    MaVar1Local= var1
    MaVar2Local= var2
    me.show
    end sub

  6. #6
    Invité
    Invité(e)
    Par défaut Bonjour,
    On dit que la nuit porte conseil, celle ci ma suggéré de préconiser de façon exceptionnel l'emploi d'ActiveCell. en effet, le double click sur une cellule entraîne une avalanche de formulaires!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Public Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
    'verifie si c'est la colonne 16,17 ou 18 qui est activée
        If Target.Column > 15 And Target.Column < 19 Then
     
            'recupere le numéro de ligne de la cellule activée
     
               Cancel = True
                numlig = Target.Row
     
            'demande le mot de passe en ouvrant le formulaire
                        UsfMDPDmr.Show
        End If
    End Sub
    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
    Private Sub UserForm_Initialize()
    'remet le champs MDP a 0 et met le focus sur lui
        TxtMdpDMR.Value = ""
        TxtMdpDMR.SetFocus
     
     
    End Sub
     
    Private Sub CmdAnnuler_Click()
        TxtMdpDMR.Value = ""
        Unload Me
        End Sub
     
    Private Sub CmdOK_Click()
    'on verifie si le mot de passe entrée est le bon
     
        If TxtMdpDMR.Text = "toto" Then
        'on ouvre le formulaire de saisie et on ferme celui-ci
            usfdmr.Show
            Unload UsfMDPDmr
        Else
            MsgBox ("mauvais mot de passe")
        End If
     
    End Sub
    Code Exemple dans usfdmr : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize()
        Me.Tag = ActiveCell.Row
        Me.TextBox1 = ActiveSheet.Cells(Me.Tag, 1)
        Me.TextBox2 = ActiveSheet.Cells(Me.Tag, 2)
    End Sub

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 26/07/2006, 16h52
  2. Valeur d'une requête dans 1 formulaire
    Par liop49 dans le forum Requêtes et SQL.
    Réponses: 11
    Dernier message: 07/07/2006, 10h02
  3. [PHP-JS] valeur d'une variable dans innerHTML
    Par hammag dans le forum Langage
    Réponses: 2
    Dernier message: 06/07/2006, 12h30
  4. Valeur d'une variable dans une Session
    Par sysinfo33 dans le forum Struts 1
    Réponses: 4
    Dernier message: 30/06/2006, 11h53
  5. Réponses: 2
    Dernier message: 08/06/2006, 13h48

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