Aide fichier automatique

Bonjour à tous

J'ai un tableau contenant des données sur des dérogations. J'aimerais automatiser ce tableau de plusieurs façons :

  • Je souhaiterai créer un bouton "Rajouter une ligne" qui vient ajouter une ligne à la suite de mon tableau
  • Dans la colonne "Référence", j'aimerais créer une référence qui s'incrémente de cette façon : 2016-0001. Si j'ajoute une ligne au tableau, cela donnerait 2016-0002. Cependant, si on passe en 2017, j'aimerais qu'il apparaisse 2017-0001 (je souhaiterai que l'année s'incrémente d'elle-même).
  • Dans la colonne "Date de clôture", j'aimerais qu'on ne puisse pas y ajouter de date tant que la colonne "Statut" n'a pas été renseignée.

Je m'en remets à vos connaissances car je ne suis pas doué en Excel. Si un bon samaritain passe par ici, je suis preneur

Merci beaucoup

UP ?

Help ?

Bonsoir,

Pressé ? D'abord, tu utilises un tableau Excel ! Si tu fais ainsi, fais-le en connaissance de cause : tu n'as pas de ligne à ajouter, Excel s'en charge...

D'abord, tu sers la première ligne de ton tableau, en 1re colonne, avec la première référence : "2016-0001", selon ta volonté.

Et tu évites à l'avenir que ton tableau se termine par une ligne vide : il ne doit jamais y avoir de ligne sans référence en A !

Tu places la macro ci-dessous dans un module Standard :

Sub AjoutRéf()
    Dim n%, réf
    With Worksheets("Base")
        n = .Cells(.Rows.Count, 1).End(xlUp).Row
        réf = Split(.Cells(n, 1), "-")
        If Year(Date) = CInt(réf(0)) Then
            réf(1) = Format(CInt(réf(1)) + 1, "0000")
        Else
            réf(0) = Year(Date): réf(1) = "0001"
        End If
        .Cells(n + 1, 1) = Join(réf, "-")
    End With
End Sub

Tu l'affectes à un bouton, comme tu le souhaites, et tu testes.

Cordialement.

Pour la 2e question : mettre dans le module de la feuille Base :

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Dclo As Range, c As Range
    Set Dclo = Intersect(Target, Me.ListObjects(1).ListColumns("Date de clôture").Range)
    If Not Dclo Is Nothing Then
        Application.EnableEvents = False
        For Each c In Dclo
            If c.Offset(, -4) = "" Then c.ClearContents
        Next c
        Application.EnableEvents = True
    End If
End Sub

Cordialement.

Bonjour à toi MFerrand, et merci pour ta réponse !

J'ai testé tes 2 macros, elles sont top

Concernant la macro qui empêche l'ajout d'une date de clôture, c'est un peu pinailler mais... Saurais-tu comment rajouter un message d'erreur qui précise qu'il faut entrer un statut pour pouvoir ajouter une date de clôture stp ?

Encore merci

Bonjour,

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Dclo As Range, c As Range
    Set Dclo = Intersect(Target, Me.ListObjects(1).ListColumns("Date de clôture").Range)
    If Not Dclo Is Nothing Then
        Application.EnableEvents = False
        For Each c In Dclo
            If c.Offset(, -4) = "" Then
                MsgBox "Statut manquant : la clôture ne peut intervenir.", vbInformation, _
                 "Saisie non conforme en " & c.Address(False, False)
                c.ClearContents
            End If
        Next c
        Application.EnableEvents = True
    End If
End Sub

A adapter s'il y a lieu.

Cordialement.

Merci pour ton aide !

Bonne journée

Rechercher des sujets similaires à "aide fichier automatique"