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 et merci pour le tuyau.

Bonsoir

Enchantée que cela te convienne.

Bonne soirée

A+

Rechercher des sujets similaires à "probleme vba userform"