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 :

Affichage et modification Combobox [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 77
    Par défaut Affichage et modification Combobox
    Bonjour,

    Voici certainement une question de débutant (débutant que je suis !), mais je n'arrive pas à trouver la réponse, tant sur le Net que dans des bouquins

    Dans un formulaire, j'ai une combobox que je souhaite alimenter par des données qui se trouvent dans une autre feuille du même classeur, en l'occurence la 4ème (la liste des données peut varier dans le temps). Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub UserForm_Initialize()
        ' Alimentation de la ComboBox avec les données contenues dans la colonne des exclus
        Dim DerniereLigne As String
        DerniereLigne = ThisWorkbook.Worksheets(4).Range("B1").End(xlDown).Address
        ' Contenu de la listbox cmbListeAdresses
        cmbListeAdresses.RowSource = "B2:" & DerniereLigne
    End Sub
    Ce code fonctionne très bien si la feuille de données est activée (les données sont affichées), mais ne fonctionne pas dans le cas contraire (les données ne sont pas affichées puisque le code fait a priori appel à la feuille active). Il serait facile d'activer cette feuille, mais je ne le souhaite pas pour que le traitement soit transparent pour les utilisateurs (la feuille est cachée). Comment faire ?

    Merci d'avance pour vos réponses.
    Bruno

    Windows XP Pro SP2

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,


    Essai en ajoutant la feuille dans le rowsource

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cmbListeAdresses.RowSource = "Feuil4!B2:" & DerniereLigne

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 77
    Par défaut
    Bonjour Jérôme,

    Merci beaucoup, ça marche nickel

    Je laisse le fil ouvert car je sens d'autres questions poindrent à propos de cette combobox.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 77
    Par défaut
    Je pensais revenir, je ne m'étais hélas pas trompé because beaucoup de lacunes

    Dans la foulée de l'affichage des données dans la combobox, je souhaite pouvoir ajouter ou supprimer des données via le formulaire qui contient la combobox, puis trier les données après chaque ajout. Comme indiqué plus haut, ces données sont stockées dans une feuille cachée d'un classeur. Et comme précédemment :
    - si cette feuille est activée, l'ajout de donnée et le tri s'effectuent sans problème
    - si elle n'est pas activée, je ne peux qu'ajouter la donnée, mais pour le tri, j'obtiens le message d'erreur suivant :

    "Erreur d'exécution '1004':

    La méthode Select de la classe Range a échoué"

    Voici le code utilisé qui vient en complément du code déjà donné.

    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 cmdAjouter_Click()
        ' Déclaration de variables
        Dim Colonne As Range
        Dim LigneAjout As Integer
        ' Définition de la première ligne vide pour ajouter la nouvelle adresse saisie
        LigneAjout = ThisWorkbook.Worksheets(4).Range("B1").End(xlDown).Row + 1
        ' Ajout de l'adresse saisie via le formulaire
        ThisWorkbook.Worksheets(4).Range("B" & LigneAjout).Value = cmbListeAdresses.Value
        ' Remise à blanc du champ de saisie
        cmbListeAdresses.Value = ""
        ' Curseur sur le champ de saisie
        cmbListeAdresses.SetFocus
        ' Tri de la liste des adresses mail
            ' Définition de la variable colonne (= données de la colonne B)
            Set Colonne = ThisWorkbook.Worksheets(4).Range("B1").CurrentRegion
            Colonne.Select
            ' Tri croissant avec prise en compte de la ligne de titre
            Colonne.Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlYes
    End Sub
    Comme précédemment, je voudrais que la feuille de données ne s'affiche pas pendant le tri.

    Merci pour votre aide.

  5. #5
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Je ne pense pas que tu puisses faire autrement que d'afficher la feuille si tu veux utiliser la fonction tri d'excel dessus.
    Par contre, si tu ne souhaites pas que la feuille apparraisse lors du traitement, tu peux utiliser la propriété ScreenUpdating

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Application.ScreenUpdating = False
     
    'ton code
     
    Application.ScreenUpdating = true

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 77
    Par défaut
    Bonjour Jérôme,

    Merci. J'ai testé ta solution, mais je n'ai pas vu de grande différence ... notamment parce que l'opération est hyper rapide. Finalement, je me prends la tête pour rien. J'ai donc activé la feuille 4, fait ma mixture et rappelé la feuille 1.

    Pour mon info, peut-être y a-t-il une autre solution en n'utilisant pas le code que j'ai écrit ? Je pense à une variable tableau (domaine que je ne connais absolument pas !) qui pourrait stocker les données ... mais si c'est possible, est-ce qu'une telle variable garde les données en mémoire une fois le fichier Excel enregistré et fermé (ce serait l'idéal) ? En écrivant cela, je pense que j'écris une grosse bêtise et que je vais faire rire les spécialistes, mais tant pis ! C'est en écrivant ou en faisant des bêtises qu'on apprend, non ?

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

Discussions similaires

  1. [vb.net]l'affichage dans le combobox
    Par hanan_tsdi2_deMaroc dans le forum Windows Forms
    Réponses: 5
    Dernier message: 26/05/2006, 14h34
  2. Affichage dans un Combobox
    Par yanba dans le forum Composants VCL
    Réponses: 5
    Dernier message: 06/02/2006, 09h49
  3. [.NET][C#] Modification comboBox
    Par fab2050 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 02/11/2005, 19h47
  4. [C#] Besoin d'aide sur l'affichage d'une combobox
    Par dcd3 dans le forum Windows Forms
    Réponses: 2
    Dernier message: 08/10/2005, 00h43
  5. []probleme affichage valeur dans combobox
    Par gup dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 23/09/2005, 09h22

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