dans mon fichier ci-joint j’ai 2 petits problèmes, enfin, je pense que c’est petit, à vous de me dire si oui ou non.
Lors d’une validation d’une création d’astreinte ou permanence via le UserForm CREATION, il me place la première inscription hors du tableau structuré sur l’onglet PARAMETRES.
Est-il possible de modifier le code de validation de façon que je puisse si besoin inscrire deux personnes sur une même période de jours dans le tableau du calendrier ?
Private Sub CommandButton1_Click()
Dim dlt%, c
If ComboBox2 = "" Or ComboBox1 = "" Or TextBox2 = "" Or TextBox2 = "jj/mm/aaaa" Or TextBox3 = "jj/mm/aaaa" Or TextBox3 = "" Then
MsgBox ("Toute les informations ne sont pas rentrées")
Else
With Range("tableau3").ListObject
If .ListRows.Count Then Set c = .ListRows.Add.Range Else Set c = .InsertRowRange 'nouvelle ligne du TS
End With
c.Cells(1).Value = ComboBox2
c.Cells(2).Value = ComboBox1
c.Cells(3).Value = CDate(TextBox2)
c.Cells(4).Value2 = CDate(TextBox3)
c.Cells(5).Value = Application.WorksheetFunction.VLookup(Me.ComboBox2.Value, Range("RESPONSABLES"), 4, 0)
Run ("Planifier")
Unload Me
End If
End Sub
Une question;
entre temps j’ai également modifier mon code afin de retrouver une normale. Tu veux bien y jeter un coup d’oeil pour me dire si cela tient la route s’il te plaît ?
Une normale, je voulais dire si cela convient pour être efficace.
le code c’est celui-ci
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Dim Lo As Object, r As Range
Set Lo = Feuil2.ListObjects(1)
With Lo
If .InsertRowRange Is Nothing Then
Set r = .HeaderRowRange.Cells(1).Offset(.ListRows.Count + 1)
Else
Set r = .InsertRowRange.Cells(1)
End If
End With
With r
.Offset(, 0) = ComboBox2.Value
.Offset(, 1) = ComboBox1.Value
.Offset(, 2) = CDate(Me.TextBox2.Value)
.Offset(, 2).NumberFormat = "m/d/yyyy"
.Offset(, 3) = CDate(Me.TextBox3.Value)
.Offset(, 3).NumberFormat = "m/d/yyyy"
.Offset(, 4) = Application.WorksheetFunction.Index(Sheets("RESPONSABLES").Range("E3:E" & Sheets("RESPONSABLES").Range("B" & Rows.Count).End(xlUp).Row), _
Application.WorksheetFunction.Match(Me.ComboBox2.Value, Sheets("RESPONSABLES").Range("B3:B" & Sheets("RESPONSABLES").Range("B" & Rows.Count).End(xlUp).Row), 0))
End With
Run ("Planifier")
Unload Me
End Sub
écraser les 5 cellules en même temps pour être plus efficace peut-être ? (avec votre macro ou la mienne)
Private Sub CommandButton1_Click()
Dim dlt%, c, sAcron
If ComboBox2 = "" Or ComboBox1 = "" Or TextBox2 = "" Or TextBox2 = "jj/mm/aaaa" Or TextBox3 = "jj/mm/aaaa" Or TextBox3 = "" Then
MsgBox ("Toute les informations ne sont pas rentrées")
Else
With Range("tableau3").ListObject 'le TS
If .ListRows.Count Then Set c = .ListRows.Add.Range Else Set c = .InsertRowRange 'nouvelle ligne du TS
End With
sAcron = Application.WorksheetFunction.VLookup(Me.ComboBox2.Value, Range("RESPONSABLES"), 4, 0) 'acronyme
c.Value = Array(ComboBox2, ComboBox1, CDate(TextBox2), CDate(TextBox3), sAcron) 'écraser les 5 cellules en même temps
Run ("Planifier")
Unload Me
End If
End Sub
2 personnes les mêmes jours, c’est à dire si toto est en astreinte du 01 au 10 et que tintin est de permanence par exemple du 01 au 10 alors oui ils devraient être dans la même cellule.
Macro planifier, ok si tu as mieux je suis preneur
cela fonctionne sans erreur chez moi, vous avez quelle erreur sur quelle ligne ?
Ici aussi, on peut utiliser ce tableau structuré au lieu de ces cellules.