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

Quinzaine: fonction en VBA Excel

yusuf1

XLDnaute Nouveau
Bonjour,

je viens de créer une fonction en VBA Excel qui prends comme argument une date de base et retourne la première quinzaine du mois de la date en argument.

Exemple :
Date de base = 21/03/2011
Quinzaine retournée = Du 01/03/2011 au 15/03/2011

Mon problème c’est que je veux que la quinzaine retournée soit de la forme :
Du 01/03/11 au 15/03/11
Merci d'avance pour vos réponses et suggestions.


Function quinzaine(BaseDate As Date) As String
Dim debut As Date
Dim fin As Date

debut = DateSerial(Year(BaseDate), Month(BaseDate), 1)
debut = Format(debut, "dd/mm/yy")
fin = DateSerial(Year(debut), Month(debut), 15)
fin = Format(fin, "dd/mm/yy")
quinzaine = "Du " & debut & " au " & fin
End Function
 

JNP

XLDnaute Barbatruc
Re : Quinzaine: fonction en VBA Excel

Bonsoir Yusuf1 et bienvenue ,
C'est normal, tes Format ne servent à rien vu que tes variables sont en Date
Code:
Function quinzaine(BaseDate As Date) As String
Dim debut As Date
Dim fin As Date
debut = DateSerial(Year(BaseDate), Month(BaseDate), 1)
fin = DateSerial(Year(debut), Month(debut), 15)
quinzaine = "Du " & Format(debut, "dd/mm/yy") & " au " & Format(fin, "dd/mm/yy")
End Function
Bonne soirée
 

Hippolite

XLDnaute Accro
Re : Quinzaine: fonction en VBA Excel

Bonjour,
Quelquechose comme :
VB:
Function quinzaine(BaseDate As Date) As String
Dim debut As Date, fin As Date
Dim debutS As String, finS As String
Application.Volatile
debut = DateSerial(Year(BaseDate), Month(BaseDate), 1)
debutS = CStr(Format(debut, "dd/mm/yyyy"))
fin = debut + 15
finS = CStr(Format(fin, "dd/mm/yyyy"))
quinzaine = "Du " & debutS & " au " & finS
End Function
Il faut encore ajouter les choix de quinzaine
A+
 
Dernière édition:

JHA

XLDnaute Barbatruc
Bonjour à tous,

Avec une petite modification pour la quinzaine
Code:
Function quinzaine(BaseDate As Date) As String
Dim debut As Date, fin As Date
Dim debutS As String, finS As String
Application.Volatile
If Day(BaseDate) > 15 Then
debut = DateSerial(Year(BaseDate), Month(BaseDate), 16)
debutS = CStr(Format(debut, "dd/mm/yyyy"))
fin = DateSerial(Year(BaseDate), Month(BaseDate) + 1, 1) - 1
finS = CStr(Format(fin, "dd/mm/yyyy"))
quinzaine = "Du " & debutS & " au " & finS
Else
debut = DateSerial(Year(BaseDate), Month(BaseDate), 1)
debutS = CStr(Format(debut, "dd/mm/yyyy"))
fin = debut + 14
finS = CStr(Format(fin, "dd/mm/yyyy"))
quinzaine = "Du " & debutS & " au " & finS
End If
End Function

JHA
 

Pièces jointes

  • Classeur1.xlsm
    14.2 KB · Affichages: 33

GADENSEB

XLDnaute Impliqué
Excellent

je voudrais l'intégrer à un fichier d'extraction
Code:
Sub ExtractQuinzaine()


Dim L%, t(), k$, temp()
   
    With Sheets("TRESORERIE")
   
        L = .[A35000].End(xlUp).Row
        t = .Range(.Cells(2, 1), .Cells(L, 29)).Value
        For i = LBound(t) To UBound(t)
            If t(i, 25) < 0 And t(i, 18) <= Date Then
                If k = "" Then
                    k = i
                    Else: k = k & ":" & i
                End If
            End If
        Next i
    End With
    If k <> "" Then
        With Sheets("RGT")
            .Range(.Cells(2, "b"), .Cells(.[b65000].End(xlUp).Row, "k")).Clear
            temp = Application.Index(t, Application.Transpose(Split(k, ":")), Array(1, 2, 5, 6, 8, 15, 16, 17, 18))
            With .[b2].Resize(UBound(temp), UBound(temp, 2))
                .NumberFormat = "@"
                .Value = temp
            End With
        End With
    End If
End Sub

Le but du jeu :
Intégrer dans la colonne A : quinzaine (de la colonne 18 de la BDD) et de créer un regroupement (total par Quinzaine)

Est -ce jouable ?
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…