AJOUTER données du UserForm dans une liste

MisterT

XLDnaute Occasionnel
Bonjour à chacun,:)

J'ai un UserForm dont il s'agit d'entrer la Marque et le Modèle d'un Item ainsi que ses caractéristiques.

Je voudrais que ces données entrées puissent être AJOUTÉES dans une liste d'items en ordre Alphabétique. Le fichier contient 2 feuilles; celle avec le USF et celle avec la liste d'items.

À l'ouverture du UserForm, il serait bien de pouvoir voir dans les 2 listes déroulantes, les Marques et Modèles des Items déjà présents dans la liste.

Donc, principalement je souhaite pouvoir AJOUTER les données dans la liste d'items et IDÉALEMENT, j'aimerais bien aussi pouvoir MODIFIER ou RETIRER des Items de la liste si cela demeure simple pour un spécialiste en la matière.

Étant débutant en VBA Excel, j'ai besoin d'aide pour concrétiser ce projet. Tous les détails sont bien écrits dans le fichier joint.

Alors, merci à celui qui acceptera d'utiliser temps et connaissances pour m'aider !

MisterT:)
 

Pièces jointes

  • USF_Add_Characteristics.zip
    17.6 KB · Affichages: 90
  • USF_Add_Characteristics.zip
    17.6 KB · Affichages: 84
  • USF_Add_Characteristics.zip
    17.6 KB · Affichages: 88

fhoest

XLDnaute Accro
Re : AJOUTER données du UserForm dans une liste

Bonjour,
Pour commencer voici ceci:
ps le bout de code avec la listview n'est pas de moi .
A bientot
 

Pièces jointes

  • USF_Add_Characteristics.zip
    32.5 KB · Affichages: 92
  • USF_Add_Characteristics.zip
    32.5 KB · Affichages: 96
  • USF_Add_Characteristics.zip
    32.5 KB · Affichages: 92

MisterT

XLDnaute Occasionnel
Re : AJOUTER données du UserForm dans une liste

Merci beaucoup fhoest, :)

Le code est plutôt impressionnant pour moi, merci pour ce grand travail !

J'ai entré les mise_a_jour_textbox et je n'arrive pas à faire fonctionner le tout.

Je crois qu'idéalement lorsqu'une MARQUE et un MODÈLE sont sélectionnés, leurs caractéristiques devraient apparaître.

Si je change des caractéristiques et CLIQUE sur le bouton MODIFIER, les changements se font dans la feuille de caractéristiques et les cases du USF se vide, confirmant ainsi la modification. Cette modification peut être vérifiée en sélectionnant la même MARQUE et MODÈLE qui vient d'être modifié.

Lorsqu'une MARQUE et un MODÈLE sont sélectionnés et avec leurs caractéristiques présentes, si le bouton RETIRER est CLIQUÉ, un msgBox pourrait demander "Désirez-vous vraiment RETIRER cet Item et ses caractéristiques de la liste ?"

Pour AJOUTER une MARQUE, un MODÈLE et ses caractéristiques, il s'agirait d'entrer la MARQUE et MODÈLE dans les cases vides des ComboBox puis remplir les cases des carctéristiques et CLIQUER sur AJOUTER.

Si tu as des suggestions sur une meilleure utilisation du tout, elles sont la bienvenue.

Le fichier ajusté est joint...

Merci encore pour cet aide, c'est très apprécié !!!

MisterT
 

Pièces jointes

  • Copie de USF_Add_Characteristics.zip
    26.8 KB · Affichages: 45

fhoest

XLDnaute Accro
Re : AJOUTER données du UserForm dans une liste

Bonjour,
voila une petite modification du programme,
je te laisse le soin de compléter ce qui manque tu as un deux nouveau sub qui sont appeler en fonction de la valeur de textbox3 a toi d'essayer de faire la même chose pour la textbox4 les sub sont mise a jour 16 et 18 il ne reste plus qu'a mettre les bon textbox /cellules
je t'aiderai pour la suite au niveau des modifications ajouter supprimer etc....
 

