Recherche de bornes du 16 du mois au 15 du mois

  • Initiateur de la discussion Initiateur de la discussion Guigui
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Guigui

XLDnaute Occasionnel
Bonjour à tous,

Voici mon probleme,
je voudrais automatiser la creation de feuille d'emargement (planning)

J'ai dans une feuille, des dates avec des horraires qui correspondent.
en lancant mon code voici ce qui se passe :
- je recherche le dernier jour de la feuille d'emargement précedente (15 du mois) (ex : 15 OCT)
- je le retrouve dans la feuille des horraires
- je lui ajoute +1 (J+1) pour definir le debut de la nouvelle période (16 du mois) (ex : 16 OCT)

ensuite voila le hic !
je voudrais definir la borne de fin (de période) : le 15 du mois d'aprés (ex : 15 NOV)

si je rajoute 30 à ma borne de debut, ca coince avec les mois à 30/31/28 jours
J'ai trouvé sur le forum, la formule :
=DATE(ANNEE(J405);MOIS(J405)+1;JOUR(J405)-1)

qui fonctionne parfaitement mais je n'arrive pas à l'utiliser dans mon code
(déjà, la transformer en VBA)
je vous joint mon fichier exemple ... (je previens, mon code est pas trés propre .... voir immonde .... mais bon ca marche .... ;-)

(le code est dans module1 - CREATION - a lancé dans la feuille "septembre 06", bouton CREATION)

Merci d'avance pour votre aide
A+
Guillaume
 

Pièces jointes

Re : Recherche de bornes du 16 du mois au 15 du mois

Bonjour

Regarde ci ce code fonctionne bien
Code:
Sub CREATION()
Dim vIndex As Variant
Dim Fin As Date
Dim Debut As Date
Dim nb As Byte
'Recherche dans la plage la date la plus éloignée
Fin = Application.Max([B6:B35])
'Détermine le 15 du mois suivant
Debut = DateSerial(Year(Fin), Month(Fin) + 1, 15)
'Recherche la position de la date Fin dans la plage
vIndex = Application.Match(CLng(Fin), Sheets(1).Range("C1:C600"), 0) + 1
'Nombre de jours que comporte le prochain mois
nb = Debut - Fin - 1
If Not IsError(vIndex) Then
'La date a été trouvée dans la plage, copie de plage
With Sheets(1)
    .Range(.Cells(vIndex, 2), .Cells(vIndex + nb, 5)).Copy
    .Range("K400").PasteSpecial Paste:=xlPasteValues
   End With
End If
End Sub
@+Jean-Marie
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
8
Affichages
476
Réponses
3
Affichages
637
Retour