Ajouter 1 selon la date

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 !

tofmoreau

XLDnaute Nouveau
Bonjour,

Je souhaiterais avoir de l'aide concernant un simple macro vba.
L'idée est d'ajouter 1 à une cellule suivante la date saisie dans une colonne.
Pour faire simple, la colonne a1 est remplie de date et j'aimerais que la cellule b2 soit augmentée de 1 si la date est saisie en janvier 2015, la cellule c2 soit augmentée de 1 si la date est saisie en février 2015, la cellule d2 soit augmentée de 1 si la date est saisie en mars 2015, et ainsi de suite pour tous les mois de l'année et les années suivantes.

Quelqu'un peut-il m'aider ?

J'ai déjà le code pour ajouter 1 à la cellule pour la cellule b2 par exemple
Sheets("Tableau Itelis").Range("b2").Value = Range("b2").Value + 1

Je n'arrive pas à trouver le bon code en vba pour la condition des dates saisies.

Merci de votre aide précieuse.
 
Re : Ajouter 1 selon la date

Bonjour à tous

Sûr de n'avoir rien compris !

Est ce à la saisie en colonne A que la cellule de la même ligne et de colonne correspondant au mois saisie soit augmentée de 1?
Ex : je saisie 02/02/2015 en A34 la cellule C34 doit être augmentée de 1 ?

A+ de précisions
 
Re : Ajouter 1 selon la date

Non, les lignes de la colonne A ne doivent pas correspondre aux lignes des colonnes B C D E, ...
il faudrait que suivant la date saisie dans la colonne A, un comptage s'effectue dans la cellule B2, C2, D2, E2, ...
Pour exemple, si je saisie 12/01/2015, 13/01/2015, 14/01/2015 en colonne A, il faut qu'un comptage se fasse dans la cellule B2 (celle du mois de janvier), soit 3.
Si je saisi des dates en février, le comptage doit se faire en cellule C2 (celle du mois de février).
En clair, la macro que je souhaiterais me permettrais de connaître le nombre de dossiers saisis pour chaque mois au cours d'une année.
J'espère vous avoir éclairé un peu mieux.
Merci de vos éventuelles réponses.
Tof
 
Re : Ajouter 1 selon la date

re bonjour à tous

dans le code de la feuille Feuil1, ajouter

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("A:A")) Is Nothing Then
    Target.Offset(, Month(Target.Value)) = Target.Offset(, Month(Target)) + 1
 End If
End Sub

à chaque nouvelle saisie ou modification en colonne A, sur la même ligne le mois correspondant à la date saisie sera augmenté de +1

A+
 
Re : Ajouter 1 selon la date

Re,

Cette fois ce doit-être mieux

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("A:A")) Is Nothing Then
   Cells(2, Month(Target.Value) + 1) = Cells(2, Month(Target.Value) + 1) + 1
 End If
End Sub

A+
 
Re : Ajouter 1 selon la date

Je viens de tester, cela fonctionne mais uniquement pour les dates qui concernent l'année 2015.
Le problème est que je vais avoir un souci pour les années suivantes.
De plus, si je supprime une date, ça ne diminue pas 1 le comptage, il y a t'il une solution ?
Ce fichier va être manipulé par différentes personnes qui peuvent faire des erreur de saisie malgré la mise en place d'un formulaire.
Merci de voir si vous pouvez apporter une modif.
Bon courage et encore merci.
 
Re : Ajouter 1 selon la date

Bonjour,


ou bien, en matriciel :

{=SOMME(SI(MOIS(DECALER($A$2;0;0;NBVAL($A:$A)-1;1))=COLONNE(C$1)-2;MOIS(DECALER($A$2;0;0;NBVAL($A:$A)-1;1))))/(COLONNE(C$1)-2)} (ctrl+alt+entrée) pour valider

en c1 et on tire jusqu'en decembre

la plage des dates est dynamique
 
Dernière édition:
Re : Ajouter 1 selon la date

Re bonjour à tous

cela fonctionne mais uniquement pour les dates qui concernent l'année 2015.
Non, c'est le mois saisi qui détermine la colonne à mettre à jour, l'année n'intervient pas

De plus, si je supprime une date, ça ne diminue pas 1 le comptage, il y a t'il une solution ?
Une solution :
Supprimer le code précédemment transmis et remplacer par :


Code:
Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("A:A")) Is Nothing Then
    If Target.Value = "" Then
        Cells(2, Month(Oldtargetvalue) + 1) = Cells(2, Month(Oldtargetvalue) + 1) - 1
    Else
        Cells(2, Month(Target.Value) + 1) = Cells(2, Month(Target.Value) + 1) + 1
    End If
End If
Oldtargetvalue = ""
End Sub

et

Code:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Oldtargetvalue = Target.Value
End Sub

en tête de feuille de code rajouter

Code:
Dim Oldtargetvalue

Pas sûr qu'il n'y ait pas d'interactions avec de nombreuses saisies et corrections sur la feuille.

Puisqu'il existe une UserForm, il serait peut-être moins risqué de gérer ce comptage par cette Userform?

A+
 
- 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ésolu(e)
Microsoft 365 DATEDIF
Réponses
11
Affichages
193
Réponses
4
Affichages
165
Réponses
2
Affichages
161
  • Question Question
Microsoft 365 format date
Réponses
3
Affichages
106
  • Question Question
Microsoft 365 Contrôle sur date
Réponses
8
Affichages
278
Réponses
6
Affichages
173
Retour