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 :

Tableau Colonne non contigue


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Par défaut Tableau Colonne non contigue
    Bonjour à tous,
    Je suis un pti nouveau sur le forum alors je ne sais pas si tout est OK, j'espere poster le message dans le bon forum!!!!!

    Je suis un peu débutant en VBA et j'essaie de réaliser une ListeBox avec deux colonnes non contigues.

    Je voudrais donc remplir ma ListeBox avec une colonne A et une colonne G non cotes à cotes, en sachant également que le nombre de ligne évolue au cours du temps puisque l'utilisateur va rajouter des données dans le tableau qui devront etre pris en compte dans la ListeBox.

    Voici ce que je sais et ce que j'ai ecrit:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize() 
    ListBox1.ColumnCount = 2 ' cela sert à mettre 2 colonnes dans ma ListeBox 
    ListBox1.ColumnWidths = "160; 3" ' ceci est le nombre de caractere possible pour chaques colonnes de la ListeBox 
    ListBox1.RowSource = tableau2 ' ceci est le tableau qui rempli ma ListeBox 
    End Sub
    Jusqu'ici je pense que tout va bien, mais si j'ai deja rien compris dites le moi!!!!!!!!!!!

    Ensuite je crée donc un module avec les fonctions ci-dessous:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Function tableau2() 
    nomt = ("A3:A" & dernier2) 'cette valeur devrait prendre la colonne jusqu'à la derniere cellule non vide 
    reft = ("G3:G" & dernier2) 
    tableau2 = ("nomt,reft") ' je pensais créer un tableau avec deux colonnes non contigues 
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function dernier2() 'cette fonction me sert donc à trouver la dernière ligne de mon tableau 
    dernier2 = Range("A2").End(xlDown).Row 
    End Function
    Et la ca beug!!!!!
    En fait j'ai pu constater que si je faisais ceci ca marcherait à la condition que les colonnes soient cotes à cotes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Function tableau2() 
    tableau2 = ("A3:B" & dernier2) 
    'on peut aussi faire ("A3:G" & dernier2) mais de toute facon il choisi les 2 premieres!! 
    End Function
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Function dernier2() 
    dernier2 = Range("A2").End(xlDown).Row 
    End Function
    J'ai également pu constater que l'utilisation de Range("A1:A56,G1:G56").Select
    marche tres bien si l'on veut selectionner des plages de cellules différentes mais malheureusement ca ne marche pas pour cette utilisation (j'ai essayé ceci, tableau2=Range("A1:A,G1:G" & dernier2)
    mais bien evidement ca ne marche pas ...sniffff ca serait trop simple!!!)

    Donc si quelqu'un aurait une petite solution/explication ca serait vraiment sympa!!!
    Merci d'avance et à bientot
    Vinch

  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

    la propriété RowSource ne peut pas gérer des plages discontinues.
    par contre tu peux utiliser la méthode AddItem (ou la propriété List())

    http://silkyroad.developpez.com/VBA/...serForm/#LII-G


    une autre possibilité, récupérer les colonne A à G grace à RowSource puis masquer (largeur de colonne à 0) les colonne B à F.


    tableau2 = ("nomt,reft")
    ps
    tes variables ne doivent pas être placées entre guillemets.

    bon apres midi
    michel

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Avril 2008
    Messages : 4
    Par défaut
    Merci pour cette réponse,
    j'ai pu en effet cacher les colonnes que je ne voulais pas voir grace à:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub UserForm_Initialize() 
    ListBox1.ColumnCount = 7 
    ListBox1.ColumnWidths = "160; 0; 0; 0; 0; 0; 3"
    ListBox1.RowSource = tableau2
    End Sub

    et le tableau va de la colonne A à G


    Merci encore.
    Et bonne fin d'apres midi.
    vinch

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 16/01/2015, 00h55
  2. [XL-2007] Probleme de selection de lignes et de colonnes non contigues
    Par coco.on.off dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 07/08/2014, 13h55
  3. filtre colonnes non contigues, sans doublons
    Par JYL74 dans le forum Excel
    Réponses: 5
    Dernier message: 14/11/2008, 10h57
  4. Réponses: 3
    Dernier message: 20/02/2006, 15h34
  5. [HTML] Construire un tableau colonne par colonne ?
    Par Cthulhu 22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 11/05/2005, 15h31

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