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 :

Variable dans UserForm


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
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2013
    Messages : 23
    Par défaut Variable dans UserForm
    Bonjour à tous,

    Je souhaiterai par le biais d'un UserForm indiquer des informations sur les hôtels placés sur une carte par des petits carrés.

    Donc lorsqu'on clique sur le carré correspondant à un hôtel en particulier, je fais appel à une variable (code de l'hotel) qui sera ma base de la recherchev inclue dans l'UserForm pour donner plus d'indications.

    Ma macro se fait donc en 2 étapes:

    1ere etape: créer une variable et lui attribuer une valeur en fonction du carré sur lequel on clique:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Dim numcath As String
     
    Sub Rectangle2_Cliquer()
    numcath = 1001
    UserForm1.Show
     
    End Sub

    2eme Etape: Utiliser la variable comme valeur pour ma textbox1, qui sert de base pour ma recherchev.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private Sub UserForm_Initialize()
    Me.TextBox1 = numcath
     
    With Me
        .TextBox2 = Application.VLookup((Me.TextBox1), [Feuil2!(A1:E4)], 2, False)
        .TextBox3 = Application.VLookup((Me.TextBox1), [Feuil2!(A1:E4)], 3, False)
        .TextBox4 = Application.VLookup((Me.TextBox1), [Feuil2!(A1:E4)], 4, False)
        .TextBox5 = Application.VLookup((Me.TextBox1), [Feuil2!(A1:E4)], 5, False)
    End With
    End Sub
    Cependant le débogueur se met en route et je n'arrive pas à voir où ça coince...
    Quelqu'un pour me sortir de cette impasse?

    Merci Beaucoup,
    Victor

    PS: Par soucis de confidencialité, j'ai reproduit ma matrice avec des cathédrale, mais le principe est exactement le même!! (Voir PJ)Carte.xlsm

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    J'ai modifié le code.

    1) Code du UserForm
    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
    Private Sub CommandButton1_Click()
    Unload Me
    End Sub
     
    Private Sub UserForm_Initialize()
    Dim var
    '---
    var = Sheets("Feuil2").UsedRange
     
    TextBox1 = numcath
    'TextBox1 prend la valeur de numcath en fonction du carré sur lequel on a préalablement cliqué
     
    With Application.WorksheetFunction
      TextBox2 = .VLookup(numcath, var, 2, False)
      TextBox3 = .VLookup(numcath, var, 3, False)
      TextBox4 = .VLookup(numcath, var, 4, False)
      TextBox5 = .VLookup(numcath, var, 5, False)
    End With
    End Sub
    2) Code du module Standard
    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
    Public numcath As Long  '///mis en portée publique (et en Long)
     
    Sub Rectangle2_Cliquer()
    'Numéro de la cathédrale d'Amiens en Feuil2 est 1001
    numcath = 1001
    UserForm1.Show
    End Sub
     
    Sub Rectangle3_Cliquer()
    'Numéro de la cathédrale d'Amiens en Feuil2 est 1002
    numcath = 1002
    UserForm1.Show
    End Sub
     
    Sub Rectangle4_Cliquer()
    'Numéro de la cathédrale d'Amiens en Feuil2 est 1003
    numcath = 1003
    UserForm1.Show
    End Sub
    *****
    Maintenant, si vous avez une pléthore d'objets Rectangle (les petits carrés), il serait judicieux de les renommer chacun pour pouvoir utiliser une seule procédure Rectangle_Cliquer. Ce serait au sein de cette procédure qu'on pourrait identifier quel Rectangle a appelé et transmettre ainsi le renseignement au UserForm.
    Fichiers attachés Fichiers attachés

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2013
    Messages : 23
    Par défaut Merci!
    Bonjour PMO,

    Tout d'abord merci beaucoup pour votre réponse ainsi que votre aide. J'ai appliqué la macro sur mon document de base qui fonctionne, mais il est vrai qu'avec plus de 200 objets (carrés, triangles isocèles et ellipses - chacun représentant un type d’hôtel), votre réflexion sur le fait de les renommer puis d'utiliser le nom dans une macro est très adéquat.

    J'essaye de trouver la solution de moi même et dans le cas où j'ai à nouveau un blocage, je re-posterai un message sur la discussion.

    Encore merci!

    Victor

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    23
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : Janvier 2013
    Messages : 23
    Par défaut J'ai trouvé!
    Après de longues recherches sur 'commet utiliser le nom d'une forme dans une macro', j'ai enfin trouvé le code adéquat!!

    Pour ceux qui seraient intéressés :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Callingshapename = ActiveSheet.Shapes(Application.Caller).Name
    'Callingshapename a désormais le nom de la forme sélectionnée.
    Encore merci PMO, tu m'enlèves une épine du pied!

    Victor

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Juin 2009
    Messages
    652
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2009
    Messages : 652
    Par défaut
    Bonjour,

    On peut aller plus loin avec l'exploitation des objets.
    Voir l'exemple en pièce jointe.
    Fichiers attachés Fichiers attachés

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

Discussions similaires

  1. Déclaration Variable dans Userform et ThisWorkbook
    Par grimgrim dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 12/09/2018, 08h14
  2. [XL-2010] Itération de variable dans UserForm
    Par celinepug dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/07/2014, 16h16
  3. déclaration de variable dans userform!
    Par lizzie59 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/04/2013, 16h49
  4. Recuperé une variable dans userform
    Par backdraf dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/11/2009, 11h08
  5. Rentrer une selection de taille variable dans une liste d'un userform
    Par Bubale dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 14/05/2008, 18h59

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