Bonjour
Merci d'avance pour votre aide.
Voila mon problème.
J'ai mis en place un formulaire qui contient 4 combobox (catégorie pro / Niveau / échelon / position). Mon code contient aussi un tableau à 2 dimensions qui contient les grilles de taux horaire. Je souhaite de l'aide pour écrire le code qui va en fonction des valeurs des 4 combobox, trouver le bon taux horaire dans le tableau et inscrire le taux dans un listebox.
Voici ce que j'ai comme code :
Private Sub ComboBox1_Change()
ComboBox2.Clear
ComboBox3.Clear
ComboBox4.Clear 'effacer les options précédentes dans la combobox4
ComboBox2.Enabled = True
ComboBox3.Enabled = True
ComboBox4.Enabled = False 'désactiver la combobox4 par défaut
Select Case ComboBox1.Value
Case "Agent de service"
ComboBox2.AddItem "ASP"
ComboBox2.AddItem "ASC"
ComboBox2.AddItem "ASCS"
ComboBox2.AddItem "AQS"
ComboBox2.AddItem "ATQS"
ComboBox4.Enabled = True 'activer la combobox4 si Agent de service est choisi
ComboBox4.AddItem "A"
ComboBox4.AddItem "B"
Case "Chef d’équipe"
ComboBox2.AddItem "CE"
ComboBox2.Value = "CE" 'Ajout de cette ligne pour sélectionner automatiquement "CE"
ComboBox2.Enabled = False
ComboBox3.AddItem "1"
ComboBox3.AddItem "2"
ComboBox3.AddItem "3"
Case "Agent de maîtrise"
ComboBox2.AddItem "MP"
ComboBox2.Value = "MP" 'Ajout de cette ligne pour sélectionner automatiquement "CE"
ComboBox2.Enabled = False
ComboBox3.AddItem "1"
ComboBox3.AddItem "2"
ComboBox3.AddItem "3"
ComboBox3.AddItem "4"
ComboBox3.AddItem "5"
Case Else
ComboBox2.Enabled = False
ComboBox3.Enabled = False
End Select
'Mise à jour de la valeur de la TextBox16 avec le salaire trouvé
TextBox16.Value = ComboBox1.Value & " " & ComboBox2.Value & " " & ComboBox3.Value & " " & ComboBox4.Value
End Sub
Private Sub ComboBox2_Change()
ComboBox3.Clear
If ComboBox2.Value = "ASP" Or ComboBox2.Value = "ASC" Or ComboBox2.Value = "ASCS" Then
ComboBox3.Enabled = False
With ActiveDocument.Content.Find
.Text = "échelon EchSal"
.Replacement.Text = ""
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
ElseIf ComboBox2.Value = "AQS" Or ComboBox2.Value = "ATQS" Then
ComboBox3.Enabled = True 'activer la ComboBox3
ComboBox3.AddItem "1"
ComboBox3.AddItem "2"
ComboBox3.AddItem "3"
End If
'Mise à jour de la valeur de la TextBox16 avec le salaire trouvé
TextBox16.Value = ComboBox1.Value & " " & ComboBox2.Value & " " & ComboBox3.Value & " " & ComboBox4.Value
End Sub
Private Sub ComboBox3_Change()
'Recherche du salaire correspondant à la sélection actuelle des ComboBox1, ComboBox2 et ComboBox3
Dim comboboxValue As String
comboboxValue = ComboBox1.Value & vbTab & ComboBox2.Value & vbTab & ComboBox3.Value
Dim rowNumber As Integer
rowNumber = ActiveDocument.Tables("Table").range.Columns(1).Cells(1).RowIndex
Do While ActiveDocument.Tables("Table").Cell(rowNumber, 1).range.Text <> comboboxValue And rowNumber < ActiveDocument.Tables("Table").Rows.Count
rowNumber = rowNumber + 1
Loop
If ActiveDocument.Tables("Table").Cell(rowNumber, 1).range.Text = comboboxValue Then
Dim salary As Variant
salary = ActiveDocument.Tables("Table").Cell(rowNumber, 4).range.Text
'Mise à jour de la valeur de la TextBox16 avec le salaire trouvé
TextBox16.Value = salary
End If
End Sub
Private Sub ComboBox4_Change()
'Remplacement de PosSal si la valeur de la combobox4 est A ou B
If ComboBox4.Value = "A" Or ComboBox4.Value = "B" Then
With ActiveDocument.Content.Find
.Text = "PosSal:"
.Replacement.Text = "PosSal: " & ComboBox4.Value
.Wrap = wdFindContinue
.Execute Replace:=wdReplaceAll
End With
End If
'Mise à jour de la valeur de la TextBox16 avec le salaire trouvé
TextBox16.Value = ComboBox1.Value & " " & ComboBox2.Value & " " & ComboBox3.Value & " " & ComboBox4.Value
End Sub
Le problème que je rencontre est le code ne parcours pas le tableau, mais affiche dans la listebox la concaténation de 3 combobox et quand je selectionne la combobox 3 l'erreur "Erreur d'exécution '13': Incompatibilité de Type" apparait.
j'espère que l'énoncé est clair.
Quelqu'un pourrait il m'aider la dessus
Bien à vous
Partager