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 :

Listes en cascade VBA bug lors de l'ouverture du fichier


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2013
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2013
    Messages : 35
    Points : 23
    Points
    23
    Par défaut Listes en cascade VBA bug lors de l'ouverture du fichier
    Bonjour,

    Je suis sous excel 2016.

    J'ai fait un fichier avec des listes en cascade VBA (base du fichier transmis par l'excellent Jacques BOISGONTIER) qui fonctionne tres bien tant que je ne l'enregistre pas sous XLSM.

    Si je l’enregistre en XLSM et que je le réouvre, il plante à l'ouverture.

    Nom : dialogue2.JPG
Affichages : 402
Taille : 118,8 Ko

    Ensuite dans l'editeur VBA, cela me creer une feuille (virtelle puisqu'elle n'est pas dans les onglets de l'excel) dans laquelle mon code qui etait dans la feuille planning est transferé.

    Nom : code apparu.JPG
Affichages : 399
Taille : 148,3 Ko

    Cela n'arrive que lorsque ma liste comporte plus de 186 enregistrements.

    Ceci est un grand mystère pour moi mais peut-être pas pour la communauté de developpez !

    Je pense que c'est certainement un problème d'options et/ou de compatibilité Excel 2016.

    À toutes fins utiles je joins mon code (ou plutôt celui de Jacques )

    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
    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      If Not Intersect([f5:f1000], Target) Is Nothing And Target.Count = 1 Then
        Set f = Sheets("matériel")
        Set d = CreateObject("Scripting.Dictionary")
    '    d("demande") = ""
        For Each c In f.Range("a2:a" & f.[a65000].End(xlUp).Row): d(c.Value) = "": Next c
        Target.Validation.Delete
        Target.Validation.Add xlValidateList, Formula1:=Join(d.keys, ",")
      End If
    End Sub
     
    Private Sub Worksheet_Change(ByVal Target As Range)
      If Not Intersect([f5:f1000], Target) Is Nothing And Target.Count = 1 Then
       If Target <> "" Then
        Set f = Sheets("matériel")
        Set d = CreateObject("Scripting.Dictionary")
            d("demande") = ""
        For Each c In f.Range("a2:a" & f.[a65000].End(xlUp).Row)
          If c.Value = Target Then d(c.Offset(, 1)) = ""
        Next c
        If d.Count > 0 Then
          Target.Offset(, 1).Validation.Delete
          Target.Offset(, 1).Validation.Add xlValidateList, Formula1:=Join(d.keys, ",")
          a = d.keys: Target.Offset(, 1) = a(0)
          If d.Count > 1 Then Target.Offset(, 1).Select: SendKeys "%{down}"
         Else
           Application.EnableEvents = False
           Target = ""
           Target.Offset(, 1) = ""
           Target.Offset(, 1).Validation.Delete
           Application.EnableEvents = True
         End If
       End If
      End If
    End Sub

    Merci d'avance pour l'aide que vous pourrez m'apporter

  2. #2
    Membre extrêmement actif Avatar de mjpmjp
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2012
    Messages
    1 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hautes Alpes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Santé

    Informations forums :
    Inscription : Avril 2012
    Messages : 1 133
    Points : 1 441
    Points
    1 441
    Par défaut
    bonjour,

    dans le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set f = Sheets("matériel")
    et dans la capture :

    Matériel ... avec "M" et non "m"

    @+JP
    Caractéristiques (WEB) phpMyAdmin 4-74 , PHP 5-631 , Apache 2-427 , MySQL 5-719
    Présentation NAS DS-3615xs + 20Go , DSM 6.1.6-15266 Up1 , 12 * WD 4To WD4000F9YZ (10 raid 6+ )+(2 raid 1+) , LinkSys comutateur-switch lgs528p-eu , Onduleur UPS 720W Power Boxx Lcd (4*UPS + 4*MOD)
    Mes contributions (EXCEL) Form GRAPHIQUE: Gestion des boutons , Liste Onglet dynamique...GESTION de FILM

  3. #3
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    il y a une limite en taille (je crois que c'est le nombre de caractères ou le poids total que ça prend) pour le stockage des éléments sous format xml

    dans le cadre de créations dynamiques de liste de validation, il est hautement conseillé de TOUJOURS supprimer les listes à la fermeture du classeur, ou de convertir le fichier en format binaire (xlsb)

Discussions similaires

  1. [AC-2013] Bug lors de l'ouverture fichier excel avec des graphiques
    Par stum32 dans le forum VBA Access
    Réponses: 1
    Dernier message: 21/04/2017, 17h30
  2. Réponses: 0
    Dernier message: 08/10/2010, 17h03
  3. [XL-2007] Affichage des macros lors de l'ouverture du fichier excel
    Par Saridro dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/02/2010, 19h51
  4. Réponses: 7
    Dernier message: 03/06/2008, 14h05
  5. Réponses: 10
    Dernier message: 26/05/2008, 11h02

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