Pièces jointes

  • USF_Add_Characteristics.zip
    29.6 KB · Affichages: 68
  • USF_Add_Characteristics.zip
    29.6 KB · Affichages: 69
  • USF_Add_Characteristics.zip
    29.6 KB · Affichages: 65

MisterT

XLDnaute Occasionnel
Re : AJOUTER données du UserForm dans une liste

Bonjour fhoest, :)

Merci beaucoup pour le développement des codes et aussi de faire le suivi de mon projet, c'est une aide très précieuse !!!

J'ai fait ce que tu as demandé, c'est le fichier joint 05_USF_Add... mais je ne comprends pas l'utilité de la Sub mise_a_jour_textbox() si nous avons les 2 Sub mise_a_jour_16() et mise_a_jour_18(), mais peut-être que je ne vois pas quelque chose qui servira pour les prochaines étapes.

Donc, de ce fait, j'ai fait un essai (fichier joint 05essai_USF_Add... en ajoutant dans la Sub mise_a_jour_textbox() des conditions 16 ou 18 pour TextBox3 et conditions 18, 19 ou 20 pour TextBox4, et j'ai retiré la Sub TextBox3_Change() et les 2 Sub qui y sont associées mise_a_jour_16 et 18 et le tout fonctionne pour les mises à jour.

Acceptes-tu de vérifier si c'est conforme à la direction que tu veux prendre ?
-------------------
Serait-il possible de faire en sorte que lorsqu'un CHANGEMENT de BRAND se fait, que le MODEL et les caractéristiques font un CLEAR tout comme cela se produit en cliquant dans le Model_ComboBox2 ?

Merci encore pour ton temps et tes connaissances et bonne journée,

MisterT :)
 

Pièces jointes

  • 05_USF_Add_Characteristics.zip
    28.4 KB · Affichages: 50
  • 05essai_USF_Add_Characteristics.zip
    27.4 KB · Affichages: 46

fhoest

XLDnaute Accro
Re : AJOUTER données du UserForm dans une liste

re,
je n'ai pas encore regarder les fichier que tu viens d'envoyer mais l'utilité de la mise_a_jour simple est de remplir par rapport a la bonne ligne les 4 premières textbox j'ai peut etre oublier d'enlever le message mettre les autres textbox,ensuite lorsqu'elle se remplisse il y a l'évenement change de la textbox3 qui se decklenche (donc verification de la valeur 16 ou 18,qui declenchera a son tour la mise a jour 16 ou 18).
voila le chemin séquentiel qui me parrait logique pour ton application.
je regarde des que possible tes fichiers et te donne des nouvelles dans les prochains jours.
A+
 

fhoest

XLDnaute Accro
Re : AJOUTER données du UserForm dans une liste

Bonjour,
Me revoici comme convenu
un bout de code qui te permettra de raffraichir les textbox
Code:
Private Sub Brand_ComboBox1_Change()
Dim text As Control
For Each text In UserForm1.Controls
If Mid(text.Name, 1, 7) = "TextBox" Then text.Value = ""
Next
End Sub

pour les boutons de commande ajouter et supprimer il faut que tu crée des sub()
du genre mise a jour
a l'aide du repaire x que tu vois sur chaque ligne des sub mise a jour
x est égale a ta ligne qui contient toutes tes valeurs affiché dans les textbox
il suffit alors d'inverser comme ceci
exemple:
Code:
With Sheets("racquet characteristics")
.Range("c" & x).Value=UserForm1.TextBox1
end with
pour le bouton modifier ou ajouter une valeur qui serait vierge
et comme ceci pour supprimer (tout car dans le cas ou tu dois supprimer un seul je te conseil d'effacer la valeur de la textbox concerné et de validez par modifier)
Code:
With Sheets("racquet characteristics")
.Range("c" & x).Value=""
end with
ensuite si tu fais un supprimer ("attention de ne pas supprimer la mauvaise ligne donc fais le sub mais ne l'appelle pas toi meme par le bouton car je vais te rajouter un msg de confirmation a l'interieur du code de ton bouton et aussi un verouillage de bouton pour ne pas effacer n'importe quelle ligne
Alllez bon courage pour ceci et A+
 

MisterT

XLDnaute Occasionnel
Re : AJOUTER données du UserForm dans une liste

:) Bonjour fhoest,

Merci d'être là comme convenu et pour les instructions pour la suite, j'apprécie vraiment !!!

Je vais lire et relire tes instructions pour les boutons AJOUTER, MODIFIER & SUPPRIMER afin de les comprendre du mieux que je peux car à première vue cela m'apparaît un peu complexe pour mes yeux d'apprenti.

Est-ce que le fichier 05essai_USF_Add... convient ou si tu préfères que je sépare aussi les conditions 18, 19 ou 20 pour le TextBox4 avec des Sub les appelant car dans le fichier 05essai..., ces conditions sont déjà intégrées avec celles de 16 ou 18 pour le TextBox3 et ça fonctionne bien ?

Suite à ta réponse pour le fichier à utiliser, je vais aller faire mes devoirs et te reviendrai...

Merci encore fhoest pour le beau travail et aussi pour ta patience !

Bonne journée !

MisterT :)
 

