Re,
Pas de raison d'être désolé: je te taquinais aimablement
Ton erreur 1004 est due au fait que, dans ton code -dans la Sub IniUsf()- tu fais référence à une plage nommée "ListCou" ... celle-ci n'existe pas (il y en a bien une qui correspond sans doute, mais son nom est ListCouleur). Même chose, j'en ai peur avec .Range("ListMar").Value: tu fais ici référence à une autre plage nommée inexistante (il existe une ListMarque !?)
Au même endroit dans le code, tu définis trois fois le contenu de la liste de cboSup (lignes 25, 26 et 29 )
Attention également au fait qu'en utilisant tabloZtxt, il faut impérativement que les numéros des colonnes correspondent au nombre derrière le 'T' dans le nom de chaque textBox. En insérant deux colonnes, comme tu l'as fait, tu as décalé toutes les colonnes à partir de la 4e ... T4 devrait donc devenir T6, etc ... jusqu'à T38 qui contient les données de la colonne n°40
Soit tu déplaces tes 2 colonnes après la 38e, soit tu renommes l'intégralité des TextBoxes (sauf T1 et T2) ... ou alors tu utilises un autre système que le fameux tabloZtxt pour lire ou écrire dans toutes tes zones de texte.
... Je me suis arrêté là
Dis moi j'ai modifié mes codes en décalant les adressages par rapport aux colonnes...
Est ce que cela peut marcher ?
Private Sub IniUsf()
Set Ws = ThisWorkbook.Sheets("BDD")
L = Ws.Range("A65536").End(xlUp).Row
With Ws
Set rngDes = .Range("A2:A" & L)
.Range("A2").Sort Key1:=.Range("A2"), Order1:=xlAscending, Header:=xlGuess
cboNum.List = rngDes.Value
End With
With Sheets("Listes2")
cboMat.List = .Range("ListMat").Value
cboCou.List = .Range("ListCou").Value
cboMar.List = .Range("ListMar").Value
cboInt.List = .Range("ListInt").Value
cboExt.List = .Range("ListExt").Value
CboSup.List = .Range("ListSup").Value
End With
tabloZtxt = Array(1, 2, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 36, 37, 39, 40)
For i = 0 To UBound(tabloZtxt)
Me.Controls("T" & tabloZtxt(i)) = Cells(L, tabloZtxt(i))
Next i
With Ws
If .Cells(L, 6) = "Auto" Then
CheckBox1 = True
Else
CheckBox1 = False
T4 = .Cells(L, 6)
End If
End With
With Ws
cboMat = Ws.Cells(L, 3)
cboCou = Ws.Cells(L, 4)
cboMar = Ws.Cells(L, 5)
cboInt = Ws.Cells(L, 21)
cboExt = Ws.Cells(L, 22)
CboSup = Ws.Cells(L, 35)
End With
With Ws
T38 = Format(Now, "dd/mm/yyyy - hh:nn")
End With
End Sub
Private Sub cboNum_Change()
Dim L As Long, i As Byte
If cboNum.ListIndex = -1 Then Exit Sub
L = cboNum.ListIndex + 2
With Ws
For i = 0 To UBound(tabloZtxt)
If Controls("T" & tabloZtxt(i)) <> "" Then .Cells(L, tabloZtxt(i)) = 1 * Controls("T" & tabloZtxt(i))
Next i
.Cells(L, 3) = cboMat
CheckBox1 = IIf(.Cells(L, 6) = "Auto", True, False)
T4 = .Cells(L, 6)
.Cells(L, 4) = cboCou
.Cells(L, 5) = cboMar
.Cells(L, 21) = cboInt
.Cells(L, 22) = cboExt
.Cells(L, 35) = CboSup
.Cells(L, 40) = T38
End With
End Sub
Private Sub CheckBox1_Click()
With Controls("T4")
If CheckBox1 Then
.Value = "Auto"
.Enabled = False
.BackColor = 15790320
Else
.Value = ""
.Enabled = True
.BackColor = 16777215
End If
End With
End Sub
Private Sub btnAjout_Click()
Dim i As Byte, c As Range, L As Long
If T1 = "" Then Exit Sub
L = Ws.Range("A65536").End(xlUp).Row + 1
Set c = rngDes.Find(T1)
If Not c Is Nothing Then
If MsgBox(T1 & " déjà dans la base" & vbCrLf & _
"Enregistrer quand même ?", vbQuestion + vbYesNo, "DOUBLONS !") = 7 Then
EffaceTout
Exit Sub
End If
End If
With Ws
For i = 0 To UBound(tabloZtxt)
If Controls("T" & tabloZtxt(i)) <> "" Then .Cells(L, tabloZtxt(i)) = 1 * Controls("T" & tabloZtxt(i))
Next i
.Cells(L, 3) = cboMat
.Cells(L, 4) = cboCou
.Cells(L, 5) = cboMar
.Cells(L, 6) = IIf(CheckBox1, "Auto", T4)
.Cells(L, 21) = cboInt
.Cells(L, 22) = cboExt
.Cells(L, 35) = CboSup
.Cells(L, 40) = T38
End With
EffaceTout
IniUsf
End Sub
Private Sub btnModif_Click()
Dim i As Byte, L As Long
If cboNum.ListIndex = -1 Then Exit Sub
L = cboNum.ListIndex + 2
If MsgBox("Acceptez vous les modifications ?", _
vbQuestion + vbYesNo, "MODIFICATION") = 7 Then Exit Sub
With Ws
For i = 0 To UBound(tabloZtxt)
If Controls("T" & tabloZtxt(i)) <> "" Then .Cells(L, tabloZtxt(i)) = 1 * Controls("T" & tabloZtxt(i))
Next i
.Cells(L, 3) = cboMat
.Cells(L, 4) = cboCou
.Cells(L, 5) = cboMar
.Cells(L, 6) = IIf(CheckBox1, "Auto", T4)
.Cells(L, 21) = cboInt
.Cells(L, 22) = cboExt
.Cells(L, 35) = CboSup
.Cells(L, 40) = T38
End With
EffaceTout
IniUsf
End Sub