Re : Macro problème avec😛rivate Sub UserForm_Initialize()
Re, le forum, Kotov,
Comme tu me l'as suggéré, ci-dessous les macros.
Private Sub UserForm_Initialize() ' initialisation formulaire
ComboBox1.Clear ' mise en place du combox des plats
ic = 0
For l = Range("baseplat").Row + 1 To Sheets("CartePlats").Cells(65536, Range("baseplat").Column).End(xlUp).Row
If Not Sheets("CartePlats").Cells(l, 2).Value = "" Then
ComboBox1.AddItem Sheets("CartePlats").Cells(l, 2).Value
If l = pos Then spl = ic ' est-ce le plat de départ ?
ic = ic + 1
End If
Next l
ComboBox1.ListIndex = spl ' position index
For k = 2 To 16 ' initialisation des denrées
Me.Controls("ComboBox" & k).Clear
Next k
c = Range("baseprod").Column ' traitement des denrées
For l = Range("baseprod").Row To Sheets("CartePlats").Cells(65536, c).End(xlUp).Row
If Not Sheets("CartePlats").Cells(l, c).Value = "" Then
For k = 2 To 16
Me.Controls("ComboBox" & k).AddItem Sheets("CartePlats").Cells(l, c).Value
Next k ' mise en place des denrées dans les 12 combobox
End If
La deuxième :
Private Sub UserForm_Initialize()
Var_Concatene = ""
With UserForm11
With ListBox1
.ColumnCount = 8
.ColumnWidths = "00;80;90;105;49;90;00;45"
End With
With .CmbB_Date
.ColumnCount = 2
.ColumnWidths = "0;1"
End With
.CmdB_Archiver.Visible = False
TestRecup
.Caption = Var_Concatene
End With
End Sub
Merci pour votre aide,
à+
Christian
Next l
Call modif ' position des valeurs
End Sub
Private Sub bouton_valider_Click() ' validation
Dim cx As String ' valeur caractère
Dim vn As Double ' valeur numérique textbox
Dim vx As String ' valeur textbox saisie
For t = 1 To 60 ' traitement des zones saisies
vx = Me.Controls("textBox" & t).Value ' zone récupérée pour traitement
If vx <> "" Then
For i = 1 To Len(vx) ' vérification numéricité
cx = Mid(vx, i, 1)
Select Case cx
Case 0 To 9, ".", ","
Case Else ' arrêt sur erreur avec message
MsgBox ("caractère non numèrique : " & vx & Chr(10) & "corrigez pour pouvoir valider")
Me.Controls("textBox" & t).SelStart = 0
Me.Controls("textBox" & t).SelLength = Len(vx)
Me.Controls("textBox" & t).SetFocus
Exit Sub ' il faut corriger l'erreur
End Select
Next i
End If
Next t
c = Range("basedenrée").Column ' colonne des denrée sur feuille
l = ComboBox1.ListIndex + Range("baseplat").Row + 1 ' ligne saisie
d = 0: t = 1
For k = 2 To 16 ' traitement des 12 denrées
ic = Me.Controls("ComboBox" & k).ListIndex ' indice combobox denrée
If ic < 0 Then
t = t + 4 ' traitement du combobox non positionné : effacement cellules
Sheets("CartePlats").Cells(l, c).Offset(0, d).ClearContents
Sheets("CartePlats").Cells(l, c + 3).Offset(0, d).Resize(1, 4).ClearContents
Else ' traitement du combobox positionné : documentation cellules
Sheets("CartePlats").Cells(l, c).Offset(0, d).Value = _
Me.Controls("ComboBox" & k).List(ic) ' denrée
For i = 3 To 6 ' valeurs associées
Sheets("CartePlats").Cells(l, c).Offset(0, d + i).NumberFormat = "0.000"
vx = Me.Controls("textBox" & t).Value
p = InStr(1, vx, ".")
If p = 0 Then p = InStr(1, vx, ",")
If p = 0 Then ' mise en numérique de la saisie
vn = Val(vx)
Else
vn = CDbl(Left(vx, p - 1) & "," & Right(vx, Len(vx) - p))
End If
Sheets("CartePlats").Cells(l, c).Offset(0, d + i).Value = vn
t = t + 1
Next i
End If
d = d + 7
Next k
End Sub