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-E] - Loop sur userform


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 11
    Par défaut [VBA-E] - Loop sur userform
    Bonjour,

    J ai un userform le voici :

    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
    Public Sub CommandButton1_Click()
     
        'Clear the column A to paste the actual components
        Worksheets("Inlet").Cells(u + 5, 1).Select
        Selection.ClearContents
     
        'Create the list in the table when components have been selected in the listbox
        For i = 1 To ListBox1.ListCount - 1
            If ListBox1.Selected(i) = True Then
            u = u + 1
            Worksheets("Inlet").Cells(u + 5, 1) = ListBox1.List(i)
            End If
     
        Next
     
    Unload Me
     
    End Sub
    Qui marche bien ...

    Seulement je voudrai qu il soit repeter (fonction Loop et il y a plusieurs structures si je ne me trompe pas) MAIS il faudrait que :
    les cellules de destination changent (espacement de 36 cellules entre les colonnes de resultats) j'ai essayer de faire un truc du genre Cells (u+5, i*36),
    que le nombre de boucle soit defini par l'utilisateur (j ai essayer une InputBox pour definir le nombre de Loop mais au mauvais endroit a mon avis)
    et pour tout ca le top serait qu'il n'y est que le bouton OK sur mon userform (voir deux boutons mais je vois pas comment gerer les deux boutons :s) autrement dit je suis perdu !

    La je vous donne tout d'un coup mais j'ai essayer de l'ameliorer point par point et je rame...

    En fait l'idee la plus simple pourrait peut etre etre appeler le userform depuis une Sub et de faire la boucle sur cette Sub mais j'y arrive pas, donc n hesiter pas a proposer meme une demarche completement differente ! C'est le resultat qui compte ! J'suis sur que vous avez de bon conseils jle sens ! ;-)

    Merci d'avance

    (Je vous rassure je progresse en VBA... )

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Une question : Si je comprends bien, tu veux décaler de 36 colonnes chaque index de ta listbox ?
    Tu as combien d'élément dans ta liste ? Parce que tu attendras vite 256...
    Admettons.
    Auquel cas, pourquoi ne pas prendre le pb sous un autre angle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Plage = ListBox1.ListCount -1 * 36 ' -1 à vérifier ici
    Puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For NoCol = 1 to Plage step 36
         i = i + 1
         If ListBox1.Selected(i) Then ' = True est inutile
              u = u + 1
              Worksheets("Inlet").Cells(u + 5, NoCol) = ListBox1.List(i)
         End If
    Next
    Juste une idée

  3. #3
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 11
    Par défaut
    Euh no... jme suis mal exprimer desole, je reformule (en mieux...) :
    En fait
    j'ai une listbox avec 468 elements, l'utilisateur fait une premiere selection (de plusieurs elements autant qu'il veut) qui va dans la colonne 1, une deuxieme selection dans la colonne 36, [...] , une n selection dans la colonne n x 36
    Et c'est l utilisateur qui devra determiner le nombre de repetition "n"

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Alors limite déjà n < 8
    Sinon ? Je n'ai visiblement rien compris du but de la manoeuvre. Mais la nuit fut courte

    Edit
    Et si tu fais
    Non ? Bon ! Je retourne me coucher

  5. #5
    Membre habitué
    Inscrit en
    Mars 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 11
    Par défaut
    On va mettre ca sur le dos du decalage horaire...
    (Moi j ai pas d excuse je change pas d heure... lol)

    Limiter a 8 parfait ca ne pose pas de probleme, mais le plage = n * 36 ne me fera pas relancer ma listbox n fois ?

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Pfft ! Vouais, j'avais shunté ce "détail"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    For NoCol = 1 to Plage step 36
         i = i + 1
         If ListBox1.Selected(i) Then ' = True est inutile
              For Lindex = 1 to ListBox1.ListCount - 1
                   u = u + 1
                   Worksheets("Inlet").Cells(u + 5, NoCol) = ListBox1.List(Lindex)
              Next
              u = 0 ' ou 1 ou une valeur initiale...
         End If
    Next
    J'ai un peu oublié ce que tu voulais... mais là, tu mets toute ta liste dans la même colonne sur des lignes différentes.
    Sans garantie (je prends mes précautions... )

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

Discussions similaires

  1. [XL-2010] VBA afficher une image (variable) sur Userform avec hyperlien
    Par kevina82 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 11/06/2015, 20h55
  2. [XL-2007] Animer un drapeau sur Userform (VBA)
    Par signorepel dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 04/07/2013, 11h41
  3. VBA Excel Loop sur Range de Cells - Copie Ficher
    Par bebert00 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 05/09/2010, 18h11
  4. [VBA-E] Question sur image dans userform ?
    Par damsmut dans le forum Excel
    Réponses: 3
    Dernier message: 04/04/2007, 05h32
  5. [VBA E] boucle sur textbox d'une userform
    Par zoumzoum59 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 03/07/2006, 20h37

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