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 :

problème avec userform


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Par défaut problème avec userform
    Bonjour,

    J'ai un petit souci avec une userform. En mode modal, mon code tourne très bien. Mais je souhaite que la page reste accessible, du coup lorsque je passe en mode non modal, l'userform ne se ferme plus, et pire le bouton "valider" que j'ai crée ne fonctionne plus!

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    difficile de répondre sans voir ta procédure.


    michel

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Par défaut
    euuh oui en effet. Donc, en ce qui concerne le code maître:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For lgcount = 10 To DerniereLigne
        If Trim(Cells(lgcount, 5).Value) <> "Valeur1" And Trim(Cells(lgcount, 5).Value) <> "Valeur2" And _
            Trim(Cells(lgcount, 5).Value) <> "Valeur3" And Trim(Cells(lgcount, 5).Value) <> "Valeur4" And _
            Trim(Cells(lgcount, 5).Value) <> "Valeur5" And Trim(Cells(lgcount, 5).Value) <> "Valeur6" And _
            Trim(Cells(lgcount, 5).Value) <> "Valeur7" Then
                ActiveSheet.Cells(lgcount, 5).Activate
                MsgBox (Cells(lgcount, 5) & " n'est pas un pôle reconnu! Veuillez en choisir un parmi la liste qui suivra.")
            UserForm1.Show
        End If
    Next
    et la 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
    20
    Public Sub CommandButton1_Click()
     
    If ComboBox1.Text <> "" Then
        ActiveCell.Value = ComboBox1.Value
        Unload Me
    End If
     
    End Sub
     
    Public Sub UserForm_Initialize()
     
    ComboBox1.AddItem "Valeur1"
    ComboBox1.AddItem "Valeur2"
    ComboBox1.AddItem "Valeur3"
    ComboBox1.AddItem "Valeur4"
    ComboBox1.AddItem "Valeur5"
    ComboBox1.AddItem "Valeur6"
    ComboBox1.AddItem "Valeur7"
     
    End Sub

  4. #4
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Bonjour,
    1°) les procédures de l'UF doivent êtres en 'Private'
    Avec cette modification l'UF s'efface normalement.
    2°) Un UF ne peu être ouvert qu'en modal.

    Suggestions...
    Plutôt que de mettre un MsgBox et ensuite la sélection... supprimé le MsgBox ajouter un label dans UF et y entrer le message, de cette facon tout se fait en 1 seule opération. Et en plus, supprimer le bouton et mettre l'action dans le click du combo.

    J'ai testé, ca fonctionne..
    A+

  5. #5
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Par défaut
    Bonjour,

    D'acc pour le "private"! En revanche:

    ajouter un label dans UF et y entrer le message
    je dois avouer que les UF ne sont pas ma tasse de thé, je viens d'y faire face pour la première fois! C'est exactement ce que je voulais faire d'entrée, rassembler le message et l'UF mais faute de connaissances...Comment faire pour prendre en compte la valeur de ma celluleactive?

  6. #6
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    Pour mettre un label c'est pas bien compliqué, quand tu est dans l'éditeur VBA tu ouvre le UF, dés qu'il est ouvert tu peu y glisser les contrôles que tu veux, en l'occurence un label. (dans la boite outils c'est 'intitulé')
    Tu le positionne sur la feuille comme tu veux.

    Ensuite tu peu travailler avec les fonctions VBA
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub UserForm_Activate()
       'Adresse à adapter bien sur.
       Me.Label1.Caption = Cells(1, 1).Value
    End Sub
    A+

  7. #7
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Par défaut
    ahaaaa! voilà ce que ça donne:

    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
    Option Explicit
     
    Private Sub ComboBox1_Change()
    If ComboBox1.Text <> "" Then
            ActiveCell.Value = ComboBox1.Value
            Unload Me
        End If
    End Sub
     
    Private Sub UserForm_Activate()
     
    Me.Label1.Caption = ActiveCell.Value & " n'est pas un pôle reconnu! Veuillez en choisir un parmi la liste suivante:"
     
    End Sub
     
    Private Sub UserForm_Initialize()
     
    ComboBox1.AddItem "Valeur1"
    ComboBox1.AddItem "Valeur2"
    ComboBox1.AddItem "Valeur3"
    ComboBox1.AddItem "Valeur4"
    ComboBox1.AddItem "Valeur5"
    ComboBox1.AddItem "Valeur6"
    ComboBox1.AddItem "Valeur7"
     
    End Sub
    Ca c'est cool du coup j'ai supprimé la msgbox. Par contre, comment je peux faire pour que l'utilisateur puisse avoir l'accès sur la feuille en cours?

  8. #8
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Par défaut
    C'est pas possible tant que tu ne ferme pas le UF, (Unload)
    quitte à le rappeler pour une autre entrée.

    Edit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub ComboBox1_Change()
    If ComboBox1.Text <> "" Then
            ActiveCell.Value = ComboBox1.Value
            Unload Me
        End If
    End Sub
    Doit etre dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Private Sub ComboBox1_Click
    La condition n'est pas nécessaire, le texte ne peut JAMAIS être vide, si tu met le combo à interdiction de changer le texte (j'ai pas la propriété en tête mais tu peu aussi chercher un peu)
    Et si ton code passe bien par le Unload, ta feuille Excel est disponnible.

  9. #9
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    192
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 192
    Par défaut
    et oui mais une fois que la combobox est enlevée, l'accès de l'utilisateur sur la feuille ne me sert à rien (ce que je te montre n'est qu'un bout de mon code). Mais même maintenant, une fois que la feuille est déchargée la feuille est dispo il y a pas de souci. Il me semblait que j'avais vu dans les tutos que l'UF pouvait rester ouverte et avoir accès à la feuille...Mais bon, c'est pas grave, je ferai avec c'est déjà pas mal en tout cas si quelqu'un voit une solution... dans tous les cas muchas

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

Discussions similaires

  1. probléme avec userform
    Par Kenny064 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 13/11/2012, 21h47
  2. Problème avec Userform
    Par jalseth dans le forum Général VBA
    Réponses: 2
    Dernier message: 12/09/2008, 00h01
  3. Réponses: 4
    Dernier message: 25/05/2007, 11h11
  4. [VBA-E] Problème avec une UserForm
    Par jamelie dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 16/05/2007, 14h20
  5. [VBA-E] Problème avec ShowModal dans un UserForm
    Par damsmut dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/07/2006, 09h19

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