Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Trouver une cellule contenant une date VBA

Dim.Reichart

XLDnaute Occasionnel
Bonjour,
Je cherche un moyen de sélectionner une partie de mon tableau, allant de la date spécifiée en C2 et C3, jusqu'à la cellule précédant la prochaine date. Le but est de supprimer ces cellules.
J'ai préalablement collé le bon format grâce aux lignes passées en commentaire en fin de Sub, mais je coince pour dire "quand tu trouves une date, tu t'arretes".
VB:
Option Explicit
Sub test()

Dim ancien As Range, A As Long, cel As Long, rng As Range
Set rng = Application.Range("a:a")
Set ancien = Cells.Find(Cells(2, 3).Offset & " " & Cells(3, 3).Offset, Cells(21, 7), xlValues, xlWhole, xlByColumns, xlNext, False, False)
    If ancien Is Nothing Then
    GoTo Ligne1
    Else: A = ancien.Row
    End If
For cel = 1 To rng.Rows.Count
Range("A" & A & ":A" & rng.Find(IsDate(Cells(cel, 1).Offset), Cells(A, 1), xlValues, xlPart, xlByColumns, xlNext, False, False).Row).Select
Selection.Delete shift:=xlUp
Next cel
'Range("a9").Select
'ActiveCell.FormulaR1C1 = Format(DateValue(Cells(2, 3).Offset & " " & Cells(3, 3).Offset), "mmmm yyyy")

Ligne1:
End Sub
Comment feriez vous?
Merci.
 

Pièces jointes

  • Exercice.xlsm
    21.5 KB · Affichages: 6

Ikito

XLDnaute Occasionnel
Bonjour à vous deux,

Dim, tu veux supprimer les cellules avant les cellules contenant une date, c'est ça ?
Pourquoi arrêter la macro et supprimer manuellement alors qu'il est possible de le faire via macro ?
 

Dim.Reichart

XLDnaute Occasionnel
Bonjour à vous deux,
Désolé Robert si mon code est confus, je met le fichier d'origine, ça aidera peut être.
Ikito, j'arrête la macro s'il ne trouve pas la case d'origine correspondant à c2&c3 format date "mmmm aaaa".

Sur les pages projets, le bouton lance la macro, pour:
-vérifier si le pointage existe déjà
-supprimer les anciennes données s'il y en a
-lancer l’impression du tableau de pointage en PDF
-créer le dossier année et le sous dossier client s’ils n’existent pas, le tout dans le même dossier où se trouve le fichier excel
-coller le lien vers le PDF colonne F
-copier les données en dessous afin de les utiliser plus tard, en nommant la 1e cellule de la plage par la date format "mmmm aaaa"
-vider le tableau de pointage

J'ai mis en rouge l'étape qui coince.
Dans l'ensemble ça se passe plutôt bien je crois, mais au lieu de supprimer uniquement les anciennes données, il supprime la totalité de ce qui se trouve en dessous du bouton, ce qui ne m'arrange pas exactement...
J'espère que c'est plus clair...
 

Pièces jointes

  • Suivi global1.xlsm
    203.7 KB · Affichages: 10

Dim.Reichart

XLDnaute Occasionnel
J'ai trouvé!! Et tout seul, comme un grand (je suis trop fier de moi la, même si j'ai l'impression d'avoir bien galéré)
VB:
Sub Macro2()
Dim ancien As Range, c As Long

Set ancien = Cells.Find(Cells(2, 3) & " " & Cells(3, 3), Cells(1, 1), xlValues, xlWhole, xlByColumns, xlNext, False, False)
   If ancien Is Nothing Then GoTo Ligne1
 
   c = ancien.Row + 1

  Do While IsDate(Cells(c, 1)) = False
   c = c + 1
   Loop
   c = c - 1
Range("a" & ancien.Row & ":a" & c).Select
Selection.Delete shift:=xlUp
 
Ligne1:
End Sub
Bon, maintenant, faut que je l'adapte à mon fichier, j'espère que ca va toujours fonctionner...
Merci pour votre aide, à bientôt.
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…