[VBA-E]Création fichier EXCEL et détection cellule vide
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:
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
Re: [VBA]Création fichier EXCEL et détection cellule vide
Citation:
Envoyé par benoue
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.
y as-t'il quelque chose au-dessus de la ligne 6 ?
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
(...)
' On filtre et on copie le résultat
Sheets("Retroplanning").Select
Selection.AutoFilter Field:=5, Criteria1:="Non démarée", Operator:=xlOr _
, Criteria2:="="
'---- Test si résultat
IF WorksheetFunction.CountA(Range("B6:C100")) = 0
MsgBox ("Aucun résultat ne conviennent !"
exit sub
endif
Range("B6:C100").Select
Selection.Copy
'on revient sur la feuille où l'on va coller le résultat
(..) |
Citation:
Envoyé par benoue
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.
Le classeur existe-t'il ? est-'il ouvert? ..