Résolu XL 2010 calcul entre 2 date en vba

racalbuto

XLDnaute Nouveau
bonsoir a tous.
j ai un classeur ou je calcul le nombre de fois ou il y a la lettre p dans chaque cellule et cela en fonction de 2 date sa fonctionne tres bien toutefois j'aimerai faire exactement la meme chose mais en vba a partir d un clic sur un bouton. c est possible? personnellement j ai tenté mais je n y arrive pas. pouvez vous m'aider???? merci d avance.je dépose le fichier j aimerai vraiment transformer cette formule en vba ..... merciiii
 
Ce fil a été résolu! Aller à la solution…

Fichiers joints

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
En PJ un essai avec une fonction :
VB:
Function NbP(PlageDate As Range, PlageP As Range, DateDébut As Date, DateFin As Date)
    NbP = Application.CountIfs(PlageP, "p", PlageDate, ">=" & CLng(DateDébut), PlageDate, "<=" & CLng(DateFin))
End Function
Qui peut évidemment être utilisée en macro comme dans l'exemple.
 
Ce message a été identifié comme étant une solution!

Fichiers joints

racalbuto

XLDnaute Nouveau
Bonsoir,
En PJ un essai avec une fonction :
VB:
Function NbP(PlageDate As Range, PlageP As Range, DateDébut As Date, DateFin As Date)
    NbP = Application.CountIfs(PlageP, "p", PlageDate, ">=" & CLng(DateDébut), PlageDate, "<=" & CLng(DateFin))
End Function
Qui peut évidemment être utilisée en macro comme dans l'exemple.

un grand merci a toi trop cool
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Effectivement c'était moins simple.
En PJ un ex avec :
VB:
Function NbP(CellD, CellF, DateDébut As Date, DateFin As Date)
    Application.Volatile
    LigD = CellD.Row: ColD = CellD.Column
    LigF = CellF.Row: ColF = CellF.Column
    NbP = 0
    For i = LigD + 1 To LigF
        NbP = NbP + Application.CountIfs(Range(Cells(i, ColD), Cells(i, ColF)), "p", _
        Range(Cells(LigD, ColD), Cells(LigD, ColF)), ">=" & CLng(DateDébut), _
        Range(Cells(LigD, ColD), Cells(LigD, ColF)), "<=" & CLng(DateFin))
    Next i
End Function
Par contre la syntaxe a changé. Voir dans le fichier.
( La ligne 25 ne sert qu'à la vérif )

Je pense qu'il y a plus simple mais j'ai buté sur la syntaxe du Sommeprod.
 
Ce message a été identifié comme étant une solution!

Fichiers joints

racalbuto

XLDnaute Nouveau
Salut,
holala je n'aurai jamais trouvé. vraiment merci beaucoup.. je vais me pencher sur le code pour bien comprendre.. encore merci
 

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir,
Le même avec les commentaires qui manquaient un peu. :)
VB:
Function NbP(CellD, CellF, DateDébut As Date, DateFin As Date)
    ' On refera le calcul à chaque recalcul de la feuille
    Application.Volatile
    ' On extrait ligne et colonne de la première cellule du tableau
    LigD = CellD.Row: ColD = CellD.Column
    ' On extrait ligne et colonne de la dernière cellule du tableau
    LigF = CellF.Row: ColF = CellF.Column
    ' Nbp sera le nombre de "p" trouvés. On l'initialise à 0.
    NbP = 0
    ' Pour toutes les lignes du tableau
    For i = LigD + 1 To LigF
        ' On compte les "p" si la date en ligne LigD est compris entre les dates DateDébut et DateFin
        NbP = NbP + Application.CountIfs(Range(Cells(i, ColD), Cells(i, ColF)), "p", _
        Range(Cells(LigD, ColD), Cells(LigD, ColF)), ">=" & CLng(DateDébut), _
        Range(Cells(LigD, ColD), Cells(LigD, ColF)), "<=" & CLng(DateFin))
    Next i
End Function
 
Ce message a été identifié comme étant une solution!

racalbuto

XLDnaute Nouveau
Bonjour at tous
j aimerai votre aide svp merci...
j ai une sub qui me place les jours et dates du mois de janvier et j aimerai une boucle qui me trouve tous les lundi et remonte une ligne avec offset -1 pour me placer le numéro de la semaine puis qu' elle passe à la sheets février et ainsi de suite. merci d'avance .....
 

Fichiers joints

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas