Bonjour à tous,

Je suis en train de construire un tableau Excel qui permettrait d'automatiser la gestion de diagnostic prénataux (analyses pendant la grossesse) mais surtout la gestion de la paperasserie administrative (obligatoire d'après certains décrets).
Grace à la FAQ de ce site (qui d'ailleurs est très bien) et de quelques-autres (je débute en VBA), j'ai réussi à "pondre" quelques macros.

Ma 1ère démarche consiste à extraire de mon tableau certaines lignes en fonction de ce qu'elles contiennent. Ce que j'ai réussi à faire avec les macros suivantes. Est-il possible de regrouper ces 4 macros en 1 seule ? Est-il possible également de lancer l'éxécution sous condition (par exemple, pour la macro FiltreSuivi : ne la lancer que si date d'accouchement est dépassée ...) ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
Sub FiltreSuivi()
 
  Dim Lig     As Long
  Dim Col     As String
  Dim NbrLig  As Long
  Dim NumLig  As Long
  Dim date1 As Date
  Dim date2 As Date
 
  Sheets("Pas suivi").Activate ' feuille de destination
 
  Col = "N"                 ' colonne de la donnée non vide à tester
  NumLig = 0
  With Sheets("DPN")     ' feuille source
  NbrLig = .Cells(65536, Col).End(xlUp).Row
  For Lig = 1 To NbrLig
    If .Cells(Lig, Col).Value = "Non" Then
      .Cells(Lig, Col).EntireRow.Copy
      NumLig = NumLig + 1
      Cells(NumLig, 1).Select
      ActiveSheet.Paste
    End If
  Next
 
  End With
 
End Sub
Sub FiltreConsentement()
 
  Dim Lig     As Long
  Dim Col     As String
  Dim NbrLig  As Long
  Dim NumLig  As Long
 
  Sheets("Pas consentement").Activate
  ' feuille de destination
 
  Col = "M"                 ' colonne de la donnée non vide à tester
  NumLig = 0
  With Sheets("DPN")     ' feuille source
  NbrLig = .Cells(65536, Col).End(xlUp).Row
  For Lig = 1 To NbrLig
    If .Cells(Lig, Col).Value = "Consentement" Then
      .Cells(Lig, Col).EntireRow.Copy
      NumLig = NumLig + 1
      Cells(NumLig, 1).Select
      ActiveSheet.Paste
    End If
  Next
  End With
 
End Sub
 
Sub FiltreAttes()
 
  Dim Lig     As Long
  Dim Col     As String
  Dim NbrLig  As Long
  Dim NumLig  As Long
 
  Sheets("Pas attes").Activate ' feuille de destination
 
  Col = "M"                 ' colonne de la donnée non vide à tester
  NumLig = 0
  With Sheets("DPN")     ' feuille source
  NbrLig = .Cells(65536, Col).End(xlUp).Row
  For Lig = 1 To NbrLig
    If .Cells(Lig, Col).Value = "Attestation" Then
      .Cells(Lig, Col).EntireRow.Copy
      NumLig = NumLig + 1
      Cells(NumLig, 1).Select
      ActiveSheet.Paste
    End If
  Next
  End With
 
End Sub
Sub FiltreConsAttes()
 
  Dim Lig     As Long
  Dim Col     As String
  Dim NbrLig  As Long
  Dim NumLig  As Long
 
  Sheets("Pas cons + attes").Activate ' feuille de destination
 
  Col = "M"                 ' colonne de la donnée non vide à tester
  NumLig = 0
  With Sheets("DPN")     ' feuille source
  NbrLig = .Cells(65536, Col).End(xlUp).Row
  For Lig = 1 To NbrLig
    If .Cells(Lig, Col).Value = "Cons. + Attes." Then
      .Cells(Lig, Col).EntireRow.Copy
      NumLig = NumLig + 1
      Cells(NumLig, 1).Select
      ActiveSheet.Paste
    End If
  Next
  End With
 
End Sub
Ma 2ème démarche est de lancer un publipostage à partir de ces nouveaux tableaux. J'ai suivi la procédure de silkyroad (http://silkyroad.developpez.com/Exce...eWordExcel/#LX au paragraphe X) qui donne un très bon résultat. Seul problème : sur mes "nouveaux" tableaux (générés par macro), je n'ai pas la ligne de titre de colonnes ce qui me "zappe" le 1er enregistrement. J'ai eu beau décocher la case "La 1ère ligne de données contient les en-têtes de colonnes" (dans la fenêtre de sélection de l'onglet) mais rien n'y fait. Comment résoudre ce problème ?

Je vous remercie par avance.