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 :

Transfert items ListBox selon mise en page


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    autre
    Inscrit en
    Juin 2017
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juin 2017
    Messages : 261
    Par défaut Transfert items ListBox selon mise en page
    Bonjour Le forum!

    L'énigme du jour...

    Je dispose d'une Listbox (une seule colonne)dont je souhaite transférer le contenu (nombre d'items variable) dans un tableau. Mes soucis:

    1ère méthode:
    J'arrive à intégrer les items en ligne OU en colonne, mais cela ne correspond pas avec la mise en page attendue: le nombre d'items est supérieur au nombre de cellules en hauteur ou en largeur de mon cadre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     For i = 0 To ListBox3.ListCount - 1
            .Cells(5, i + 1) = Me.ListBox3.List(i)
        Next i
    J'aimerai pouvoir effectuer un renvoi de ligne (ou de colonne) pour que les items puissent rentrer DANS le cadre fixé.


    2ème méthode:
    J'arrive à transférer l'Item 1 en case (x,y) ; l'item 2 en case (x',y'), etc... Mais au moment de lancer la fonction, celle ci se met en erreur si j'ai moins d'items que de cases paramétrées.

    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
     
     .Cells(5, 1) = Me.ListBox3.List(0)
     .Cells(5, 2) = Me.ListBox3.List(1)
     .Cells(5, 3) = Me.ListBox3.List(2)
     .Cells(5, 4) = Me.ListBox3.List(3)
     .Cells(5, 5) = Me.ListBox3.List(4)
     .Cells(5, 6) = Me.ListBox3.List(5)
     .Cells(6, 1) = Me.ListBox3.List(6)
     .Cells(6, 2) = Me.ListBox3.List(7)
     .Cells(6, 3) = Me.ListBox3.List(8)
     .Cells(6, 4) = Me.ListBox3.List(9)
     .Cells(6, 5) = Me.ListBox3.List(10)
     .Cells(6, 6) = Me.ListBox3.List(11)
     .Cells(7, 1) = Me.ListBox3.List(12)
     .Cells(7, 2) = Me.ListBox3.List(13)
     .Cells(7, 3) = Me.ListBox3.List(14)
     .Cells(7, 4) = Me.ListBox3.List(15)
     .Cells(7, 5) = Me.ListBox3.List(16)
     .Cells(7, 6) = Me.ListBox3.List(17)
    Il me manque un argument permettant à la fonction de s'interrompre au nombre d'items contenus dans la Listbox.

    Quelle piste privilégier?

    Une autre méthode peut être?

    Merci d'avance!

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 84
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Par défaut
    Bonjour
    Quelle piste privilégier?
    Celle de l'exposé (on ne le voit pas) de l'objet concerné par le bloc With que tu parais utiliser.

  3. #3
    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
    Par défaut
    bonjour,
    pour le retour ligne
    Ligne1 & VbCr & Ligne2...ou...Ligne1 & VbCrlf & Ligne2

    pour les items en moins
    nombre de item = me.listbox.listcount

    @+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

  4. #4
    Membre éclairé
    Homme Profil pro
    autre
    Inscrit en
    Juin 2017
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juin 2017
    Messages : 261
    Par défaut
    @ unparia

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    Private Sub CExpositionAgent_Click()
     
            With Worksheets("FICHEAGENT")
     
                .Cells(2, 5).Value = ComboBox1.Text
                .Cells(2, 9).Value = TextBox1.Text
                .Cells(12, 1).Value = Label1.Caption
                .Cells(12, 2).Value = Label2.Caption
                .Cells(12, 3).Value = Label3.Caption
                .Cells(12, 4).Value = Label4.Caption
                .Cells(12, 5).Value = Label5.Caption
                .Cells(12, 6).Value = Label6.Caption
                .Cells(14, 1).Value = Label7.Caption
                .Cells(14, 2).Value = Label8.Caption
                .Cells(14, 3).Value = Label9.Caption
                .Cells(14, 4).Value = Label10.Caption
                .Cells(14, 5).Value = Label11.Caption
                .Cells(14, 6).Value = Label12.Caption
                .Cells(16, 1).Value = Label13.Caption
                .Cells(16, 2).Value = Label14.Caption
                .Cells(16, 3).Value = Label15.Caption
                .Cells(16, 4).Value = Label16.Caption
                .Cells(16, 5).Value = Label17.Caption
                .Cells(16, 6).Value = Label18.Caption
                .Cells(18, 1).Value = Label19.Caption
                .Cells(18, 2).Value = Label20.Caption
                .Cells(18, 3).Value = Label21.Caption
                .Cells(18, 4).Value = Label22.Caption
                .Cells(18, 5).Value = Label23.Caption
                .Cells(18, 6).Value = Label24.Caption
                .Cells(20, 1).Value = Label25.Caption
                .Cells(20, 2).Value = Label26.Caption
                .Cells(20, 3).Value = Label27.Caption
                .Cells(20, 4).Value = Label28.Caption
                .Cells(20, 5).Value = Label29.Caption
                .Cells(16, 6).Value = Label29.Caption
     
     
       ' For i = 0 To ListBox3.ListCount - 1
       '     .Cells(5, i + 1) = Me.ListBox3.List(i)
       ' Next i
     
     .Cells(5, 1) = Me.ListBox3.List(0)
     .Cells(5, 2) = Me.ListBox3.List(1)
     .Cells(5, 3) = Me.ListBox3.List(2)
     .Cells(5, 4) = Me.ListBox3.List(3)
     .Cells(5, 5) = Me.ListBox3.List(4)
     .Cells(5, 6) = Me.ListBox3.List(5)
     
       End With
     
     
    Unload FIDENTIFICATION
    Unload FSECTORISATION
    Unload FMAÎTRISE
    Unload FFICHEAGENT
    Worksheets("FICHEAGENT").Select
     
    End Sub
    @mjpmjp: déjà utilisé ListboxCount, mais je ne sais "quand" insérer le renvoi de ligne!

    Ci dessous un visuel du rendu final:

    Nom : Sans titre.jpg
Affichages : 163
Taille : 86,9 Ko

  5. #5
    Membre éclairé
    Homme Profil pro
    autre
    Inscrit en
    Juin 2017
    Messages
    261
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : autre

    Informations forums :
    Inscription : Juin 2017
    Messages : 261
    Par défaut
    Pas de solution en vue?

    J'ai peut être mal formulé mon problème?

    Si j'utilise le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        For i = 0 To ListBox3.ListCount - 1
           .Cells(5, i + 1) = Me.ListBox3.List(i)
        Next i
    le contenu de ma listbox s'aligne en ligne 5 indéfiniment (de 1 à 15 items).. Or ma mise en page impose un "retour à la ligne" à la 6ème colonne, sans cela les items en dehors de la zone d'impression ne seront logiquement pas imprimés!

    Et si j'utilise le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     .Cells(5, 1) = Me.ListBox3.List(0)
     .Cells(5, 2) = Me.ListBox3.List(1)
     .Cells(5, 3) = Me.ListBox3.List(2)
    ...
     .Cells(7,3) = Me.Listbox3.List(15)
    Le transfert échoue dès lors que le nombre d'items à transférer est inférieur à 15 !

    Je m'arrache les cheveux!

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

Discussions similaires

  1. Document dont la mise en page change selon l'ordi?
    Par Zantetsu dans le forum Excel
    Réponses: 11
    Dernier message: 04/01/2009, 17h32
  2. Problèmes de mise en page selon les PC
    Par Audrey75 dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 19/09/2008, 09h12
  3. [W3C] Mise en page html avec div ou tables selon vous ?
    Par zais_ethael dans le forum Balisage (X)HTML et validation W3C
    Réponses: 15
    Dernier message: 19/10/2006, 16h34
  4. mise en page feuille excel par transfert d'Access
    Par pascal913 dans le forum Access
    Réponses: 6
    Dernier message: 12/07/2006, 14h31
  5. Drag & Drop entre 2 listBox : transfert items
    Par netah25 dans le forum C++Builder
    Réponses: 2
    Dernier message: 09/01/2006, 10h56

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