Modification du code

Bonjour tout le monde du forum,

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 ?

Merci à vous pour votre aide.

Rubis
ASTREINTES ET PERMANENCES.xlsm (134,4 Ko)

point 1 :

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

Bonjour,

Merci pour ce retour.

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 ?

ASTREINTES ET PERMANENCES.xlsm (120,5 Ko)

c’est quoi une normale ou c’est quelle macro ?

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

question 2 = 2 personnes dans la même cellule mais en 2 lignes ?
macro « planifier » est assez compliquée pour quelque chose assez simple.

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

toto à côté de tintin sur la même ligne ou l’un en dessous l’autre ?

l’un en dessous de l’autre si possible

ASTREINTES ET PERMANENCES.xlsm (125,7 Ko)

1 « J'aime »

Merci, mais j’ai un grand soucis !

il me donne une erreur que je ne comprends pas lorsque je veux créer un responsable via le UserForm RESPONSABLES.

Peux tu faire un essai et me dire ce qui ne fonctionne plus s’il te plaît ?

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.

j’avais une erreur automatisation et maintenant cela fonctionne a nouveau, croisons les doigts.

Par contre avec votre code planifier2 il me remplit les cellules de tous les jours de l’année !

le tableau3 de « paramètres » contient des lignes que j’ai ajouté, il faut les supprimer …

OK Merci à toi pour ton travail.

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.