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 :

VBA liste de données et selection [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut VBA liste de données et selection
    Bonjour,

    je souhaite mettre une liste de données avec le nom des feuilles actuelles.

    Ca fonctionne à la condition d'utiliser "selection" impossible d'utiliser ma variable passée en paramètre.

    Appel
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
        Dim Rng As Range
     
        Set Rng = Range("C2:C" & Range("C65000").End(xlUp).Row)
     
        Call CreationListeValidationNomOnglet(Rng)
        Set Rng = Nothing
    Procedure
    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
    Sub CreationListeValidationNomOnglet(Rng As Range)
        Dim sh
        Dim Feuil As String
     
        '--- Liste des feuilles actuelles
        Feuil = ""                    'Initialise
        For Each sh In ActiveWorkbook.Sheets
            Feuil = Feuil & "," & sh.Name
        Next sh
        Feuil = Mid(Feuil, 2)         'Elimine le premier séparateur
     
        '--- Place la liste dans la liste de validation
        'Affectation sur la plage Rng
        'Debug.Print Rng.Address      >>> c'est OK
        'Rng.Select                         >> test pour provoquer une "selection"
        'DoEvents                           >> test 'temporisation"
        With Selection.Validation      '>>> Ne fonctionne pas avec Rng
            '.Delete
            .Add Type:=xlValidateList, _
                 AlertStyle:=xlValidAlertStop, _
                 Operator:=xlBetween, _
                 Formula1:=Feuil
        End With
    End Sub
    Pourriez-vous me dire ce qui ce va pas ?

    Merci.

    ESVBA

  2. #2
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Bonjour ESVBA,

    Chez moi ça marche très bien.

    Juste deux remarques :
    • Après Dim Feuil As String, Feuil vaut "" donc pas besoin de Feuil = ""
    • Remplacer Set Rng = Range("C2:C" & Range("C65000").End(xlUp).Row) par Set Rng = Range("C2:C" & Range("C"&Application.Rows.Count).End(xlUp).Row) (Pour éviter d'avoir des soucis si un jour plus de 65000 données en colonne C)


    Tu peux aussi tester Debug.Print Rng.Parent.Name = ActiveSheet.Name avant ta validation de donnée pour t'assurer d'être sur la feuille parent de Rng

  3. #3
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Bonjour antonysansh
    Merci de vos informations que j'ai appliquées.


    Mais cela ne résous pas mon problème : "Erreur définie par l'application pou par l'objet".
    Que se passe-t-il réellement ?


    En ré ouvrant mon fichier, un message de contenu illisible apparait à chaque fois et Excel corrige ma plage de validation.
    Ensuite, ma plage est définie correctement la première fois avant d'avoir une nouvelle erreur. Mon appel se fait dans l'activation de l'onglet.

    Et, et...
    Et je viens de trouver mon erreur, l'apostrophe. Je n'efface pas la plage de validation.

    Cette fois ça fonctionne.


    Sauf que non. J'ai toujours le message d'erreur à l'ouverture de mon classeur (contenu illisible).


    Que puis-je faire ?

    ESVBA

  4. #4
    Membre Expert Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Par défaut
    Test simplement la macro sur un nouveau fichier avec quelques feuilles histoire de voir si le problème est dans la macro ou dans le fichier

  5. #5
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    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 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    effectue une suppression de ta validation dans l'évènement BeforeClose de Workbook

    ça devrait ôter ton erreur "contenu illisible" à l'ouverture

    tiens nous au courant

  6. #6
    Membre émérite
    Inscrit en
    Décembre 2006
    Messages
    897
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 897
    Par défaut Bonsoir,
    je n'ai pas de problème sur des versions 2007.

    Et je ne peux plus tester la version 2010 en production car je suis maintenant en vacances.
    Ca attendra.

    Un fonctionnement de base bizarre d'Access m'a incité à remonter le système complet.


    Antonysansh : effectivement, c'est mon poste Excel2010/win7 qui est en cause puisque le même code fonctionne très bien sur un poste en 2007.

    joe.levrai : merci du conseil. C'est celui auquel je pensais en finissant mon post. Je n'ai pas eu le temps de tester. Ca restera la solution en cas de problème; c'est drôlement lourd comme procédure s'il faut effacer ses contrôles feuilles à chaque fois


    merci à vous deux.

    C'est résolu que de retour... Non



    ESVBA

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 13/10/2008, 16h07
  2. Réponses: 1
    Dernier message: 20/04/2007, 15h35
  3. Select list me donne l'index et non la valeur
    Par beegees dans le forum ASP
    Réponses: 3
    Dernier message: 07/09/2006, 09h21
  4. [VBA-Exel2003]liste de données et formulaires
    Par stargates dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 13/08/2006, 20h53
  5. [Treeview VBA] Liste des fils à partir d'un noeud donné
    Par NoCoZ dans le forum Général VBA
    Réponses: 3
    Dernier message: 26/04/2005, 09h15

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