listes deroulantes et user form Excel VBA

Eric_Clamart

XLDnaute Nouveau
J'enregistre les problemes de mes clients en utilisant un petit userform. Quand je veux retrouver le probleme d'un client a une date precise j'utilise 2 listebox pour selectionner le client et l'autre la date. Cela une fois determiné les informations relatives à ce probleme devraient venir s'inscrire dans les different textbox.
la premiere partie fonction mais je n'arrive pas a inscrire les infos dans les textbox

si quelqu'un pouvait m'expliquer ou je me trompe. je suis debutant en VBA
ci joint le fichier

Merci d'avance pour vos commentaires
 

Pièces jointes

  • Glitch Update 3 Mars.xlsm
    114.5 KB · Affichages: 145

Bebere

XLDnaute Barbatruc
Re : listes deroulantes et user form Excel VBA

bonjour Eric
offset pas bon et il faut convertir le contenu combobox22 qui est du texte en date
Code:
            If c = Me.ComboBox1.Value And c.Offset(, 15) = CDate(Me.ComboBox22.Value) Then
et tu peux initialiser combobox1 comme suit
Me.ComboBox1.List = Dico.items
 

Bebere

XLDnaute Barbatruc
Re : listes deroulantes et user form Excel VBA

Bonjour Eric
dans userform_Activate tu remplaces la boucle qui initialise combobox1 par ComboBox1.list=dico.items
fait quelques changements ,si tu n'as qu'une date par nom remplace combobox22 par une textbox
Code:
Private Sub ComboBox1_Change()
 Dim c As Range
 
 If Me.ComboBox1.Value <> "" Then'évite erreur
    Me.ComboBox22.Clear
    With Sheets("Feuil2")
        For Each c In .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp))
            If c = Me.ComboBox1.Value Then Me.ComboBox22.AddItem c.Offset(, 15).Value
        Next c
    End With
   Me.ComboBox22.ListIndex = 0
End If
     
End Sub

Private Sub ComboBox22_Change()
Dim Dico As Object, c As Range, I As Byte

If Me.ComboBox22.Value <> "" Then
    With Sheets("Feuil2")
        For Each c In .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp))
            If c = Me.ComboBox1.Value And c.Offset(, 15) = CDate(Me.ComboBox22.Value) Then
             
             For I = 1 To 20
             Me("TextBox" & I) = c.Offset(, I - 1).Value
             Next I
                Exit For
           End If
        Next c
    End With
    
    CommandButton3.Visible = True
    CommandButton4.Visible = True
    Label27.Caption = "Mise à Jour Glitch"
    Me.ComboBox1.Value = ""
 End If
 
End Sub
 
Dernière édition:

Eric_Clamart

XLDnaute Nouveau
Re : listes deroulantes et user form Excel VBA

Bonjour Eric
dans userform_Activate tu remplaces la boucle qui initialise combobox1 par ComboBox1.list=dico.items
fait quelques changements ,si tu n'as qu'une date par nom remplace combobox22 par une textbox
Code:
Private Sub ComboBox1_Change()
 Dim c As Range
 
 If Me.ComboBox1.Value <> "" Then'évite erreur
    Me.ComboBox22.Clear
    With Sheets("Feuil2")
        For Each c In .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp))
            If c = Me.ComboBox1.Value Then Me.ComboBox22.AddItem c.Offset(, 15).Value
        Next c
    End With
   Me.ComboBox22.ListIndex = 0
End If
     
End Sub

Private Sub ComboBox22_Change()
Dim Dico As Object, c As Range, I As Byte

If Me.ComboBox22.Value <> "" Then
    With Sheets("Feuil2")
        For Each c In .Range(.[A2], .Cells(.Rows.Count, 1).End(xlUp))
            If c = Me.ComboBox1.Value And c.Offset(, 15) = CDate(Me.ComboBox22.Value) Then
             
             For I = 1 To 20
             Me("TextBox" & I) = c.Offset(, I - 1).Value
             Next I
                Exit For
           End If
        Next c
    End With
    
    CommandButton3.Visible = True
    CommandButton4.Visible = True
    Label27.Caption = "Mise à Jour Glitch"
    Me.ComboBox1.Value = ""
 End If
 
End Sub

Merci pour toutes ces informations.
je vais essayer de mettre en place
 

Eric_Clamart

XLDnaute Nouveau
Re : listes deroulantes et user form Excel VBA

Bebere
j'ai fait les changement et cela semble bien marcher. j'ai annulé la commande juste avant end if "Me.combobox1="" car sinon cela ne marché pas.
J'ai garde les combobox car 1 meme client peut avoir des problemes sur des date differentes
Maintenant, j'ai un autre probleme, quand je veux faire une mise a jour du probleme. Le client et la date une fois choisis les informations se placent bien dans les bonnes casses. Maintenant j'aimerai pouvoir faire des modifications et les enregistrer sans ajouter un nouveau probleme car c est juste une mise a jour
J ai donc ajouter les lignes ci dessous, mais encore une fois cela ne marche pas. Soit ca bugg soit sa enregistre sur la mauvaise ligne
Si tu peux me dire ou je me trompe
Encore une fois merci pour ces conseils

Private Sub CommandButton3_Click() 'bouton valider modification
Dim i As Byte
Dim Cl As Integer
Cl = ComboBox22.ListIndex + 1


Sheets("Feuil2").Cells(Cl + 1, 21) = ComboBox18.Value
Sheets("Feuil2").Cells(Cl + 1, 22) = ComboBox19.Value
Sheets("Feuil2").Cells(Cl + 1, 23) = ComboBox20.Value
Sheets("Feuil2").Cells(Cl + 1, 24) = ComboBox21.Value
Sheets("Feuil2").Cells(Cl + 1, 25) = "=YEAR(RC[-9])"
Sheets("Feuil2").Cells(Cl + 1, 27) = "=Day(RC[-11])"
Sheets("Feuil2").Cells(Cl + 1, 26) = "=Month(RC[-10])"


With ComboBox22
For i = 1 To 20
'boucle sur 20 éléments
Sheets("feuil2").Cells(.List(.ListIndex, 1), i) = Me.Controls("TextBox" & i).Value

Next i
.ListIndex = -1
End With

ComboBox18.Value = ""
ComboBox19.Value = ""
ComboBox20.Value = ""
ComboBox21.Value = ""
'ComboBox22.Value = ""

Unload Me 'vide et ferme l'UserFOrm

CommandButton3.Visible = False
CommandButton4.Visible = False
Label27.Caption = "Enregistrement Nouveau Glitch"

ActiveWorkbook.Save
 

Eric_Clamart

XLDnaute Nouveau
Re : listes deroulantes et user form Excel VBA

Une autre question que je ne comprends pas

Dans mon textbox 16, je rentre automatiquement une date
Me.TextBox16.Value = Format(Now(), "Medium Date")
Elle apparait bien comme 12 Mai 2012 dans mon form mais dans ma feuille Excel elle devient 5 Dec 2012 ?

je ne comprends pas comment changer cela

Si quelqu un a une idee

Merci d'avance
 

Bebere

XLDnaute Barbatruc
Re : listes deroulantes et user form Excel VBA

bonjour Eric
comme suit
Code:
Private Sub CommandButton3_Click() 'bouton valider modification
Dim i As Byte
Dim Cl As Long
Cl = ComboBox22.List(ComboBox22.ListIndex, 1)

With Sheets("Feuil2")
.Cells(Cl, 21) = ComboBox18.Value
.Cells(Cl, 22) = ComboBox19.Value
.Cells(Cl, 23) = ComboBox20.Value
.Cells(Cl, 24) = ComboBox21.Value
.Cells(Cl, 25) = "=YEAR(RC[-9])"
.Cells(Cl, 27) = "=Day(RC[-11])"
.Cells(Cl, 26) = "=Month(RC[-10])"

For i = 1 To 20
'boucle sur 20 éléments
Select Case i
Case 15, 16, 18, 19
If Me.Controls("TextBox" & i).Value <> "" Then .Cells(Cl, i) = CDate(Me.Controls("TextBox" & i).Value)

Case 17, 20
If Me.Controls("TextBox" & i).Value <> "" Then .Cells(Cl, i) = CDbl(Me.Controls("TextBox" & i).Value)

Case Else
.Cells(Cl, i) = Me.Controls("TextBox" & i).Value

End Select

Next i
End With

ComboBox18.Value = ""
ComboBox19.Value = ""
ComboBox20.Value = ""
ComboBox21.Value = ""
'ComboBox22.Value = ""
For i = 1 To 20
Me("TextBox" & i) = ""
Next i

Unload Me 'vide et ferme l'UserFOrm

CommandButton3.Visible = False
CommandButton4.Visible = False
Label27.Caption = "Enregistrement Nouveau Glitch"

ActiveWorkbook.Save
End Sub

à bientôt
 

Statistiques des forums

Discussions
312 332
Messages
2 087 362
Membres
103 530
dernier inscrit
Chess01