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 de macro pour une liste déroulante à choix multiple


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    autre
    Inscrit en
    Juillet 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : autre
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2015
    Messages : 8
    Par défaut problème de macro pour une liste déroulante à choix multiple
    Bonjour,

    Je suis novice en VBA et j'ai un souci avec une macro qui ne fonctionne pas. Je suis sur Excel 2007 avec Windows 7 pro. Fichier en réseau.


    J'ai un long tableau dans lequel j'ai besoin de créer un liste déroulante à choix multiple. Cette liste, je l'ai faite sur un 2° onglet.
    Mon souci est que ma macro ne fonctionne pas = quand je double clique sur une cellule où devrait s'ouvrir ma liste à choix multiple, ça ne marche pas.
    Est-il possible que ce soit un problème de sécurité ?


    Voici les codes que j'ai sur la feuille de mon tableau principal (là où je veux que s'ouvre ma liste de choix multiple) :

    -------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
       If Intersect(Target, Range("O2:O" & Rows.Count)) Is Nothing Then
             Exit Sub
          Else
    '         Load UserForm1
             U_Liste.Show 1
       End If
    End Sub
    -------------------------------------


    Sur l'autre
    -------------------------------------
    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    'Option Explicit
    Dim L1 As Long
    Dim C2 As Long
     
    Private Sub CommandButton1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
     
    End Sub
     
    'ListBox MultiSelect
    Private Sub UserForm_Initialize()
    Dim I As Long
       With ListBox1
          .Clear
          .BackColor = Feuil2.Range("A1").Interior.Color
          .Font.Name = "Arial Narrow"
          .Font.Size = 12
          .Font.Bold = True
          .MultiSelect = 1
              For L = 2 To Feuil2.Range("A" & Rows.Count).End(xlUp).Row
                  .AddItem Feuil2.Range("A" & L).Value
              Next
       End With
    ' Numero de la Ligne
       L1 = Selection.Row
    ' Nombre de Lignes
       L2 = Selection.Rows.Count
    ' Nombre de colonnes
       C1 = Selection.Columns.Count
    ' Depart de la colonne
       C2 = Selection.Column
    End Sub
     
    Private Sub CommandButton1_Click()
    Dim I As Long
    Dim ValeurARetourner As String
    '   Cells(L1, C2).Value = ListBox1.List(ListBox1.ListIndex)
     
        For I = 0 To ListBox1.ListCount - 1
            If ListBox1.Selected(I) = True Then
                ValeurARetourner = ValeurARetourner & ListBox1.List(I) & " & "
            End If
        Next I
    Feuil1.Cells(L1, C2).Value = Left(ValeurARetourner, Len(ValeurARetourner) - 3)
    'UserForm1.Hide
    Unload Me
    End Sub
    -------------------------------------

    Auriez-vous une idée ?

    Merci d'avance.

  2. #2
    Membre actif
    Homme Profil pro
    Responsable des études
    Inscrit en
    Décembre 2012
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 51
    Par défaut
    Bonjour,

    Pourquoi ne fais tu pas une "validation de données" au lieu de faire appel à un userform?

    As tu activé tes macros?

    Sinon as tu bien nommé ton userform : U_Liste ?

  3. #3
    Membre du Club
    Femme Profil pro
    autre
    Inscrit en
    Juillet 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : autre
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2015
    Messages : 8
    Par défaut
    1/ Je suis actuellement sur une validation de données, mais du coup, je n'ai pas la possibilité de choisir plusieurs choix dans ce cas là. Ou alors je ne l'ai pas faite correctement. Si c'est possible, je veux bien savoir comment ?

    2/ Oui, dans la partie "sécurité des macros" du développeur, j'ai coché la case "accès approuvé au modèle d'objet du projet VBA" des paramètres de macros pour les développeurs. Ce n'est peut-être pas suffisant ? Faut-il aussi "Activer toutes les macros (non recommandé ; risque ... dangereux) ?

    3/ Oui.

    Merci de votre aide.

  4. #4
    Membre extrêmement actif
    Homme Profil pro
    Inscrit en
    Septembre 2013
    Messages
    1 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Septembre 2013
    Messages : 1 369
    Par défaut
    Bonsoir,

    2 exemples en PJ

    Avec Données/Validation

    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
     
    Private Sub Worksheet_Change(ByVal Target As Range)
     If Target.Address = "$C$2" And Target.Count = 1 Then
        Application.EnableEvents = False
        ValSaisie = Target
        Application.Undo
        p = InStr(Target, ValSaisie)
        If p > 0 Then
          Target = Left(Target, p - 1) & Mid(Target, p + Len(ValSaisie) + 1)
          If Right(Target, 1) = ":" Then
            Target = Left(Target, Len(Target) - 1)
          End If
        Else
            If Target = "" Then
              Target = ValSaisie
            Else
              Target = Target & ":" & ValSaisie
            End If
        End If
        Application.EnableEvents = True
     End If
    End Sub
    Avec ListBox

    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
    27
     
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Intersect([A2:A10], Target) Is Nothing Then
        Me.ListBox1.MultiSelect = fmMultiSelectMulti
        Me.ListBox1.List = Sheets("BD").Range("A2:A28").Value
        a = Split(Target, " ")
        If UBound(a) >= 0 Then
          For i = 0 To Me.ListBox1.ListCount - 1
            If Not IsError(Application.Match(Me.ListBox1.List(i), a, 0)) Then Me.ListBox1.Selected(i) = True
          Next i
        End If
        Me.ListBox1.Height = 150
        Me.ListBox1.Width = 100
        Me.ListBox1.Top = Target.Top
        Me.ListBox1.Left = Target.Left + Target.Width
        Me.ListBox1.Visible = True
      Else
          Me.ListBox1.Visible = False
      End If
    End Sub
     
    Private Sub ListBox1_Change()
     For i = 0 To Me.ListBox1.ListCount - 1
       If Me.ListBox1.Selected(i) = True Then temp = temp & Me.ListBox1.List(i) & " "
     Next i
     ActiveCell = Trim(temp)
    End Sub
    Jacques Boisgontier
    Fichiers attachés Fichiers attachés

  5. #5
    Membre du Club
    Femme Profil pro
    autre
    Inscrit en
    Juillet 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Aveyron (Midi Pyrénées)

    Informations professionnelles :
    Activité : autre
    Secteur : Bâtiment Travaux Publics

    Informations forums :
    Inscription : Juillet 2015
    Messages : 8
    Par défaut
    Bonjour,

    Désolée de n'avoir pas répondu + tôt, mais boulot-boulot...
    En fait, ça marchait bien, j'était en mode création !!
    Mais grâce à vos réponses, je découvre qu'on peut faire du "choix multiple" avec la "validation des données". Je ne vais pas l'utiliser sur mon tableau actuel, mais c'est intéressant de le savoir. Je testerai ultérieurement...

    Par contre, pour le moment, j'ai un autre problème : c'est pour l'impression de mon tableau. J'ai fait une macro qui marche très bien avec un aperçu avant impression, mon souci c'est que j'ai systématiquement 4 lignes blanches après mes données.
    J'ai fait en sorte que ne s'imprime que certaines colonnes après avoir utilisé un filtre et caché les dernières colonnes qui ne m'intéressent pas pour l'impression.
    Pour info, suivant le filtre utilisé, je n'aurai pas le même nombre de lignes, mais j'ai quand même les 4 lignes blanches en dessous !! Comment faire pour ne pas les avoir ???

    Voici ma macro :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub ImprimeMasque()
    With Range("A:A,B:B,C:C,D:D,F:F,G:G,I:I,K:K").Select    ' mettre les lettres des colonnes à cacher
    Selection.EntireColumn.Hidden = True
        Application.Dialogs(xlDialogPrintPreview).Show
     
        Selection.EntireColumn.Hidden = False
    End With
    End Sub
    Merci

Discussions similaires

  1. [WD-2010] Comment insérer une liste déroulante à choix multiple
    Par djibril dans le forum Word
    Réponses: 10
    Dernier message: 18/06/2019, 14h21
  2. Réponses: 20
    Dernier message: 19/11/2016, 22h32
  3. [AC-2007] Calcul à partir d'une liste déroulante à choix multiples
    Par MatAllwhite dans le forum IHM
    Réponses: 13
    Dernier message: 19/06/2013, 10h22
  4. [AC-2010] Comment créer une liste déroulante à choix multiple
    Par e2r34 dans le forum IHM
    Réponses: 2
    Dernier message: 24/02/2013, 17h35
  5. [DOM] Selected ! Comment définir un choix pour une liste déroulante
    Par tavarlindar dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 29/05/2008, 12h07

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