Démarrer avec un userbox vide

Bonjour le forum,

lorsque j'initialise mon formulaire les données de la première ligne du fichier y sont incorporée, commen puis-je initialiser un formulaire vierge?

si j'ai bien compris, il prend la première valeur trouvée du "combobox1 et y joint toutes les autres. Lorsque je place les ligne concernant la recherche pour le conbobox1 en lecture (donc avec le ' devant) le formulaire arrive vide (enfin, juste avec les données voulues)

Voic le code :

Private Sub UserForm_Initialize()
Dim I As Integer
Dim ctrls As Variant

Set ws = Sheets("PN request overview")

ctrls = Array(Me.TextBox1, _
                Me.ComboBox2, _
                Me.TextBox2, _
                Me.TextBox3, _
                Me.ComboBox10, _
                Me.ComboBox6, _
                Me.ComboBox7, _
                Me.TextBox5, _
                Me.ComboBox3, _
                Me.TextBox6, _
                Me.TextBox7, _
                Me.TextBox10)

For I = 1 To 12 'mettre ici le nombre de contrôle inclus ci-dessus
    ctrls(I - 1).Value = ""
Next I

'Date IN auto
Me.TextBox1.Value = Format(Date, "[$-en-BE]dd/mm/yyyy")
'Me.TextBox1.Value = Date

'Recherche par titre
For I = 3 To Sheets("PN request overview").Range("C65536").End(xlUp).Row
ComboBox1 = Sheets("PN request overview").Range("C" & I)
If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Sheets("PN request overview").Range("C" & I)
Next I
Me.ComboBox1 = ""

'Recherche par designer en charge
For I = 3 To Sheets("PN request overview").Range("G65536").End(xlUp).Row
ComboBox4 = Sheets("PN request overview").Range("G" & I)
If ComboBox4.ListIndex = -1 Then ComboBox4.AddItem Sheets("PN request overview").Range("G" & I)
Next I
Me.ComboBox4 = ""

'Recherche par PN
For I = 3 To Sheets("PN request overview").Range("H65536").End(xlUp).Row
ComboBox5 = Sheets("PN request overview").Range("H" & I)
If ComboBox5.ListIndex = -1 Then ComboBox5.AddItem Sheets("PN request overview").Range("H" & I)
Next I
Me.ComboBox5 = ""

'Priorité
For I = 2 To Sheets("Drop list").Range("E65536").End(xlUp).Row
ComboBox2 = Sheets("Drop list").Range("E" & I)
If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem Sheets("Drop list").Range("E" & I)
Next I
Me.ComboBox2 = ""

'Status
For I = 2 To Sheets("Drop list").Range("G65536").End(xlUp).Row
ComboBox3 = Sheets("Drop list").Range("G" & I)
If ComboBox3.ListIndex = -1 Then ComboBox3.AddItem Sheets("Drop list").Range("G" & I)
Next I
Me.ComboBox3 = ""

'Designer en charge
For I = 2 To Sheets("Drop list").Range("A65536").End(xlUp).Row
ComboBox7 = Sheets("Drop list").Range("A" & I)
If ComboBox7.ListIndex = -1 Then ComboBox7.AddItem Sheets("Drop list").Range("A" & I)
Next I
Me.ComboBox7 = ""

'Demandé par
For I = 2 To Sheets("Drop list").Range("A65536").End(xlUp).Row
ComboBox10 = Sheets("Drop list").Range("A" & I)
If ComboBox10.ListIndex = -1 Then ComboBox10.AddItem Sheets("Drop list").Range("A" & I)
Next I

If Sheets("Drop List").Range("B2") = "" Then
Me.ComboBox10 = ""
Else
Me.ComboBox10 = Sheets("Drop List").Range("B2")
End If

'Nom designer du commentaire supplémentaire
For I = 2 To Sheets("Drop list").Range("A65536").End(xlUp).Row
ComboBox11 = Sheets("Drop list").Range("A" & I)
If ComboBox11.ListIndex = -1 Then ComboBox11.AddItem Sheets("Drop list").Range("A" & I)
Next I
Me.ComboBox11 = ""