fhoest

XLDnaute Accro
Re : AJOUTER données du UserForm dans une liste

re,
tu peux utiliser le fichier que tu préfère il fonctionne tous les deux parfaitement
après tout c'est ton fichier ensuite on s'adapte,si tu comprend mieux sans las appelle de sub différent cela n'a pas beaucoup d'importance,du moment que c'est clair pour toi c'est le principal
Allez bon devoir si toute fois tu n'y arrive vraiment pas n'hésite pas a revenir sur le fil....
A+
 

MisterT

XLDnaute Occasionnel
Re : AJOUTER données du UserForm dans une liste

:) Merci fhoest,

Je suis à faire mes devoirs...

Pour le bouton SUPRIMER, est-ce qu'il y aurait une façon simple de SUPRIMER toute la ligne une fois que l'on connaît le BRAND et le MODEL à SUPRIMER car il n'y aura pas de choix de suprimer qu'une seule caractéristique ?

Par exemple, avec un CODE court, est-ce que la ligne complète pourrait être SUPRIMÉE de la liste, et bien sûre, seulement après avoir cliqué APRÈS qu'un message du genre soit apparu "Êtes-vous certain de vouloir SUPRIMER la Raquette "BRAND"&"MODEL" et ses caractéristiques de la liste ?".

Merci et à bientôt fhoest !

MisterT :)
 

MisterT

XLDnaute Occasionnel
Re : AJOUTER données du UserForm dans une liste

...suite au post précédent

:) Bonjour fhoest,

J'ai fait mes devoirs, le fichier est joint;

1) la partie MODIFIER fonctionne sauf que les valeurs expédiées des TextBox sont du TEXT et se doivent d'être des NOMBRES ENTIERS pour les Colonnes C, D, E & F, puis des NOMBRES à UNE Décimale pour les colonnes G jusqu'à AR.

Est-ce possible de faire un code faisant une boucle pour convertir ces derniers en nombre ?


2) Pour le bouton AJOUTER, il y aurait un besoin d'ajouter un code pour AJOUTER une LIGNE dans la liste pour y déposer les valeurs à AJOUTER, puis aussi un code pour placer cette nouvelle ligne remplie en ordre Alphabétique si c'est possible.


3) Il restera la partie du bouton SUPRIMER à faire (voir mon post précédent) qui SUPRIMERAIT la ligne ENTIÈRE si possible, ou s'il est absolument nécessaire de SUPRIMER chaque Box ?

C'est vraiment un beau travail qui est accompli et je t'en suis très reconnaissant, merci fhoest !

MisterT :)
 

Pièces jointes

  • 07essai_USF_Add_Characteristics.zip
    34.8 KB · Affichages: 82

fhoest

XLDnaute Accro
Re : AJOUTER données du UserForm dans une liste

Bonjour,
voici quelques solution pour le point 1 et 2 a mettre au programme
Code:
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    Select Case KeyAscii
        Case 47 To 57
        Case Else: KeyAscii = 13
     If KeyAscii = 13 Then KeyAscii = 0
    End Select
