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 :

Alimentation d'un SpreadSheets depuis une ListBox


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 24
    Points : 16
    Points
    16
    Par défaut Alimentation d'un SpreadSheets depuis une ListBox
    Bonjour le Forum,

    J'ai une petite question à vous soumettre. Je suis en pleine programmation d'une application qui permet - en gros - de faire un suivi de "Fiches Anomalie".
    Je bloque sur la partie affichage du tableau de données.

    Pour exposer mon souci voici quelques infos:
    ma feuille "Données" contient les données
    mon UserForm MultiPage contient un onglet "Visualisation"

    l'utilisateur peut faire un choix sur les informations qu'il souhaite visualiser:
    soit:
    - les RefPiece (Listebox à choix multiple) = MultiPage.ListeRefPiece
    - La ligne le production = Multipage.Ligne
    - la machine de production = Multipage.Machine

    En fonction des choix de l'utilisateur je souhaite remplir ma SpreadSheets avec les lignes correspondentes de ma feuille "Données". Tout les choix ne sont pas obligatoirement selectionnés. Je commence juste par programmer le code dans le cas suivant:
    l'utilisateur souhaite voir les anomalies pour certaines références de pièces, sans indiquer de Ligne ni de Machine.

    Tout d'abords est ce que cela est possible?
    J'ai commencer mon code ainsi:

    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
    Dim Table As Variant
    Dim x As String 'adresses des cellules du tableau
    Dim Cellules As Range 'cellules utilisées
     
    Worksheets("Données").Activate
     
    With UserForm.MultiPage
        'si pas de paramètre séléctionné: message d'erreur
       If .ListeRefPiece = "" And .Ligne = "" And .Machine = "" Then
        MsgBox "Faire un choix dans les paramètres d'affichages."
       Exit Sub
       End If
     
        'selection de ref piece uniquement
        If .ListeRefPiece <> "" And .Ligne = "" And .Machine = "" Then
    J'ai trouvé sur le site les info suivantes:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    '¤¤¤¤¤¤¤¤¤¤¤¤¤ affichage de la table complète:
     
    ' Dim Table As Variant
    '    Dim x As String
    '     Worksheets("Données").Activate
    '
    '    x = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Address
    '
    '    Table = Range("A1:" & x)
    '    Tableau.ActiveSheet.Range("A1:" & x) = Table
    Et je souhaiterais la modifier pour ne selectionner comme plage que les lignes correpsondant au choix de l'utilisateur.
    Comment puis je mettre dans la variable "x" la plage de données voulu?
    La Boucle For Each peut elle etre utilisée ainsi?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each .ListeRefPiece.Value In .ListeRefPiece
    Merci beaucoup pour votre aide!

  2. #2
    Membre à l'essai
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    J'ai un peu avancé dans ma maco et après avoir essayé toutes les méthodes qui me sont passées par la tête.... voici ce que j'ai réussi a faire:

    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
    L = Sheets("Données").Range("A65536").End(xlUp).Row + 1
    Dim Plage As Range
     
    'boucle de test 1
    If ListeRefPiece.ListIndex = -1 And Ligne = "" And Machine = "" Then
     
       msgbox "Merci d'indiquer des paramètres de recherche."
     
       Exit Sub
    End If
     
    If ListeRefPiece.ListIndex <> -1 And Ligne = "" And Machine = "" Then
     
        For i = 0 To ListeRefPiece.ListCount - 1
        If ListeRefPiece.Selected(i) = True Then
            For j = 1 To L
                If Sheets("Données").Cells(j, 3).Value = ListeRefPiece.List(i) Then
                    Sheets("Données").Cells(j, 3).EntireRow.Select
     
                    Plage = Application.Union(Plage, Range("C:" & j).EntireRow)
                End If
            Next
        End If
    '.... je ne suis pas encore allé jusqu'à affecter ma plage à mon tableau.... et je dois doire que j'en suis encore très loin!
        Next
    Voilà pour la dernière version la moins mauvaise que j'ai réussi à faire (en fait c'est la seule qui ne bug pas dès la première ligne....)

    J'ai un souci sur la Plage séléctionnée et je ne sais pas trop pourquoi.
    Par la suite, il faudra que j'affecte ma Plage à Mon Tableau (de type SpreadSheet)

    Et il semble que mes boucles ne soient pas au top: si je ne selectionne rien dans ma listbox LitesRefPiece je ne rentre pas dans la boucle de test 1...

    J'espère avoir aider à comprendre mon souci.... un petit coup de pouce pour me faire avancer n'est pas de refus!!

    Merci pour le partage de vos petits neurones!!!

  3. #3
    Membre à l'essai
    Femme Profil pro
    Ingénieur qualité méthodes
    Inscrit en
    Octobre 2011
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur qualité méthodes
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Octobre 2011
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Alors pour lesquelques uns qui seront interessé, j'ai trouvé une parade à mon problème.... un fois les lignes correspondant à mes critères de recherches trouvées je les implémente sur une nouvelle feuille.
    Et j'affiche ma nouvelle feuille dans mon SpreadSheet...

    voici le code
    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
    For i = 1 To ListeRefPiece.ListCount - 1
        If ListeRefPiece.Selected(i) = False Then
        If Ligne = "" And Machine = "" Then
     
     
            If ListeRefPiece.Selected(i) = True Then
                For j = 1 To L
                    If Sheets("Données").Cells(j, 3).Value = ListeRefPiece.List(i) Then
     
                        Sheets("Feuille1").Rows(k + 1).Value = Sheets("Données").Rows(j).Value
                        k = k + 1
     
                    End If
                Next
            End If
     
     
          Dim Table As Variant
            Dim x As String
     
             Worksheets("Feuille1").Activate
     
            x = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Address
     
            Table = Range("A1:" & x)
            Tableau.ActiveSheet.Range("A1:" & x) = Table
     
        End If
        End If
    Next
     
    Sheets("Feuille1").Range("A2:M" & L2).Value = ""
     
    Tableau.Visible = True

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

Discussions similaires

  1. [XL-2003] suppression d'une ligne depuis une listbox
    Par revemane dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 19/03/2020, 14h58
  2. Récupérer la valeur selection depuis une listbox
    Par moezBH dans le forum Windows Phone
    Réponses: 7
    Dernier message: 19/04/2011, 14h00
  3. données d'une feuille depuis une listBox
    Par gds35 dans le forum Macros et VBA Excel
    Réponses: 17
    Dernier message: 13/03/2009, 12h36
  4. Réponses: 2
    Dernier message: 21/03/2008, 09h19
  5. Réponses: 3
    Dernier message: 25/03/2004, 11h35

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