Problème VBA userform
Bonjour,
Je cherche vos lumières et une aide à la correction de mon VBA.
J'ai copié un VBA me permettant de créer un formulaire et j'ai essayé de l'adapter.
Lorsque je le saisit une première fois aucun problème mais quand je souhaite faire une saisie une deuxième fois lorsque je valide celui-ci me sort une erreur 70. J'ai l'impression que c'est un problème de déclaration mais je ne sais pas dans qu'elle sens le modifier. Les combobox contiennent déjà une Rowsource.
Pour information ce formulaire me permet de saisir un planning journalier pour des transports. Il me manque le tri par heure.
J'ai une macro me permettant de lancer le formulaire.
J'ai essayé de l'adapter à mon niveau de faibles capacités en VBA.
Merci pour votre aide .
Private Sub UserForm_Initialize()
Dim J As Long 'déclare la variable J
Dim I As Integer
Set Ws = Sheets("PlanningJ")
With Me.ComboBox1
For J = 3 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
End With
With Me.ComboBox2
For J = 3 To Ws.Range("B" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("B" & J)
Next J
End With
With Me.ComboBox3
For J = 3 To Ws.Range("C" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("C" & J)
Next J
End With
With Me.ComboBox4
For J = 3 To Ws.Range("D" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("D" & J)
Next J
End With
With Me.ComboBox5
For J = 3 To Ws.Range("E" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("E" & J)
Next J
End With
With Me.ComboBox6
For J = 3 To Ws.Range("I" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("I" & J)
Next J
End With
With Me.ComboBox7
For J = 3 To Ws.Range("L" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("L" & J)
Next J
End With
With Me.ComboBox8
For J = 3 To Ws.Range("M" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("M" & J)
Next J
End With
With Me.ComboBox9
For J = 3 To Ws.Range("N" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("N" & J)
Next J
End With
For I = 2 To 5 'on lance une boucle de valeur mini 1 et maxi 5
Me.Controls("TextBox" & I).Visible = True
Next I
End Sub
'Correspond au programme du bouton MODIFIER
Private Sub CommandButton1_Click()
Dim Ligne As Long
Dim I As Integer
If MsgBox("Etes-vous certain de vouloir modifier cette ligne ?", vbYesNo, "Demande de confirmation") = vbYes Then
If Me.ComboBox1.ListIndex = -1 Then Exit Sub
Ligne = Me.ComboBox1.ListIndex + 2
For I = 1 To 50
If Me.Controls("TextBox" & I).Visible = True Then
Ws.Cells(Ligne, I + 1) = Me.Controls("TextBox" & I)
End If
Next I
End If 'fin de la condition
With Ws.Range("K3:K20")
.NumberFormat = "0"
.Value = .Value
End With
End Sub
'Correspond au programme de la LISTE DEROULANTE
Private Sub ComboBox1_Change()
ComboBox1.Value = Format(ComboBox1.Value, "hh:mm")
End Sub
Private Sub ComboBox2_Change()
ComboBox2.Value = Format(ComboBox2.Value, "hh:mm")
End Sub
Sub FORMULAIRE()
UserForm1.Show vbModeless
End Sub
Bonjour
ton code est bien indenté, mais on cherche une aiguille dans une botte de foin...
Peux-tu envoyer un extrait de ton fichier ?
As-tu fais du pas à pas pour voir quelle ligne posait problème ??
Merci
Voici le fichier.
J'ai tenté le pas à pas. Le VBA s'arrete dès lors de la deuxième saisie de formulaire.
With Me.ComboBox1
For J = 3 To Ws.Range("A" & Rows.Count).End(xlUp).Row
.AddItem Ws.Range("A" & J)
Next J
Merci beaucoup .
Si tu as besoin de plus d'information nécessite pas.
Bonjour
Ce fichier doit fonctionner :
Puis pour ta ville, tu pourrais mettre cela :
Private Sub TextBox3_Change()
TextBox3.Value = UCase(TextBox3.Value)
End Sub
Cela ferait plus propre
Dis-moi
A+
Merci beaucoup pour ton aide c'est parfait
Bonsoir
Enchantée que cela te convienne.
Bonne soirée
A+