Lisbox avec case a cocher et envoie de données de CheckBox

GClaire

XLDnaute Occasionnel
Supporter XLD
Bonjour a toutes et tous.

J'espère que vous allez toutes et tous bien.

Voila, pour la suite du fichier de mon ami, je voulais lui ajouter une petite facilité.

Pouvoir gérer sa ces livraison un peu mieux que je ne le fais.

Donc deux choix.

1) Je gère tout, Clients et livraisons directement avec le premier UserForm (USF_GestionClient)
2) Passer par un deuxième UserForm, juste pour les livraisons.

Donc dans les deux cas, je travaillerai avec la feuille "Base de donnees" et ensuite avec le code du bouton "Valider Livraison", j'enverrai cela dans la feuille "Livraisons" qui est déjà opérationnel

Mais je pense qu'il est mieux de travailler avec un seul UserForm.

J'aimerais ajouter dans ma ListBox des cases a cocher qui récupères dans la colonne "B" les "1", c'est a dire que si un "1" dans la cellule du client la case est cochée (Si pas possible je vire les cases a cocher et je colorise la ligne de la liste box).

Je rajoute des cases a cocher pour qu'il sélectionne les produits a livrer et leur quantité (Les Texbox a cotés).

A partir du moment ou une selection est faite et qu'une quantité est renseignée je fais modifier avec le bouton "Modifier/ajout client, qui ne s'appellera d'ailleurs plus comme cela, bientôt, lol, cela fait la modification

Chaque case a cocher est un produit, est une fois qu'il a fini, toutes les cases a cocher qui seront cocher seront concaténées dans la colonne "N" du client, dans ce style

Quantité + Code produit (Mis entre parenthèse dans l'intitulé du CheckBox)

3-S ; 1- ; 2-DJ

Ce qui veut dire que lorsque je sélectionne un client dans la ListBox, je récupère les infos de livraison.

Est-il plus simple de concaténer les valeur des checkbox dans une seule cellule de la colonne O, ou créer une colone par produit dans lequelle sera indiqué la quantite, et qui servira a renseigne le texbox quantité et le choix du CheckBox respectifs et ensuite j'envoi les données comme indiqué au dessus dans la feuille "Livraison" en prenant soin de moi même concaténer les données en L?

A voir.

Je vous remercie d'avance si vous pouvez m'aider et dans le cas contraire, je vous remercie de m'avoir lu, lol.

Amicalement, G'Claire
 

Pièces jointes

  • Livraison paniersV02-Pour Fofo.xlsm
    61.2 KB · Affichages: 19
C

Compte Supprimé 979

Guest
Bonjour Gclaire

Franchement tu n'éclaires rien du tout

Trop de choses, trop de pseudo question dans ton post....
Eclairci toi les idées et refait ton post correctement avec une question
 

GClaire

XLDnaute Occasionnel
Supporter XLD
Hello le fofo, BrunoM45

Je pensais pourtant être au top de l'éclairement, lol.

Bon j'ai fais des ajustements dans le fichier, mais je ne suis pas convaincu, car beaucoup de code pour gérer des trucs qui pourraient je pense être faite autrement, mais je ne gère pas assez le VBA, lol.

J'arrive a peu prêt sur ce que je voulais.

Les seuls trucs que je n'arrive pas a faire :

1) c'est concatener les colonnes (N:V) de la feuille "Base de donnes", vers la colonne (L) de la feuille "Livraisons"

VB:
Sub Validation_Livraisons()
'
' Jacques le 24/03/2020

Dim drlg As Long
Dim cel

Application.ScreenUpdating = True


drlg = Range("B5000").End(xlUp).Row
With Sheets("Livraisons")
    .Range("A2:L100").ClearContents
End With
For Each cel In Range("B2:B" & drlg)
    If cel.Value = 1 Then
        With Sheets("Livraisons")
            drlg = .Cells(.UsedRange.Columns(1).Rows.Count + 1, 1).End(xlUp).Row + 1
            .Cells(drlg, 1) = cel.Offset(0, 1).Value 'Nom
            .Cells(drlg, 2) = cel.Offset(0, 2).Value 'Prénom
            .Cells(drlg, 3) = cel.Offset(0, 3).Value 'Portable
            .Cells(drlg, 4) = cel.Offset(0, 4).Value 'Fixe
            .Cells(drlg, 5) = cel.Offset(0, 5).Value 'E-Mail
            .Cells(drlg, 6) = cel.Offset(0, 6).Value 'N° Rue
            .Cells(drlg, 7) = cel.Offset(0, 7).Value 'Rue
            .Cells(drlg, 8) = cel.Offset(0, 8).Value 'Batiment
            .Cells(drlg, 9) = cel.Offset(0, 9).Value 'Code Postal
            .Cells(drlg, 10) = cel.Offset(0, 10).Value 'Ville
            .Cells(drlg, 11) = cel.Offset(0, 11).Value 'Remarque
            .Cells(drlg, 12).FormulaR1C1 = cel.Offset(0, 12).Value = "=Concatener1(N:U)"
            .Activate
        End With