'Pour le PM
For I = 2 To Sheets("Drop list").Range("C65536").End(xlUp).Row
ComboBox6 = Sheets("Drop list").Range("C" & I)
If ComboBox6.ListIndex = -1 Then ComboBox6.AddItem Sheets("Drop list").Range("C" & I)
Next I
Me.ComboBox6 = ""

End Sub

Merci d'avance pour votre aide

Bonjour,

N'ayant pas le fichier pour tester,

J'essayerai de mettre à la fin du code ( pour vider les contrôles) :

For I = 1 To 12 'mettre ici le nombre de contrôle inclus ci-dessus

ctrls(I - 1).Value = "" Next I

Bonjour,

Avez vous essayé de placer

For I = 1 To 12 'mettre ici le nombre de contrôle inclus ci-dessus
    ctrls(I - 1).Value = ""
Next I

à la fin de votre sub ?

Autre suggestion, je le remplacerai par

Dim ctr as Variant
For Each ctr in ctrls
    ctr.Value = ""
Next ctr

Vous permettant d'éviter de compter vos controles. Alternativement utilisez UBound(ctrls)

Edit : Xmen m'a pris de vitesse :)

Merci beaucoup a vous 2,

Je n'ai pas déplacé ces 3 lignes à la fin de la sub car je place des données par défaut qui étaient alors effacées, j'ai simplement déplacé les 3 "recherches" aprés la liste des contrôles, viens ensuite les 3 ligne de code, puis seulement les données par défaut, et ca marche nickel...

Encore merci

Private Sub UserForm_Initialize()
Dim I As Integer
Dim ctrls As Variant

Set ws = Sheets("PN request overview")

ctrls = Array(Me.TextBox1, _
                Me.ComboBox2, _
                Me.TextBox2, _
                Me.TextBox3, _
                Me.ComboBox10, _
                Me.ComboBox6, _
                Me.ComboBox7, _
                Me.TextBox5, _
                Me.ComboBox3, _
                Me.TextBox6, _
                Me.TextBox7, _
                Me.TextBox10)

'Recherche par titre
For I = 3 To Sheets("PN request overview").Range("C65536").End(xlUp).Row
ComboBox1 = Sheets("PN request overview").Range("C" & I)
If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Sheets("PN request overview").Range("C" & I)
Next I
Me.ComboBox1 = ""

'Recherche par designer en charge
For I = 3 To Sheets("PN request overview").Range("G65536").End(xlUp).Row
ComboBox4 = Sheets("PN request overview").Range("G" & I)
If ComboBox4.ListIndex = -1 Then ComboBox4.AddItem Sheets("PN request overview").Range("G" & I)
Next I
Me.ComboBox4 = ""

'Recherche par PN
For I = 3 To Sheets("PN request overview").Range("H65536").End(xlUp).Row
ComboBox5 = Sheets("PN request overview").Range("H" & I)
If ComboBox5.ListIndex = -1 Then ComboBox5.AddItem Sheets("PN request overview").Range("H" & I)
Next I
Me.ComboBox5 = ""

For I = 1 To 12 'mettre ici le nombre de contrôle inclus ci-dessus
    ctrls(I - 1).Value = ""
Next I

'Date IN auto
Me.TextBox1.Value = Format(Date, "[$-en-BE]dd/mm/yyyy")
'Me.TextBox1.Value = Date

'Priorité
For I = 2 To Sheets("Drop list").Range("E65536").End(xlUp).Row
ComboBox2 = Sheets("Drop list").Range("E" & I)
If ComboBox2.ListIndex = -1 Then ComboBox2.AddItem Sheets("Drop list").Range("E" & I)
Next I
Me.ComboBox2 = ""

'Status
For I = 2 To Sheets("Drop list").Range("G65536").End(xlUp).Row
ComboBox3 = Sheets("Drop list").Range("G" & I)
If ComboBox3.ListIndex = -1 Then ComboBox3.AddItem Sheets("Drop list").Range("G" & I)
Next I
Me.ComboBox3 = ""

'Designer en charge
For I = 2 To Sheets("Drop list").Range("A65536").End(xlUp).Row
ComboBox7 = Sheets("Drop list").Range("A" & I)
If ComboBox7.ListIndex = -1 Then ComboBox7.AddItem Sheets("Drop list").Range("A" & I)
Next I
Me.ComboBox7 = ""