End Sub
puis:
Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1.Value = Format(TextBox1.Value, "0")
End Sub
puis:
Code:
Private Sub TextBox5_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
'pour changer le point en virgule
If KeyPress = 46 Then
KeyPress = 44
Exit Sub
End If
    Select Case KeyAscii
        Case 46 To 57
        Case Else: KeyAscii = 13
     If KeyAscii = 13 Then KeyAscii = 0
    End Select
End Sub
puis:
Code:
Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
TextBox1.Value = Format(TextBox1.Value, "0.0")
End Sub
et pour le point 2:
Code:
Private Sub AJOUTER_Button1_Click()
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
dim mem as long
mem=x
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
If UserForm1.Brand_ComboBox1 = "" Or UserForm1.Model_ComboBox2 = "" Then
 answer = MsgBox(" Vous devez remplir tous les champs", vbOKOnly)
        xPos = 100: yPos = 100
        If answer = vbOK Then
            Exit Sub
        End If
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
else:
x = drligne
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End If
'il faudrait ajouter une ligne vide dans la liste pour insérer les valeurs AJOUTÉES
'puis ajuster la liste en ordre alphabétique après l'ajout

With Sheets("racquet characteristics")
.Range("c" & x).Value = UserForm1.TextBox1
.Range("d" & x).Value = UserForm1.TextBox2
.Range("e" & x).Value = UserForm1.M_ComboBox3.Value
.Range("f" & x).Value = UserForm1.X_ComboBox4.Value

.Range("g" & x).Value = UserForm1.TextBox5
.Range("h" & x).Value = UserForm1.TextBox6
.Range("i" & x).Value = UserForm1.TextBox7
.Range("j" & x).Value = UserForm1.TextBox8
.Range("k" & x).Value = UserForm1.TextBox9
.Range("l" & x).Value = UserForm1.TextBox10
.Range("m" & x).Value = UserForm1.TextBox11
.Range("n" & x).Value = UserForm1.TextBox12

If UserForm1.M_ComboBox3.Value = 16 Then
    UserForm1.TextBox13 = ""
    UserForm1.TextBox13.BackColor = &H808080 'Gris foncé
    UserForm1.TextBox13.Locked = True
    UserForm1.TextBox13.TabStop = False
    .Range("o" & x).Value = UserForm1.TextBox12
    .Range("p" & x).Value = UserForm1.TextBox11
    .Range("q" & x).Value = UserForm1.TextBox10
    .Range("r" & x).Value = UserForm1.TextBox9
    .Range("s" & x).Value = UserForm1.TextBox8
    .Range("t" & x).Value = UserForm1.TextBox7
    .Range("u" & x).Value = UserForm1.TextBox6
    .Range("v" & x).Value = UserForm1.TextBox5
    .Range("w" & x).Value = ""
    .Range("x" & x).Value = ""
    
    Else 'donc si TextBox3 = 18
    UserForm1.TextBox13.BackColor = &H80000005 'Blanc
    UserForm1.TextBox13.Locked = False
    UserForm1.TextBox13.TabStop = True
    .Range("o" & x).Value = UserForm1.TextBox13
    .Range("p" & x).Value = UserForm1.TextBox13
    .Range("q" & x).Value = UserForm1.TextBox12
    .Range("r" & x).Value = UserForm1.TextBox11
    .Range("s" & x).Value = UserForm1.TextBox10
    .Range("t" & x).Value = UserForm1.TextBox9
    .Range("u" & x).Value = UserForm1.TextBox8
    .Range("v" & x).Value = UserForm1.TextBox7
    .Range("w" & x).Value = UserForm1.TextBox6
    .Range("x" & x).Value = UserForm1.TextBox5
End If

.Range("at" & x).Value = UserForm1.StartM_ComboBox14.Value
.Range("au" & x).Value = UserForm1.TieM_ComboBox15.Value