Application.ScreenUpdating = False

'Formatage_Bordures

    End If
 
Next

Tri

2) Pouvoir identifier dans la listBox, les clients qui ont des commande en cours soit

a) Avec les cases a cocher de celle-ci
b) Par une couleur différente des lignes

3) Je viens de me rendre compte que si je fais un tri avec le texbox, et bien les selections ne fonctionnent plus, elles ne renvoient plus les données dans les objets.

Une idée?

Merci, G'Claire

Voili, voilou.
 

Pièces jointes

  • Pour fofo-Livraison paniersV02.xlsm
    73.4 KB · Affichages: 14
Dernière édition:

GClaire

XLDnaute Occasionnel
Supporter XLD
Hello le fofo

J'ai revue un peu tout cela.

Abandonner la fonction Concatener et utilisé directement les infos de la feuille pour envoyer dans la bonne cellule.

1) J'ai toujours mon soucis avec le texbox "Recherche", car si je fais une recherche avec lui, les information ne sont plus bonne dans les objets.

2) Et j'aimerai identifier dans la listebox, quels sont les clients qui ont une commande en cours.

3) j'utilise ce code simpliste pour remplacer la concaténation.

VB:
                .Offset(1, 19).Value = TextBox20.Value & "-" & CheckBox1.Caption & ";" & TextBox21 & "-" & CheckBox2.Caption & ";" _
                                             & TextBox22.Value & "-" & CheckBox3.Caption & ";" & TextBox23.Value & "-" & CheckBox4.Caption & ";" _
                                             & TextBox24.Value & "-" & CheckBox5.Caption & ";" & TextBox25.Value & "-" & CheckBox6.Caption & ";" _
                                             & TextBox26.Value & "-" & CheckBox7.Caption & ";" & TextBox27.Value & "-" & CheckBox8.Caption

Ca marchotte on va dire.

Le soucis et que même si pas de valeur, j’utilise les Caption des checkBox, donc dans l’absolue il me faudrait pourvoir juste récupérer si le produit est commandé le Code entre parenthèse du caption.

exemple si CheckBox1 se qui correspond a Solo (S), il me faudrait juste le S.

Merci.

Bonne journée.

G'Claire
 

Pièces jointes

  • Pour fofo-Livraison paniersV02.xlsm
    80.4 KB · Affichages: 12
Dernière édition:

GClaire

XLDnaute Occasionnel
Supporter XLD
Hello le fofo.

J'avance tout doucement mais surement.

L'histoire du caption que je voulais récupérer juste le code entre parenthèse, j'ai résolu avec une variable en public par CheckBox et idem pour mes TextBox quantité, ce qui me donne un code plus simple et plus conviviale, mais je rencontre un léger soucis, c'est que le prémier résultat aura toujours un ";" a sa gauche s'il est le premier ou le seul.

VB:
                .Offset(1, 19).Value = VarTextBox21 & VarCheckBox1 & VarTextBox21 & VarCheckBox2 _
                                             & VarTextBox22 & VarCheckBox3 & VarTextBox23 & VarCheckBox4 _
                                             & VarTextBox24 & VarCheckBox5 & VarTextBox25 & VarCheckBox6 _
                                             & VarTextBox26 & VarCheckBox7 & VarTextBox27 & VarCheckBox8

Je vais bien trouver une astuce.

Me reste encore les deux premiers cas ou je galère.

1) J'ai toujours mon soucis avec le texbox "Recherche", car si je fais une recherche avec lui, les information ne sont plus bonne dans les objets.

2) Et j'aimerai identifier dans la listebox, quels sont les clients qui ont une commande en cours.

Merci, bonne journée.

G'Claire
 

Pièces jointes

  • Pour fofo-Livraison paniersV03.xlsm
    73.3 KB · Affichages: 27

Discussions similaires

Statistiques des forums

Discussions
313 320
Messages
2 097 137
Membres
106 848
dernier inscrit
toufk