Erreur code VBA sur Excel2007

Erreur code VBA sur Excel2007 - VB/VBA/VBS - Programmation

Marsh Posté le 14-04-2010 à 15:26:11    

Bonjour,
 
J'ai repris un programme qui me permet de mettre une valeur dans une case en double cliquant dessus, je l'ai arrangé à ma sauce pour que cela ouvre une UserForm qui me lance sur 3 liste déroulante et un bouton Valider:
le 1er choix influence le 2ème qui lui même influence le 3ème.
 
Le problème c'est que quand je double sur ma feuille ("D1" ), l'UF se lance, j'ai mes 3 liste déroulante et mon bouton "valider" mais quand je veux pour choisir mon 1er choix, ma liste déroulante est vide... et je ne vois pas pourquoi :s.  
 
ComboBox3 = C'est mon 1er choix  
ComboBox1 = C'est mon 2ème choix  
ComboBox2 = C'est mon 3ème choix, celui que je veux retourner sur la case ou je double clic  
 
Voici ce qu'il y a dans "D1"  
Code Visual Basic :

Code :
  1. Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
  2. On Error Resume Next
  3. If IsEmpty(ActiveCell.Value) Then
  4. UserForm9.Show
  5. ActiveCell.Value = ComboBox2.Text
  6. ElseIf ActiveCell.Value = "X" Then
  7. ActiveCell.Value = ""
  8. End If
  9. Cancel = True
  10. End Sub


 
Dans mon UF(n°9)  
 
Code Visual Basic :

Code :
  1. Private Sub UserForm_click()
  2. ComboBox3.Rowsource = "Feuil10!F11:F12" 'Récupération des Données à partir de la feuille 10, 2 choix possible : Module/onduleur
  3. If ComboBox3.Text = "Module" Then
  4. Option Explicit
  5. 'La sélection du ComboBox1 (données colonne B) définit le contenu du ComboBox2 (données colonne 1)
  6. Dim TabTemp As Variant
  7. Dim L As Long
  8. 'Mémorise les données dans un tableau variant temporaire
  9. With Sheets("Module" )
  10. L = .Cells(.Rows.Count, 1).End(xlUp).Row
  11. TabTemp = .Range(.Cells(2, 1), .Cells(L, 3)).Value
  12. End With
  13. 'Remplir ComboBox1
  14. RemplirCbo 1, ""
  15. Else
  16. Dim L As Long
  17. 'Mémorise les données dans un tableau variant temporaire
  18. With Sheets("Onduleur" )
  19. L = .Cells(.Rows.Count, 1).End(xlUp).Row
  20. TabTemp = .Range(.Cells(2, 1), .Cells(L, 3)).Value
  21. End With
  22. 'Remplir ComboBox1
  23. RemplirCbo 1, ""
  24. End Sub
  25. Private Sub ComboBox1_Change()
  26. Dim x As String
  27. 'Remplir Combo2
  28. RemplirCbo 2, ComboBox1.Text
  29. x = ComboBox2.Text
  30. End Sub
  31. Private Sub RemplirCbo(Id As Byte, T As String)
  32. Dim Col As New Collection 'gestion doublons
  33. Dim Cbo As Control
  34. Dim L As Long
  35. 'RAZ ComboBox
  36. For L = 2 To Id Step -1
  37. Controls("Combobox" & L).Clear
  38. Next L
  39. 'MAJ ComboBox (sans doublon)
  40. Set Cbo = Controls("Combobox" & Id)
  41. For L = 1 To UBound(TabTemp, 1)
  42. If TabTemp(L, 2) <> "" Then 'Pour éviter les lignes de titre
  43. If Id = 1 Then 'Pour la première ComboBox
  44. TabTemp(L, 3) = 1
  45. On Error Resume Next
  46. Col.Add TabTemp(L, 2), CStr(TabTemp(L, 2))
  47. On Error GoTo 0
  48. If Col.Count > Cbo.ListCount Then Cbo.AddItem TabTemp(L, 2)
  49. Else 'Pour la suivante
  50. If TabTemp(L, Id) = T Then
  51. If TabTemp(L, 3) = 1 Then
  52. On Error Resume Next
  53. Col.Add TabTemp(L, 1), CStr(TabTemp(L, 1))
  54. On Error GoTo 0
  55. If Col.Count > Cbo.ListCount Then Cbo.AddItem TabTemp(L, 1)
  56. End If
  57. End If
  58. End If
  59. End If
  60. Next L
  61. End Sub
  62. Sub CommandButton1_Click()
  63. 'MsgBox "Modèle choisi = " & ComboBox2.Text
  64. ' Sheets("D1" ).Select
  65. 'Range("B49" ).Select
  66. ActiveCell.Value = ComboBox2.Text
  67. Unload userform1
  68. End Sub


 
 
Si quelqu'una une idée... Merci d'avance!

Reply

Marsh Posté le 14-04-2010 à 15:26:11   

Reply

Marsh Posté le 15-04-2010 à 09:15:22    


Désolé, mais ton code est illisible.  
Pas d'indentations, des déclarations de variables n'importe où, option explicit qui devrait être en 1ère ligne de module, etc...
 
Commence par faire un peu de ménage, et peut-être que ça donnera envie de se pencher dessus.
 

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed