Bonjour à tous,

Je suis ne train de fabriquer un outil sous EXCEL et les limites d'EXCEL me poussent à chercher des solutions sous VBA; je précise que je ne m'y connais pas du tout en VBA.

En fait, j'ai créé une macro qui filtre une feuille, copie les résultats et les colle dans une autre feuille pour plus de lisibilité. Les cellules peuvent être sur fond coloré ou pas.

Le problème est que dans certains cas, les cellules ne contiennent aucune valeur et donc ,j'aimerais que le résultat soit un message du type " Il ny'a aucune cellule répondant à vos critères" plutôt qu'un copier-coller de cellules à fond coloré et sans valeur.


En plus,j'essaie en vain de coller ces résultats dans un autre classeur EXCEL dont le nom comporterait le jour et la date d'exécution de la macro pour assurer un suivi.

Pouvez-vous m'aider SVP ?

Je vous mets ici ma fonction "filtre"

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
102
103
104
105
106
Sub Taches_NonDemarees()
'Fonction permettant d'afficher les taches non démarées
' 
'
 
' Ici, on commence par effacer la zone où on veut afficher les données filtrées (au cas où cette zone contiendrait des valeurs)
        Columns("E:ZC").Select
    Selection.Delete Shift:=xlToLeft
    Rows("20:540").Select
    Selection.Delete Shift:=xlUp
    ActiveWindow.SmallScroll Down:=-15
 
    '=============================================
' Ici, on dimensionne les colonnes qui recevront les données
 
    Columns("F:F").Select
    Selection.ColumnWidth = 4.57
    Columns("G:G").Select
    Selection.ColumnWidth = 44.86
    Columns("H:H").Select
    Selection.ColumnWidth = 9.43
    Columns("I:I").Select
    Selection.ColumnWidth = 6.29
 
'On va sur la feuille d'où l'on va filtrer les données
' On filtre et on copie le résultat
    Sheets("Retroplanning").Select
    Selection.AutoFilter Field:=5, Criteria1:="Non démarée", Operator:=xlOr _
        , Criteria2:="="
    Range("B6:C100").Select
    Selection.Copy
 
'on revient sur la feuille où l'on va coller le résultat
    Sheets("Suivi_Taches").Select
    Range("F20").Select
    ActiveSheet.Paste
    Sheets("Retroplanning").Select
    ActiveWindow.SmallScroll Down:=-78
    Range("F6:F101").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Suivi_Taches").Select
    Range("H20").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=3
    Range("F20:H100").Select
    Application.CutCopyMode = False
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlMedium
        .ColorIndex = xlAutomatic
    End With
    Selection.Borders(xlInsideHorizontal).LineStyle = xlNone
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .Weight = xlThin
        .ColorIndex = xlAutomatic
    End With
    Columns("I:I").Select
    Selection.Delete Shift:=xlToLeft
    Range("F20").Select
End Sub
Donc,j'essaie donc de coller le tout dans un fichier "resultat_jour_heure.xls" qui sera suivant le même format que la feuille "Suivi_Taches" du point de vue du dimensionnement des colonnes.

Merci pour votre aide