Userform Modifier

Bonjour,

Voila j'ai crée un Userform pour modifier mes données qui se trouve dans la feuille "base de données".

Le problème est que lorsque j'apporte la modif grâce au textbox, après avoir sélectionner la ligne que je veux modifier.

La modif ne se fait pas correctement, la modif et affecter a la ligne 2 de la feuille "base de données" et nn a la ligne voulu.

Quelqu'un à une petite idée ? merci d'avance

60modifier.xlsm (93.21 Ko)

Bonjour

-textbox7 à limiter à MaxLenght à 8 en comprenant les ': ' dans l'USF

à tester j'ai mis cela et cela à l'air de fonctionner à modifier, voir sans doute à améliorer

Private Sub TextBox7_Change()               'Zone de texte "temps de cycle"
      strtemp = TextBox7.Text               'Affectation de la variable strtemp
      Select Case Len(strtemp)              'Instruction conditionnel
            Case 2, 5
                  strtemp = strtemp & "hh:mm:ss"  'Insert 2 points pour le temps de cycle
      End Select
      TextBox7.Text = strtemp              'Affectation de la variable ":" à la zone de texte "temps de cycle"

TextBox7.Value = Format(TextBox7.Value, "hh:mm:ss")
End Sub

crdlt,

André

merci pour ton aide mais sa résou pas le problème.

quand je sélectionne la ligne dans la listbox et que je modifi la valeur dans le textbox, sa ne modifie pas la ligne.

Bonjour,

C'est normal, c'est du a un vice ded conception de ton UserForm Tu te sers de ton Combo comme d'un filtre.

Ensuite tu te bases sur la propriété ListIndex de ta ListBox pour affecter les données or (comme il n'y a pas beaucoup de données)ListIndex est presque toujours = à 0

Pour résumer tu ne dois pas te servir du Combo comme d'un filtre pour la ListBox... Car tu perds dans ta ListBox la référence à chaque ligne des items trouvés par le filtre (Find/FinNext). Ou alors il faudrait créer une variable qui mémoriserait ça dans une colonne cachée, mais là ça complique beaucoup le machin...

Les modifications à effectuer :

Dans UserForm_Activate()

      Me.ListBox1.ColumnWidths = "120pt;120pt;105pt;105pt;110pt;110pt;110pt;200pt;0"

Dans ComboBox1_Change()

                Me.ListBox1.List(i, 8) = Split(c.Address, "$")(2)

Dans CommandButton2_Click()

            ligne = Me.ListBox1.List(ListBox1.ListIndex, 8)

A+

[Nota] Non comprise la modification d'André que je n'ai pas évaluée...

Merci pour votre aide sa fonctionne parfaitement. :)

Le seule petit hic c'est que lorsque je veux écrire la réf dans le comobox et qu'il trouve pas la référence correspondante dans la feuille bd il me mes un message d'erreur.

Peux ton remplacer la se message par un msgbox qui indique que la réf n'a pas été trouver ?

Bonjour

Si possible de mettre le fichier modifier afin que l'on puisse éviter de refaire des erreurs

en attente merci

voila

43modifier-2.xlsm (94.09 Ko)

Re,

à voir si c'est ok

avec des msgbox

crdlt,

André

Bah... C'est bien se casser la tête pour rien : YAKA mettre la propriété Style du Combo sur fmStyleDropDownList et comme ça tu peux ne peux entrer que des trucs de ta liste...

Private Sub UserForm_Activate()
      Me.ComboBox1.Style = fmStyleDropDownList
      Me.ListBox1.ColumnWidths = "120pt;120pt;105pt;105pt;110pt;110pt;110pt;200pt;0"
End Sub

A+

merci bcp je valide se post

si jamais ta un peux temps voila un autre casse tete que je n'arrive pas a résoudre :

https://forum.excel-pratique.com/post588030.html#p588030

si ta un peux temps tu peux jetter un oeil

Cette autre question n'a pas l'air bien clair dans ta tête !

En tout les cas elle ne l'est pas sur le forum...

Ton UserForm me parait satisfaisant, si tu entres "X" dans le TextBox la recherche et l'affichage se passent bien.

La sélection dans la ListBox également... Que veux-tu de plus ?

le combox permet de rajouter un filtre supplémentaire car la recherche par textebox me sort tte les références.

exemple si :

si 2 réf qui porte le nom W01A60N03 mais machine différente une SL30 311 et l’autre SL30 312.

Après recherche avec le texbox : W01A60N03 il me sort les 2 références.

Je voudrais rajouter une combox pour filtré avec la machine voulu SL30 311 ou SL30 312 et du coup me sortir que 1 seul réf.

C'est un truc de "ouf" :

Il faut déjà supprimer ton UserForm_Initialize car le "ComboBox1.RowSource = ..." interdit de Clear le Combo ensuite. Donc il faut laisser le Combo vide à l'ouverture (ou le remplir avec une autre méthode que RowSource)

Tout dépend si tu entends conserver la possibilité de faire un choix direct avec le combo ou si tu veux obliger à un choix en cascade avec la Textbox. Si tu veux conserver les 2 possibiltés tu remplis ton Combo dans le Initialise avec AddItem pour mieux le Clear le cas échéant plus tard... Sinon tu ne le remplis pas : Dans ce cas, moi je le masquerai même pour le rendre visible seulement si la recherche à aboutie...

Ensuite il faut modifier toute la Private Sub CommandButton1_Click() pour qu'elle remplisse ton Combo (et non la ListBox)

Et c'est ensuite la Private Sub ComboBox1_Click() (qui n'existe pas encore) qui devra remplir la ListBox.

Mais comme je le disais plus haut "ça c'est un truc de ouf" (mais c'est possible) aussi c'est pas moi qui te ferait ces macros (pas le temps...) mais je pense que quelqu'un va s'y coller... (Plus c'est dur, plus il y a qui aiment ça ! )

A+

Rechercher des sujets similaires à "userform modifier"