'Demandé par
For I = 2 To Sheets("Drop list").Range("A65536").End(xlUp).Row
ComboBox10 = Sheets("Drop list").Range("A" & I)
If ComboBox10.ListIndex = -1 Then ComboBox10.AddItem Sheets("Drop list").Range("A" & I)
Next I

If Sheets("Drop List").Range("B2") = "" Then
Me.ComboBox10 = ""
Else
Me.ComboBox10 = Sheets("Drop List").Range("B2")
End If

'Nom designer du commentaire supplémentaire
For I = 2 To Sheets("Drop list").Range("A65536").End(xlUp).Row
ComboBox11 = Sheets("Drop list").Range("A" & I)
If ComboBox11.ListIndex = -1 Then ComboBox11.AddItem Sheets("Drop list").Range("A" & I)
Next I
Me.ComboBox11 = ""

'Pour le PM
For I = 2 To Sheets("Drop list").Range("C65536").End(xlUp).Row
ComboBox6 = Sheets("Drop list").Range("C" & I)
If ComboBox6.ListIndex = -1 Then ComboBox6.AddItem Sheets("Drop list").Range("C" & I)
Next I
Me.ComboBox6 = ""

End Sub

' recherche par titre
Private Sub ComboBox1_Change()
Dim Ligne As Long
Dim I As Integer
Dim ctrls As Variant

   If Me.ComboBox1.ListIndex = -1 Then Exit Sub
  Ligne = Me.ComboBox1.ListIndex + 3

  ctrls = Array(Me.TextBox1, _
                Me.ComboBox2, _
                Me.TextBox2, _
                Me.TextBox3, _
                Me.ComboBox10, _
                Me.ComboBox6, _
                Me.ComboBox7, _
                Me.TextBox5, _
                Me.ComboBox3, _
                Me.TextBox6, _
                Me.TextBox7, _
                Me.TextBox10)

For I = 1 To 12
    ctrls(I - 1).Value = ws.Cells(Ligne, I)
Next I

Me.COMMENTAIRES = Me.TextBox10.Value

With ws
.Cells(Ligne, 1).Select
End With

 End Sub

'recherche par designer en charge
Private Sub ComboBox4_Change()
Dim Ligne As Long
Dim I As Integer
Dim ctrls As Variant

If Me.ComboBox4.ListIndex = -1 Then Exit Sub
  Ligne = Me.ComboBox4.ListIndex + 3
Me.ComboBox1 = ws.Cells(Ligne, 3)

End Sub

'recherche par PN
Private Sub ComboBox5_Change()
Dim Ligne As Long
Dim I As Integer
Dim ctrls As Variant

   If Me.ComboBox5.ListIndex = -1 Then Exit Sub
  Ligne = Me.ComboBox5.ListIndex + 3
 Me.ComboBox1 = ws.Cells(Ligne, 3)

End Sub

'Date auto en fonction du status
Private Sub ComboBox3_Change()
If ComboBox3.Value = "" Then
Me.ComboBox3.Value = "Requested"
End If

If ComboBox3.Value = "" Or ComboBox3.Value = "Requested" Then
Me.TextBox6.Value = ""
Me.TextBox7.Value = ""
End If

If ComboBox3.Value = "In progress" Then
Me.TextBox6.Value = Format(Date, "dd/mm/yyyy")
End If

If ComboBox3.Value = "Completed" Then
Me.TextBox7.Value = Format(Date, "dd/mm/yyyy")
End If

End Sub

Tant mieux si cela fonctionne

Nota je n'avais pas écrit de déplacer les lignes mais de les ajouter à la fin pour vider les contrôles.

ca change quelque chose qu'elles soient en double ou pas?

Je pense que la personne qui a créé le code s'assure que les contrôles sont vide au début avant de poursuivre le code .

Si vous n'avez aucun message d'erreur à l'avenir alors votre code est bon.

Sinon il faudra revenir à l'ancienne version et ajouter les lignes à la fin.

D'accord, merci

Rechercher des sujets similaires à "demarrer userbox vide"