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 :

ListBox liste choix multiple


Sujet :

Macros et VBA Excel

  1. #41
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 517
    Par défaut
    Salut,
    Désolé mais j'ai cassé ma boule de cristal.
    Je n'arrives pas à récupérer les lignes notées HB.1 à 30 car ce sont des lignes qui ne font pas parties de la BDD OTI mais des lignes différentes à chaque devis.
    HB1 à HB30 ? de quelle feuille et où veux-tu le récupérer ?

    Il va falloir être un peu plus précis, si tu veux recevoir de l'aide.

  2. #42
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 318
    Par défaut
    Citation Envoyé par Valtrase Voir le message
    Salut,
    Désolé mais j'ai cassé ma boule de cristal.

    HB1 à HB30 ? de quelle feuille et où veux-tu le récupérer ?

    Il va falloir être un peu plus précis, si tu veux recevoir de l'aide.
    Salut,

    Tu t'intéresses pas aussi ...

    Effectivement, je suis dans mon truc ...

    Ci-dessous, le fichier BPU :

    BPU.xlsm

    Dans l'onglet "Devis" où il y a le bouton "Lancer la recherche" suivant le N° de prix.
    Cela va chercher dans l'onglet "TBaseOTI" le tableau pour faire notre choix.
    Lorsqu'on valide, cela écrit dans ce tableau et aussi dans l'onglet "Consultation".

    Cependant, dans l'onglet "Devis", toutes les quantités et prix viennent d'un autre fichier. Et nous avons aussi les lignes notées de HB.1 à 30 (Matériels Hors Bordereau) qui sont à chaque fois différentes et qui n'apparaissent donc pas dans le fichier "TBaseOTI".
    Donc sur ces lignes, je ne peux pas faire de choix par rapport à la recherche.

    Voila, j'ai essayé d'être le plus précis possible.

    C'est plus clair pour toi ?
    Merci par avance
    @+

  3. #43
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 517
    Par défaut
    Salut,
    Le principe si j'ai bien cerné la demande reste le même que pour l'ajout et l'édition des premières lignes du tableau Tconsult; A la seule différence que la recherche ne se fais pas dans un tableau structuré. Pour cela nous allons définir le champ de recherche d'une autre manière For Each Ele In Range("G221:G250") ' // On fait la recherche sur la quantité. Cette plage "G221:G250" peut être modifiée, exemple Application.Union(Range("G220:G221"), Range("G221:G250")) mais il faut garder à l'esprit qu'une recherche sur l'index de la colonne "A" est effectuée. il faut donc impérativement que ces index soit RENSEIGNES, et UNIQUES. Dans l'état actuel l'integralité du tableau est effacé si l'on ne veut pas garder les données de Tconsult, (Il y a peut-être une amélioration à faire de ce côté-là).

    J'ai ajouté le code juste après le End With du ListView1 du code de la feuille Devis.
    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
                    '***********************************************************************
                    'MISE A JOUR DES DONNEES HORS BORDEREAU
                    '***********************************************************************
                    Dim Ele As Range
                    Dim rTemp As Range
                    For Each Ele In Range("G221:G250") ' // On fait la recherche sur la quantité ou bien sur plusieurs plages (non testé) Application.Union(Range("G220:G221"), Range("G221:G250"))
                        If Ele.Value > 0 Then
                            If Not rTemp Is Nothing Then
                                Set rTemp = Application.Union(rTemp, Ele.Offset(0, -6).Resize(, 9))
                            Else
                                Set rTemp = Ele.Offset(0, -6).Resize(, 9)
                            End If
                        End If
                    Next
     
                    If Not rTemp Is Nothing Then
                        For Each Ele In rTemp.Areas
                            With Ele
                                lngLigneEdit = basTools.TS_GetRowID(Worksheets("Consultations").Range("Tconsult").ListObject, "ID", .Columns(1).Value)
                                Select Case lngLigneEdit
                                    Case Is = 0
                                        basTools.TS_AddRow Worksheets("Consultations").Range("TConsult"), VBA.Array("ID", .Columns(1).Value, "Désignation", .Columns(2).Value, "Unité", .Columns(6).Value, "Qté", .Columns(7).Value)
                                    Case Is > 0
                                        basTools.TS_EditRow Worksheets("Consultations").Range("Tconsult"), VBA.Array("ID", .Columns(1).Value, "Désignation", .Columns(2).Value, "Unité", .Columns(6).Value, "Qté", .Columns(7).Value), lngLigneEdit
                                    Case -1
                                        MsgBox "Le tableau n'a pas pu être trouvé à l'emplacement indiqué", vbOKOnly Or vbInformation, Application.Name
                                    Case Else
                                End Select
                            End With
                        Next
                    End If
                    '***********************************************************************
                    'FIN DE MISE A JOUR DES DONNEES HORS BORDEREAU
                    '***********************************************************************
    Bonne prog...

  4. #44
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 318
    Par défaut
    Citation Envoyé par Valtrase Voir le message
    Salut,
    Le principe si j'ai bien cerné la demande reste le même que pour l'ajout et l'édition des premières lignes du tableau Tconsult; A la seule différence que la recherche ne se fais pas dans un tableau structuré. Pour cela nous allons définir le champ de recherche d'une autre manière For Each Ele In Range("G221:G250") ' // On fait la recherche sur la quantité. Cette plage "G221:G250" peut être modifiée, exemple Application.Union(Range("G220:G221"), Range("G221:G250")) mais il faut garder à l'esprit qu'une recherche sur l'index de la colonne "A" est effectuée. il faut donc impérativement que ces index soit RENSEIGNES, et UNIQUES. Dans l'état actuel l'integralité du tableau est effacé si l'on ne veut pas garder les données de Tconsult, (Il y a peut-être une amélioration à faire de ce côté-là).

    J'ai ajouté le code juste après le End With du ListView1 du code de la feuille Devis.
    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
                    '***********************************************************************
                    'MISE A JOUR DES DONNEES HORS BORDEREAU
                    '***********************************************************************
                    Dim Ele As Range
                    Dim rTemp As Range
                    For Each Ele In Range("G221:G250") ' // On fait la recherche sur la quantité ou bien sur plusieurs plages (non testé) Application.Union(Range("G220:G221"), Range("G221:G250"))
                        If Ele.Value > 0 Then
                            If Not rTemp Is Nothing Then
                                Set rTemp = Application.Union(rTemp, Ele.Offset(0, -6).Resize(, 9))
                            Else
                                Set rTemp = Ele.Offset(0, -6).Resize(, 9)
                            End If
                        End If
                    Next
     
                    If Not rTemp Is Nothing Then
                        For Each Ele In rTemp.Areas
                            With Ele
                                lngLigneEdit = basTools.TS_GetRowID(Worksheets("Consultations").Range("Tconsult").ListObject, "ID", .Columns(1).Value)
                                Select Case lngLigneEdit
                                    Case Is = 0
                                        basTools.TS_AddRow Worksheets("Consultations").Range("TConsult"), VBA.Array("ID", .Columns(1).Value, "Désignation", .Columns(2).Value, "Unité", .Columns(6).Value, "Qté", .Columns(7).Value)
                                    Case Is > 0
                                        basTools.TS_EditRow Worksheets("Consultations").Range("Tconsult"), VBA.Array("ID", .Columns(1).Value, "Désignation", .Columns(2).Value, "Unité", .Columns(6).Value, "Qté", .Columns(7).Value), lngLigneEdit
                                    Case -1
                                        MsgBox "Le tableau n'a pas pu être trouvé à l'emplacement indiqué", vbOKOnly Or vbInformation, Application.Name
                                    Case Else
                                End Select
                            End With
                        Next
                    End If
                    '***********************************************************************
                    'FIN DE MISE A JOUR DES DONNEES HORS BORDEREAU
                    '***********************************************************************
    Bonne prog...
    Salut Valtrase,

    Merci encore.

    Je ne comprends pas comment cela fonctionne... Je pensais pouvoir choisir avec le menu déroulant les HB.1 à 30. En fait, cela rempli une fois que je choisis un autre N° de prix ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
                                    Case Is = 0
                                        basTools.TS_AddRow Worksheets("Consultations").Range("TConsult"), VBA.Array("ID", .Columns(1).Value, "Désignation", .Columns(2).Value, "Unité", .Columns(6).Value, "Qté", .Columns(7).Value)
    Je ne comprends pas les numéros dans les Columns, elles correspondent à quel tableau ?

    J'ai une erreur lorsque je valides un N° de prix :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                                    If TypeName(Value) = "String" Then Value = """" & Value & """" Else Value = Value * 1
    En jaune "Value = Value * 1

    Dernier BPU à jour :

    Devis BPU Total vf.xlsm

    Merci par avance
    @+

  5. #45
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 517
    Par défaut
    Salut,
    Je ne comprends pas comment cela fonctionne... Je pensais pouvoir choisir avec le menu déroulant les HB.1 à 30. En fait, cela rempli une fois que je choisis un autre N° de prix ?
    Oui c'est exactement cela, pour l'intégration dans le ListView c'est plus complexe car les données proviennent de deux endroits différents.
    Je ne comprends pas les numéros dans les Columns, elles correspondent à quel tableau ?
    Il proviennent de la feuille devis, avec ce code :Set rTemp = Ele.Offset(0, -6).Resize(, 9) je récupère les cellules qui m'intéressent. Colonne A à colonne I
    J'ai une erreur lorsque je valides un N° de prix :
    Effectivement c'est une énorme bourde de ma part, la famille passant avant tout, je regarde tout cela dès que j'ai deux minutes. en fait sur la ligne Set rTemp = Application.Union(rTemp, Ele.Offset(0, -6).Resize(, 9)) je fais une Union, mais si les lignes sont contigus, alors union renvoi un objet range d'une seule dimension de deux lignes et donc plantage.

    Dès que j'ai une minute je regarde pour ajouter au tableau les lignes de la feuille devis, HB.1 à HB.

    Bonne prog.

    Edit: je viens de modifier le classeur, je pense que l'on est bon là.

  6. #46
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 318
    Par défaut
    Citation Envoyé par Valtrase Voir le message
    Salut,

    Oui c'est exactement cela, pour l'intégration dans le ListView c'est plus complexe car les données proviennent de deux endroits différents.

    Il proviennent de la feuille devis, avec ce code :Set rTemp = Ele.Offset(0, -6).Resize(, 9) je récupère les cellules qui m'intéressent. Colonne A à colonne I

    Effectivement c'est une énorme bourde de ma part, la famille passant avant tout, je regarde tout cela dès que j'ai deux minutes. en fait sur la ligne Set rTemp = Application.Union(rTemp, Ele.Offset(0, -6).Resize(, 9)) je fais une Union, mais si les lignes sont contigus, alors union renvoi un objet range d'une seule dimension de deux lignes et donc plantage.

    Dès que j'ai une minute je regarde pour ajouter au tableau les lignes de la feuille devis, HB.1 à HB.

    Bonne prog.

    Edit: je viens de modifier le classeur, je pense que l'on est bon là.
    Salut Valtrase,

    Merci encore pour ton implication.

    J'ai une question :
    - J'ai ton fichier et le mien
    Je n'arrives pas à voir où se trouve la prog où on récupère les données du tableau "Consultations" lorsqu'on a déjà écrit et sélectionné le matériel ?

    Car sur mon fichier, les matériels ne sont plus cochés ni en surbrillance bleu mais ils ont les quantités...

    Est-ce bien "FillDatas" ?

    Merci par avance

    @+

    EDIT : C'est bon, j'ai trouvé un décalage de numéro sur les items

    Merci encore

  7. #47
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 318
    Par défaut
    Salut Valtrase,

    Mes meilleurs vœux pour cette nouvelle année 2023 avec encore plein de prog !!!

    Je te sollicites encore pour ce fichier de consultation (si tu te souviens) ? Sinon un petit récap :
    - Je sélectionnes mon N° de prix
    - Je cliques sur "Lancer la recherche" afin de cocher mes matériels avec les quantités
    - Une fois valider, cela me les rajoutes dans l'onglet consultation

    Jusque là pas de soucis.
    Par contre, si je resélectionnes le même N° de prix, que je décoches les matériels et que je valides : cela ne me les retire pas du tableau consultation.

    Merci par avance
    @+

  8. #48
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 517
    Par défaut
    Salut,
    Merci pour les vœux, Je les retournent.
    J'ai très peu de temps à consacrer à la programmation, et un projet pour un copain en cours.
    Je regarde si je peux ce Week-end.

  9. #49
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    318
    Détails du profil
    Informations personnelles :
    Localisation : France, Puy de Dôme (Auvergne)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 318
    Par défaut
    Citation Envoyé par Valtrase Voir le message
    Salut,
    Merci pour les vœux, Je les retournent.
    J'ai très peu de temps à consacrer à la programmation, et un projet pour un copain en cours.
    Je regarde si je peux ce Week-end.
    Salut Valtrase,
    Je revenais vers toi savoir si tu avais pu regarder mon soucis ?

    Merci par avance
    @+

  10. #50
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 517
    Par défaut
    Salut, Oupssss complètement oublié

  11. #51
    Membre émérite Avatar de Valtrase
    Homme Profil pro
    Jeune retraité...
    Inscrit en
    Janvier 2016
    Messages
    517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 66
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Jeune retraité...
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : Janvier 2016
    Messages : 517
    Par défaut
    Re,
    Bon je n'ai pas réussi à reproduire ton problème, vérifie que la case à cocher sur le formulaire est bien décochée, sinon les données du tableau sont conservées.

Discussions similaires

  1. Liste à choix multiple avec contenu variable (position de la listBox)
    Par CarolineP21 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 10/10/2019, 09h09
  2. [XL-2016] ListBox liste choix multiples
    Par deolinda82 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 12/03/2018, 13h03
  3. [AC-2007] Valeur de listbox.ListIndex dans une liste à choix multiples
    Par Cinesra dans le forum VBA Access
    Réponses: 12
    Dernier message: 12/10/2011, 15h56
  4. recuperer valeur liste choix multiple
    Par gabychon dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 13/06/2005, 11h47
  5. [Débutant][JSP] récupération liste choix multiple
    Par Jovial dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 14/05/2004, 13h59

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