[VBA] triple combobox

ced30l

XLDnaute Nouveau
Bonjour,

je suis en train de faire une base de donnée.
j'ai trouvé un modèle sur le site que je modifie, maintenant je bloque.

Explication : je veut gérer des compte rendus d'entretien sur différents appareils.
via une boite de dialogue je rentre toutes mes données je valide, et ça copie dans un tableau, pour ça c'est ok.
maintenant quand je veut voir ses données j'ouvre une boite de dialogue, une combobox pour la référence, puis une combobox pour le numero de serie (en fonction de la ref art choisi) et mes données apparaissent dans les textbox.

probleme, sur le modèle trouvé j'ai ça qui fonctionne très bien mais pour une combobox seulement:

Private Sub REFART_Change()
Dim Lgn&
Lgn = REFART.ListIndex + 1

With Tableau
NNO.Value = .Cells(Lgn, 4)
DT.Value = .Cells(Lgn, 2)

DSN.Value = .Cells(Lgn, 5)
AR.Value = .Cells(Lgn, 6)
MDP.Value = .Cells(Lgn, 7)
FS.Value = .Cells(Lgn, 8)
HH.Value = .Cells(Lgn, 9)
IC.Value = .Cells(Lgn, 10)

End With
End Sub

comment puis-je intégrer le numéro de série, et aussi j'aurais vite un soucis quand un même équipement apparaitra deux fois dans mon tableau donc j'aimerais rajouter une autre combox qui en fonction de la ref art et du numero de serie, me propose les date de passage de cette article et une fois la date choisie mes données apparaissent.

j'espère que vous avez compris ce que j'aimerais car moi là je suis dépassé.

Merci
 
Dernière édition:

ced30l

XLDnaute Nouveau
Re : [VBA] Triple combobox

suite au conseil de roro69, voici mon fichier

en vous remerciant de votre aide car la j'y comprend plus rien.

Merci.

Nouveauté : Je viens encore d'y regarder de plus près , ça a évoluer sauf que pour une ref article il ne me trouve qu'un numéro de série, et aucune date, mais c'est mieux avant il ne trouvait rien.

ci-joint le nouveau fichier.
 

Pièces jointes

  • base2.xls
    94 KB · Affichages: 99
  • base2.xls
    94 KB · Affichages: 100
  • base2.xls
    94 KB · Affichages: 94
Dernière édition:

ced30l

XLDnaute Nouveau
Re : [VBA] Triple combobox

rebonjour, alors j'ai trouvé pour le nombre de numéro de série, juste un petit décallage dans la ligne. le fichier base2 joint au dessus est corrigé. maintenant toujours pas de date, je sais pas pourquoi du tout.
 

ced30l

XLDnaute Nouveau
Re : [VBA] triple combobox

Oui, en fonction du SN sélectionné , je voudrais afficher les différentes dates existante dans le tableau, et en fonction de la date, je remplirais automatiquement les textbox.

C'est la solution que j'ai trouvé pour éviter les doublons, vu que je ne passerais jamais la pièce le même jour. mais la pas de date, et je comprend pas pourquoi.

J'ai pris l'exemple de cette discussion qui fonctionne bien, je l'ai juste modifié avec mon fichier.
https://www.excel-downloads.com/threads/probleme-de-filtrage-dans-combo-multiple.172652/
 

ced30l

XLDnaute Nouveau
Re : [VBA] triple combobox

Bonsoir,

OUI, ton code fonctionne enfin les dates arrivent. MERCI

Encore quelques petits soucis.

- une fois la date choisie j'avais écrit un code pour remplir les autres cases mais ne fonctionne pas, j'ai essayé avec ton code en l'adaptant mais ce n'est pas bon non plus, je doit faire des erreur quelques part.

- aussi, je choisi un SN, j'ai donc des dates mais si la je choisi un autre SN il me propose aussi ses dates, mais n'enleve pas les anciennes, j'ai essayé des DT.Value="", au debut du code SN_Change, mais rien.

- Et dernier truc, je choisi un PN puis un SN ,etc..., et la je veut choisir un nouveau PN j'ai une erreur de script.

Je joint le dernier fichier avec ton code.

Merci de ton aide.
 

Pièces jointes

  • base2.xls
    100 KB · Affichages: 93
  • base2.xls
    100 KB · Affichages: 93
  • base2.xls
    100 KB · Affichages: 93

ced30l

XLDnaute Nouveau
Re : [VBA] triple combobox

