VBA pour générer un tableau avec filtres de dates + Remplissage auto

Bonjour à tous et à toutes,

j'ai besoin de votre aide car je désespère.

Voila mes soucis... j'ai un tableau que vous trouverez ci-joint, et sur lequel j'ai 2 travaux à réaliser :

LE 1ER : je souhaite créer une macro qui remplissage automatiquement la colonne date "Sans objet" si :

  • la colonne qui la précède contient "Non" ou est vide (dans mon fichier j'ai coloré les colonnes en bleu)
  • les 2 colonnes qui la précèdent contiennent "Non" ou sont vides (colonnes colorées en rose dans mon fichier).

LE 2EME : j'ai besoin de créer un bouton qui génère un tableau qui filtre toutes les formations et habilitations dont la date de validité arrive à terme en N+1 ce tableau doit faire apparaitre :

- les noms prénoms des salariés, les libellés de formation et/ou habilitations avec leurs dates de validités .

J'espère vraiment que vous allez pourvoir m'aider

TRES TRES BONNE JOURNEE A VOUS TOUS

Re,

Pour le premier tableau, il n'y a pas besoin de macro:

  • Pour les colonnes bleues, la formule est la suivante : =SI(OU(D21="Non";D21="");"Sans objet";"")
  • Pour la colonne rose : =SI(OU(ET(S20="Non";R20="Non");ET(S20="";R20=""));"Sans objet";"")

Pour la macro, testez ceci

Sub bouton()
Dim cel As Range
Dim lignefin As Long
Dim colonnefin As Long
Dim dat As Date
Dim datedujour As Date
datedujour = DateSerial(Year(Now()), Month(Now()), Day(Now()))

Dim place As Range
Dim emplacement As Range
Dim celluledeb As Range
Dim cellulefin As Range
Dim lig As Long
Dim col As Long
Dim titre As String
Set celluledeb = Sheets("Tableau habilitations").Range("A14")
lignefin = Sheets("Tableau habilitations").Range("A24").End(xlDown).Row
colonnefin = Sheets("Tableau habilitations").Cells(12, Columns.Count).End(xlToLeft).Column
Set cellulefin = Sheets("Tableau habilitations").Cells(lignefin, colonnefin)

For Each cel In Sheets("Tableau habilitations").Range(celluledeb.Address & ":" & cellulefin.Address)
If IsDate(cel.Value) Then
dat = cel.Value - 365
Set place = Sheets("Tableau").Cells(Rows.Count, "A").End(xlUp)
Set place = Range(place.Address).Offset(1, 0)
Sheets("Tableau").Range(place.Address).Select
    If dat <= datedujour Then
    lig = cel.Row
    col = cel.Column
    ActiveCell.Value = Sheets("Tableau habilitations").Range("B" & lig).Value
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Sheets("Tableau habilitations").Range("B" & lig).Value
    ActiveCell.Offset(0, 1).Select
    titre = Sheets("Tableau habilitations").Range(cel.Address).Offset(12 - cel.Row, -1).Value
    ActiveCell.Value = titre
    ActiveCell.Offset(0, 1).Select
    ActiveCell.Value = Sheets("Tableau habilitations").Range(cel.Address).Value
    End If
End If
Next cel
End Sub

Ps : comme vous n'avez pas précisé où doit être le tableau, j'ai créé une nouvelle feuille "Tableau"

Cordialement

Merci pour ta réponse

je souhaite mettre une macro car avec la formule si on entre des données ça l annule ....

Je vais tester ta macro

Pour la Macro ça ne fonctionne pas

J'ai crée le bouton d'exécution dans ma feuille 1 auquel j'ai rattaché la macro et lorsque je clique dessus ...J'ai un message d'erreur...

je t'ai fait une capture écran des 2 écrans ...que je te mets en pièce jointe

Help

Re,

Une erreur dans le code...

Sub bouton()
Dim cel As Range
Dim lignefin As Long
Dim colonnefin As Long
Dim dat As Date
Dim datedujour As Date
datedujour = DateSerial(Year(Now()), Month(Now()), Day(Now()))

Dim place As Range
Dim emplacement As Range
Dim celluledeb As Range
Dim cellulefin As Range
Dim lig As Long
Dim col As Long
Dim titre As String
Set celluledeb = Sheets("Tableau habilitations").Range("A14")
lignefin = Sheets("Tableau habilitations").Range("A24").End(xlDown).Row
colonnefin = Sheets("Tableau habilitations").Cells(12, Columns.Count).End(xlToLeft).Column
Set cellulefin = Sheets("Tableau habilitations").Cells(lignefin, colonnefin)

For Each cel In Sheets("Tableau habilitations").Range(celluledeb.Address & ":" & cellulefin.Address)
If IsDate(cel.Value) Then
dat = cel.Value - 365
Set place = Sheets("Tableau").Cells(Rows.Count, "A").End(xlUp)
Set place = Sheets("Tableau").Range(place.Address).Offset(1, 0)
'J'ai enlevé les "select" ici ce qui fait que les copier-coller se font en arrière plan
    If dat <= datedujour Then
    lig = cel.Row
    col = cel.Column
    Sheets("Tableau").Range(place.Address).Value = Sheets("Tableau habilitations").Range("B" & lig).Value

    Sheets("Tableau").Range(place.Address).Offset(0, 1).Value = Sheets("Tableau habilitations").Range("B" & lig).Value

    titre = Sheets("Tableau habilitations").Range(cel.Address).Offset(12 - cel.Row, -1).Value
    Sheets("Tableau").Range(place.Address).Offset(0, 2).Value = titre

    Sheets("Tableau").Range(place.Address).Offset(0, 3).Value = Sheets("Tableau habilitations").Range(cel.Address).Value
    End If
End If
Next cel
End Sub

Cordialement

Je suis désolée mais dans le tableau, lorsque je clique sur le bouton ça met 2 fois le prénom au lieu du nom et prénom, Concernant le filtre date c'est N+1 et non l'année en cours que je souhaiterais.

Cordialement

Venez à mon aide SVP .....

Mille merciiiiiiiiiis

bonjour "besoin d aide",

Je suis désemparée, j'ai essayé de me débrouiller toute seule mais je n'y parviens pas et je pense n'avoir fait que des bêtises occassionant le "plantage" des macros VBA j'espère vraiment que vous tu vas pouvoir me sauver à nouveau.

Voilà ce qu'il m'arrive :

1° Dans le tableau récap habilitations par salarié généré (onglet " Tableau récap") il n'apparait pas :

  • le détail du nom de la formation qui se trouve dans la colonne BL64 -65.....550,
  • en ce qui concerne les formations chariots élévateurs, (pour plus de compréhensions j'ai coloré en rouge les colonnes + police en rouge des cellules concernées par ce soucis) comme il en existe plusieurs, il faudrait que que le type de chariot apparaisse dans le tableau généré (exemple chariot R389 Cat 1, Chariot R389 cat3 etc). De plus, il doit également apparaitre si la personne à le CACES et/ou l'autorisation de conduite..
  • dans la colonne "Formation le Bruit" (colonne colorée pour compréhension) j'ai supprimé la colonne "date de validité"qui n'était pas utile, pour ne pas modifier toutes mes macros liée à la suppression de la colonne date, j'ai fusionné les 2 lignes, je pense avoir une GROSSE BETISSE en faisant cela car à présent non seulement cette formation ne figure pas dans le tableau généré mais je pense que cela m'a"planté" ma macro car cela ne fonctionne plus (bouton : Tableau synthèse habilitations et bouton "habilitations périmées"

2) Bouton " Habilitations à échéance n+1" : je pense que c'est la même succession de soucis que cité ci dessus.

Pour les chariots il n'y a aucun nom qui apparait, il n'y a que les dates de validités...

Encore mille excuses et HELLLLLP ME SVP Très bonne journée

Rechercher des sujets similaires à "vba generer tableau filtres dates remplissage auto"