Ajout/suppression de données dans base de liste deroulante

Bonjour tout le monde

Je voudrais faire un menu a base d'userform pour ajouter ou supprimer des données d'une base de données de liste deroulante.

j'en ai fait une bonne partie mais je bute sur le plus important, enregistrer les modifs.

Ci-joint, je vous ai monter un classeur avec simplement cette partie pour servir de support. (les données ne sont qu'un exemple et ne sont pas identiques a l'original bien sur) les valeurs d'origines sont sous la forme: "nettoyage du couloir 3" ou "preventif sur moteur haut"...

https://www.excel-pratique.com/~files/doc/Ajout_suppression_de_donnees.xls

en esperant que vous pourrez m'aider

Cordialement

Salut le forum

Maguetlolo, pour le UserForm1 essaye le code suivant

Private Sub ComboBox1_Change()
With ComboBox2
If ComboBox1.Value = "A" Then .RowSource = "Feuil1!E3:E8"
If ComboBox1.Value = "B" Then .RowSource = "Feuil1!F3:F8"
If ComboBox1.Value = "C" Then .RowSource = "Feuil1!G3:G8"
If ComboBox1.Value = "D" Then .RowSource = "Feuil1!H3:H8"
If ComboBox1.Value = "E" Then .RowSource = "Feuil1!I3:I8"
If ComboBox1.Value = "" Then .RowSource = ""
End With
End Sub

Private Sub CommandButton1_Click()
Cells(ComboBox2.ListIndex + 3, ComboBox1.ListIndex + 5) = ""
ComboBox1 = "": ComboBox2 = ""
End Sub

Pour le UserForm2, besoin de plus d'information, la liste peut-elle être allongée ?

Si oui, il va falloir adapter alors le code du UserForm1 (RowSource)

Mytå

Bonsoir tout le monde

Merci beaucoup Myta, apparemment cela fonctionne sur mon fichier

Pour "ajouter "(userform2), en effet les listes pourront s'allonger et d'autres "rubriques" pourront etre creer.

Une precision, peux-tu me dire comment fonctionne cela:

Cells(ComboBox2.ListIndex + 3, ComboBox1.ListIndex + 5) = "" 

je ne comprends pas , surtout a quoi renvoie ce "listindex + 3" et "listindex + 5"?.

Cordialement

Re le forum

Maguetlolo, ListIndex fait référence à l'item sélectionné dans

une ListBox ou ComboBox de zéro pour le premier élément à x pour le dernier.

Cells(ComboBox2.ListIndex + 3, ComboBox1.ListIndex + 5) = "" 

ComboBox2.ListIndex+3 pour la ligne (Ton tableau commence en Ligne 3)

ComboBox1.ListIndex+5 pour la colonne (Ton tableau commence en Colonne 5)

A te relire

Mytå

Bonjour

Ok, merci j'ai compris

et pour le userform 2, as tu la solutuion?

Cordialement

Bonsoir

si quelqu'un a la solution pour l'userform2 ?

Finalement, si je doit rajouter des colonnes, je le ferais manuellement (si tout est automatique je leur servirais plus a rien!!! 8)

Il faut donc juste pouvoir ajouter des termes aux listes

Cordialement

Re le forum

Excuse-moi, Maguetlolo, j'avais oublié la deuxième partie de ta question

Pour le UserForm1

Private Sub ComboBox1_Change()
With ComboBox2
If ComboBox1.Value = "A" Then .RowSource = "Feuil1!E3:E8"
If ComboBox1.Value = "B" Then .RowSource = "Feuil1!F3:F8"
If ComboBox1.Value = "C" Then .RowSource = "Feuil1!G3:G8"
If ComboBox1.Value = "D" Then .RowSource = "Feuil1!H3:H8"
If ComboBox1.Value = "E" Then .RowSource = "Feuil1!I3:I8"
If ComboBox1.Value = "" Then .RowSource = ""
End With
End Sub

Private Sub CommandButton1_Click()
Cells(ComboBox2.ListIndex + 3, ComboBox1.ListIndex + 5) = ""
Range(Cells(3, ComboBox1.ListIndex + 5), Cells(25, ComboBox1.ListIndex + 5)) _
            .Sort Key1:=Cells(3, ComboBox1.ListIndex + 5), Order1:=xlAscending
ComboBox1 = "": ComboBox2 = ""
End Sub

Et pour le UserForm2

Private Sub ComboBox1_Change()
TextBox1 = ""
End Sub

Private Sub CommandButton1_Click()
Cells(Cells(25, ComboBox1.ListIndex + 5).End(xlUp).Row + 1, ComboBox1.ListIndex + 5) = UCase(TextBox1.Value)
Range(Cells(3, ComboBox1.ListIndex + 5), Cells(25, ComboBox1.ListIndex + 5)) _
            .Sort Key1:=Cells(3, ComboBox1.ListIndex + 5), Order1:=xlAscending
ComboBox1 = "": TextBox1 = ""
End Sub

Mytå

P.S. J'ai limité le code à la ligne 25, et fait un tri pour éviter les lignes vides.

Bonsoir tout le monde

Ce n'est pas grave Myta, ca arrive meme aux plus fort!

En tout cas merci pour tout je testerais tout ca demain.

Sans vouloir abuser; est il possible que l'orsque le nombre d'element dans une de ces listes arrive par exemple a 15 lignes, interdire la saisie d'une nouvelle ligne(seulement dans la liste concerné). ?

Cordialement

Re le forum

Maguetlolo, tu veux la réponse ce soir ou la semaine prochaine

Oui, on peut le faire.

Donne moi quelques minutes

Mytå

Re le forum

Code sur le Bouton du UserForm2

Private Sub CommandButton1_Click()
If Cells(18, ComboBox1.ListIndex + 5).End(xlUp).Row > 16 Then
MsgBox ("Limite Atteinte Ajout Interdit")
Unload UserForm2
Exit Sub
End If
Cells(Cells(18, ComboBox1.ListIndex + 5).End(xlUp).Row + 1, ComboBox1.ListIndex + 5) = UCase(TextBox1.Value)
Range(Cells(3, ComboBox1.ListIndex + 5), Cells(25, ComboBox1.ListIndex + 5)) _
            .Sort Key1:=Cells(3, ComboBox1.ListIndex + 5), Order1:=xlAscending
ComboBox1 = "": TextBox1 = ""
End Sub

Tu peux supprimer la ligne vide (la ligne 2) sinon tu vas avoir des problèmes si tous les éléments de la liste sont éffacés.

Mytå

Re

Ca va j'ai pas attendu trop longtemps cette fois ci

merci pour tout, je te dirais ce que ca donne, je mets resolu quand meme.

Bonne nuit a tous et a bientot

Rechercher des sujets similaires à "ajout suppression donnees base liste deroulante"