Bonsoir,

Alors, le premier code pour les dates , c'est OK.
Le deuxieme pour l'écriture des textbox, ça marche à moitié, car c'est toujours la même chose d'écrit, pour n'importe quel PN.

Et j'ai toujours pour le changement de PN , une fois un SN choisi, l'erreur "Variable objet ou variable de bloc with non définie", et me renvoie sur la ligne avec les pointillé. Je pense qu'il faut aussi faire un remise à zéro de cette combobox, mais par exemple SN.clear, ou SN.value ="" au debut du PN_Change ne fait rien :

Private Sub SN_Change()
DT.Clear
Dim ligne, cel As Range
Set ligne = F.Range("b3", F.Range("b65536").End(xlUp))

For Each cel In ligne
If cel Is Nothing Then Exit Sub
------- If cel = ligne.Find(SN) Then
DT.AddItem cel.Offset(0, 1)
End If
Next cel
End Sub


Merci beaucoup pour ton aide.
Bonne soirée.
 

roro69

XLDnaute Impliqué
Re : [VBA] triple combobox

Bonsoir je te mets le code ne entier la normalement plus de soucis
A++
Dim F As Worksheet
Dim c, Mondico
Dim Ligne1, Ligne2 As Range
Private Sub CommandButton4_Click()
Unload Me
End Sub
Private Sub SN_Click()
Dim cel As Range
DT.Clear
For Each cel In Ligne1
If cel Is Nothing Then Exit Sub
If cel = Ligne1.Find(SN) Then
DT.AddItem cel.Offset(0, 1)
End If
Next cel
End Sub
Private Sub UserForm_Initialize()
Set F = Worksheets("UUT")
Set Ligne1 = F.Range("b3", F.Range("b65536").End(xlUp))
Set Ligne2 = F.Range("c3", F.Range("c65536").End(xlUp))

Set Mondico = CreateObject("Scripting.Dictionary")
For Each c In Range(F.[A3], F.[A800].End(xlUp))
If c.Value <> "" Then Mondico.Item(c.Value) = c.Value
Next c

Me.PN.List = Mondico.items

End Sub
Private Sub DT_Change()
Dim Index&

With DT
If .ListIndex = -1 Then: Exit Sub
Index = .ListIndex + 1
End With
With Ligne2.Cells(Index)
NNO = .Offset(0, 2)
'Ect
End With
End Sub
Private Sub PN_Change()
If Me.PN <> "" Then
Me.SN.Clear
Me.DT.Clear
'Me.TextBox1 = ""
Set Mondico = CreateObject("Scripting.Dictionary")

For Each c In Range(F.[A3], F.[A800].End(xlUp))
If c = Me.PN And c.Offset(, 1).Value <> "" Then
Mondico.Item(c.Offset(, 1).Value) = c.Offset(, 1).Value
End If
Next c
Me.SN.List = Mondico.items
End If
End Sub
A++
 

roro69

XLDnaute Impliqué
Re : [VBA] triple combobox

Après reflection la recherche sur la combo il fallait remettre le bon format pour trouver les cellules équivalent voici le code:
Private Sub DT_Change()

Dim Cel As Range
DT.Value = Format(DT.Value, "m/d/yyyy")
Set Cel = Ligne2.Find(DT)
If Cel Is Nothing Then MsgBox "rien": Exit Sub
With Cel
NNO = .Offset(0, 1)
DSN = .Offset(0, 2)
End With


End Sub
A++
 

ced30l

XLDnaute Nouveau
Re : [VBA] triple combobox

Rebonjour, je suis de retour,

En fait le code complet fonctionne bien, maintenant si on décide de chercher un nouvel article , ça coince, je suis obligé de quitter le programme (le fichier excel en lui-même) et de le redémarrer.

Aussi, je voulait lors de la lecture des résultats, en cas d'erreur de saisie, ou évolution, etc.. , pouvoir modifier les textbox, et via un bouton prendre en compte les modifications sur le tableau. maintenant le code que j'avais pour ça n'ai plus adapté avec le nouveau code.

Voilà, ci-joint le dernier fichier.

Merci.
 

Pièces jointes

  • base2.xls
    77.5 KB · Affichages: 100
  • base2.xls
    77.5 KB · Affichages: 102
  • base2.xls
    77.5 KB · Affichages: 103

Discussions similaires

  • Question
Microsoft 365 XLOOKUP
Réponses
8
Affichages
403