.Range("y" & x).Value = UserForm1.TextBox16
.Range("z" & x).Value = UserForm1.TextBox17
.Range("aa" & x).Value = UserForm1.TextBox18
.Range("ab" & x).Value = UserForm1.TextBox19
.Range("ac" & x).Value = UserForm1.TextBox20
.Range("ad" & x).Value = UserForm1.TextBox21
.Range("ae" & x).Value = UserForm1.TextBox22
.Range("af" & x).Value = UserForm1.TextBox23
.Range("ag" & x).Value = UserForm1.TextBox24
.Range("ah" & x).Value = UserForm1.TextBox25
.Range("ai" & x).Value = UserForm1.TextBox26
.Range("aj" & x).Value = UserForm1.TextBox27
.Range("ak" & x).Value = UserForm1.TextBox28
.Range("al" & x).Value = UserForm1.TextBox29
.Range("am" & x).Value = UserForm1.TextBox30
.Range("an" & x).Value = UserForm1.TextBox31
.Range("ao" & x).Value = UserForm1.TextBox32
.Range("ap" & x).Value = UserForm1.TextBox33

If UserForm1.X_ComboBox4.Value = 18 Then
    UserForm1.TextBox34 = ""
    UserForm1.TextBox35 = ""
    .Range("aq" & x).Value = ""
    .Range("ar" & x).Value = ""
    UserForm1.TextBox34.BackColor = &H808080 'Gris foncé
    UserForm1.TextBox34.Locked = True
    UserForm1.TextBox34.TabStop = False
    UserForm1.TextBox35.BackColor = &H808080 'Gris foncé
    UserForm1.TextBox35.Locked = True
    UserForm1.TextBox35.TabStop = False
    
    ElseIf UserForm1.X_ComboBox4.Value = 19 Then
    UserForm1.TextBox35 = ""
    UserForm1.TextBox34.BackColor = &H80000005 'Blanc
    UserForm1.TextBox34.Locked = False
    UserForm1.TextBox34.TabStop = True
    UserForm1.TextBox35.BackColor = &H808080 'Gris foncé
    UserForm1.TextBox35.Locked = True
    UserForm1.TextBox35.TabStop = False
    .Range("aq" & x).Value = UserForm1.TextBox34
    .Range("ar" & x).Value = ""
    Else
    UserForm1.TextBox34.BackColor = &H80000005 'Blanc
    UserForm1.TextBox34.Locked = False
    UserForm1.TextBox35.TabStop = True
    UserForm1.TextBox35.BackColor = &H80000005 'Blanc
    UserForm1.TextBox35.Locked = False
    UserForm1.TextBox35.TabStop = True
    .Range("aq" & x).Value = UserForm1.TextBox34
    .Range("ar" & x).Value = UserForm1.TextBox35
End If

End With
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
x=mem
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
End Sub
sachant que ce n'est pas nécessaire de ranger dans l'odre alphabétique puisque les combo font le tri automatiquement a l'aide du code de remplissage

pour le troisième point
Code:
Rows(x).Delete

A bientot
 
Dernière édition:

MisterT

XLDnaute Occasionnel
Re : AJOUTER données du UserForm dans une liste

Bonjour fhoest :):):)

Merci infiniment, je suis vraiment très heureux de cet aide que je reçois de ta part...

Je vais appliquer le tout et te reviendrai avec le résultat.

Bonne journée,

MisterT :)
 

MisterT

XLDnaute Occasionnel
Re : AJOUTER données du UserForm dans une liste

Bonjour fhoest :)

Mes devoirs sont faits...

Il y aurait 2 petits ajustement à apporter;

1) Rendre les TextBox en valeur NOMBRE fonctionne mais quand je clique soient sur le CommandButton1 qui fait le Unload Me du USF ou le X pour fermer la boîte USF, les cellules redeviennent en text.

Est-ce qu'il y a une solution à cela ?

2) Pour la fonction AJOUTER, les nouvelles valeurs remplacent les valeurs du dernier item de la liste au lieu de faire l'ajout sur une ligne vierge.

Est-ce que tu aurais la solution pour ceci aussi ?

3) J'ignore comment appliquer le Rows(x).Delete pour le SUPRIMER, comment faire ?

Merci encore fhoest et à bientôt,

MisterT :)
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 364
Messages
2 087 624
Membres
103 624
dernier inscrit
PhilduMorvan