Ajout et Mise à jour automatique ligne tableau Excel (ListObjects)
Bonjour,
Je dois créer un fichier permettant l'encodage des participants à une réunion.
Les cellules C1 à C4 permettent de définir les informations générales concernant la réunion (Sujet, Lieu, Heure de Début, Heure de Fin)
Ensuite j'ai créé un tableau List Objects reprenant les numéros de places dans la salle.
Je cherche à créer une macro dans le fichier ci-joint qui permettrait les fonctions suivantes :
Définir les valeurs de C3 et C4 comme valeur par défaut pour chaque ligne dans les colonnes M et N.
Si l'utilisateur introduit pour une ligne spécifique (M7) une heure de début supérieure à l'heure de début de la réunion, la macro insèrera une nouvelle ligne au dessus de la ligne concernée et reprendra les valeurs des colonnes A et B de la ligne d'origine en indiquant dans la colonne M la valeur reprise dans C3 et dans la colonne N la valeur de M7 avant insertion.
Et le même principe si l'utilisateur introduit une heure de fin de présence inférieure à la fin de la réunion (C4), la macro insérera une ligne en dessous de la ligne concernée, recopiera les valeurs des colonnes A et B et reprendra dans la colonne de la nouvelle ligne la valeur de la colonne de la ligne précédente et indiquera dans la colonne N la valeur de C4.
J'ai pour le moment définit un macro basé sur le WorkSheet Change.
Cependant, la fichier se bloque lorsque la macro est executée.
De plus ma macro ne prévoit pas encore l'insertion d'une ligne si l'heure de présence est supérieure à l'heure de début de la réunion.
Auriez-vous des conseils ?
Merci d'avance,
François
Ci-dessous mon code VBA et ci joint le fichier concerné.
Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim PL As Range
Dim n As Integer
Set PL = Range("SEATPLAN")
If Target.Column = PL.ListObject.ListColumns(14) Then
If Target.Offset(-1, 0).Cells.Value < ActiveSheet.Cells(4, 3).Value Then
PL.ListObject.ListRows.Add (Target.Row - 4)
Target.Offset(1, -13).Cells.Value = Target.Offset(0, -13).Cells.Value
Target.Offset(1, 0).Cells.Value = ActiveSheet.Cells(4, 3).Value
Target.Offset(1, -1).Cells.Value = Target.Cells.Value
End If
End If
With PL
For n = 1 To .Rows.Count
If .Cells(n, 14).Value = vbNullString Then .Cells(n, 14).Value = ActiveSheet.Cells(4, 3).Value
Next n
End With
End Sub
Bonjour
Cependant, la fichier se bloque lorsque la macro est executée.
Donnez un exemple de ce que vous complétez dans le fichier afin que je puisse reproduire le problème rencontré
Crdlt.
Bonjour,
Si on essaye de modifier l'heure de fin de présence colonne N d'une des lignes le fichier bloque.
Merci,
François