associer incrémentation avec date du jour

  • Initiateur de la discussion Initiateur de la discussion matt31
  • 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 !

matt31

XLDnaute Occasionnel
Bonjour,

grâce à quelques membres du forum, j'ai pu avoir une incrémentation d'une cellule par un double clic sur celle-ci (macro évènementielle).

Je voudrais maintenant compléter cette action en affichant dans une autre feuille la date chaque fois que j'incrémente. En gros c'est faire un historique car je ne veux pas que ce soit la dernière date qui soit affichée mais toutes les dates.

Dans l'exemple ci-joint, en feuille 1 colonne F j'ai les cellules incrémentées.
Sur la feuille 2, si la cellule a été incrémentée, je voudrais que la date apparaisse. Si elle n'a pas été incrémentée alors le dossier est validé et n'apparait pas.

Merci pour votre aide.
 

Pièces jointes

Re : associer incrémentation avec date du jour

Salut matt31 et le forum
Dans l'exemple ci-joint, en feuille 1 colonne F j'ai les cellules incrémentées.
Sur la feuille 2, si la cellule a été incrémentée, je voudrais que la date apparaisse. Si elle n'a pas été incrémentée alors le dossier est validé et n'apparait pas.
Pas sûr d'avoir tout compris
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double-clic dasns une cellule
Dim X As Long, Cel As Range
'si le double-clic a lieu ailleurs que dans la plage des cellules éditées de la colonne A, sort de la procédure
If Intersect(Range([F1], Cells(Rows.Count, "F").End(xlUp)), Target) Is Nothing Then Exit Sub
Cancel = True 'évite le mode édition lié au double-clic
Target.Value = Target.Value + 1 'incrémente la cellule

With Sheets("Feuil2")
    For Each Cel In .[B1:Z1]
        If CInt(Right(Cel, 2)) = CInt(Format(Date, "ww", vbMonday, vbFirstFourDays)) Then
            .Cells(Target.Row, Cel.Column) = .Cells(Target.Row, Cel.Column) + 1
            exit for
        End If
    Next Cel
End With
With Sheets("Feuil3")
    X = .Cells(Rows.Count, "A").End(xlUp)(2).Row
    .Cells(X, "B") = Date
    .Cells(X, "A") = Cells(Target.Row, "A")
End With

End Sub
En feuil2 : on incrémente la ligne du dossier dans la semaine donnée (calcul de la semaine 1 à contrôler)
En feuil3 : le numéro de dossier apparaît en A, la date de l'incrémentation en B.
A+
 
Re : associer incrémentation avec date du jour

je te remercie, c'est super.
Une question toutefois car je ne comprends pas tout dans la macro.

est ce que la date sera modifiée à chaque incrémentation où est ce qu'une nouvelle date apparaitra dans la cellule à côté gardant en mémoire la précédente?
 
Re : associer incrémentation avec date du jour

par rapport à ma question précédente, j'ai compris et ça marche, c'est super, c'est exactement ce que je voulais.

Une question toutefois car je ne connais pas trop le vba, comme modifier en feuille3 la cellule que l'on va chercher pour la faire apparaitre en colonne A.
Je ne comprends pas sur ta formule et n'arrive pas modifier pour adapter à mon fichier

Encore merci
 
Re : associer incrémentation avec date du jour

Salut matt31 et le forum
Code:
With Sheets("Feuil2")
'Mise en préfixe de feuil2
    For Each Cel In .[B1:Z1]
    'Pour chaque cellule de la plage [Feuil2].(B1:Z1)
        If CInt(Right(Cel, 2)) = CInt(Format(Date, "ww", vbMonday, vbFirstFourDays)) Then
        'convertir en entier (CInt) la partie de droite (Rihgt) sur 2 caractères de Cel
        'si les 2 derniers caractères donnent le même nombre que la date système (Date) définit en format (format) semaine (ww) alors
            .Cells(Target.Row, Cel.Column) = .Cells(Target.Row, Cel.Column) + 1
            'cellule (ligne de target, colonne de cel) = elle-même +1
            Exit For
            'sortir de la boucle
        End If
    Next Cel
End With
With Sheets("Feuil3")   'mise en préfixe
    X = .Cells(Rows.Count, "A").End(xlUp)(2).Row
    'X = dernière cellule non-vide de A, plus 1
    .Cells(X, "B") = Date
    'Feuil3!Bx=date système
    .Cells(X, "A") = Cells(Target.Row, "A")
    'Feuil3!Ax=feuille active, cellule A de la ligne de target
End With
J'espère que c'est plus clair.
A+
 
Re : associer incrémentation avec date du jour

merci c'est plus clair pour toute la première partie, moins pour la deuxième.
Je n'arrive pas à changer la cellule qui apparait. Je voudrais C plutôt que A mais je n'y arrive pas
 
Re : associer incrémentation avec date du jour

bonjour,

je voudrais ajouter une condition dans l'incrémentation par double clic mais je n'y arrive pas.

Je voudrais que l'on puisse incrémenter uniquement si une cellule d'une autre colonne comporte la valeur "NV". Dans le cas contraire, je voudrais qu'il ne sois pas possible d'incrémenter par un double clic.

Est-ce possible et quelqu'un peut il me dire comment faire?

Merci encore une fois pour votre aide.
 
Re : associer incrémentation avec date du jour

Salut matt31 et le forum
Petit rappel : si toi tu continues à l'exploiter, moi, je suis passé à autre chose. Et ce n'est pas toujours évident de se replonger dans un code après une semaine.
On peut tenter :
Code:
.Cells(Target.Row, Cel.Column) = .Cells(Target.Row, Cel.Column) + 1
remplacer par
Code:
if .cells(Target.Row, "X") = "NV" then .Cells(Target.Row, Cel.Column) = .Cells(Target.Row, Cel.Column) + 1
en admettant que X soit la/es lettre(s) désignation la colonne.

Ça manque de précision.
A+
 
Re : associer incrémentation avec date du jour

merci,
je me suis mal exprimé et ce n'est pas tout à fait ce que j'aurais besoin.
Ce que tu as fait fonctionnes en partie

j'essaie de mettre un exemple
Dans la feuille "séjours à coder", l'incrémentation par double clic G se fait sur la colonne N.
Tes macro interviennent sur les 2 autres feuilles.

Je souhaiterais que la macro permettant le double clic ne s'active que si la cellule en E contient "NV". Dans tous les autres cas, je ne veux pas que le double clic incrémente.

Est-ce possible et comment?

Merci encore
 

Pièces jointes

Re : associer incrémentation avec date du jour

Salut matt31 et le forum
Donc, sans tenir compte du poste précédent, ta macro commencerait comme ça :
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double-clic dans une cellule
Dim X As Long, Cel As Range
If Intersect(Range([N3], Cells(Rows.Count, "N").End(xlUp)), Target) Is Nothing Then Exit Sub
Cancel = True
If Cells(Target.Row, "E") = "NV" Then Target = Target + 1 'XXXXXXXXXXXXX
Si la cellule où on a double-cliqué appartient à la colonne N(à partir de la ligne 3) et sa ligne contien "NV" en E, on incrémente.

Juste une remarque : N peut être vide : il serait préférable de remplacer :
Code:
If Intersect(Range([N3], Cells(Rows.Count, "N").End(xlUp)), Target) Is Nothing Then Exit Sub
par
Code:
If Intersect(Range("N3:N" & Cells(Rows.Count, "A").End(xlUp).row), Target) Is Nothing Then Exit Sub
la cellule appartient à N de la ligne 3 à dernière non vide en A => si je n'ai pas de nom en A, ça ne sert à rien
A+
 
Re : associer incrémentation avec date du jour

je te remercie c'est parfait mais je suis pénible et je ne sais pas le faire...

le double clic n'incrémente plus la cellule en N mais par contre, sur les 2° et 3° feuille il agit toujours en incrémentant chaque double clic.

Comment empêcher que soit incrémenter les cellules par semaine et par date des 2 autres feuilles?

Et encore 1000 fois merci
 
Re : associer incrémentation avec date du jour

Salut matt31 et le forum
mais je suis pénible et je ne sais pas le faire...
Tout le monde se sent pénible à un moment ou un autre. Mais si tu viens sur le forum c'est pour résoudre un problème. Et si tu deviens trop pénible, même pas besoin d'envoyer paître... juste ne plus répondre 😉. Donc, si on répond, c'est pas grave.
J'espère que le code ira mieux. Attention toutefois, j'ai modifié la plage de travail : ça concerne toujours N, mais de la ligne 3 à la dernière non-vide en A.
Code:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean) 'au double-clic dans une cellule
Dim X As Long, Cel As Range
If Intersect(Range("N3:N" & Cells(Rows.Count, "A").End(xlUp).Row), Target) Is Nothing Then Exit Sub

If Cells(Target.Row, "E") = "NC" Then
    Cancel = True
    Target = Target + 1 'incrémente la cellule
    
    With Sheets("vérification relances")
        For Each Cel In .[B2:BZ2]
            If Cel = CInt(Format(Date, "ww", vbMonday, vbFirstFourDays)) Then
                .Cells(Target.Row, Cel.Column) = .Cells(Target.Row, Cel.Column) + 1
                Exit For
            End If
        Next Cel
    End With
    
    With Sheets("dates vérifications")
        X = .Cells(Rows.Count, "A").End(xlUp)(2).Row
        'X = dernière cellule non-vide de A, plus 1
        .Cells(X, "B") = Date
        .Cells(X, "A") = Cells(Target.Row, "C")
    End With
End If
End Sub
La différence, réside en un test de la valeur de la colonne E : si elle est égale à NC, ont fait les incrémentations sur les 3 feuilles, sinon, on ne fait rien.
if colonne E de cible="NC" alors
traitement
end if

J'aurais pu faire directement un "exit sub", mais si tu veux faire un autre traitement en cas de (G="NT" ou H=code, etc...) tu as une idée de ce qu'on peut faire.
A+
 
Dernière édition:
Re : associer incrémentation avec date du jour

Bonsoir

je te remercie c'est super.
Et comme tu m'encourages, je ne comprends pas un souci sur la page 2 où cela ne s'inscrémente pas lorsque je double clique sur une cellule en N de la feuille 1 avec NV en E comme demandé. Grâce à tes explications j'ai à peu prêt compris ce que tu faisais (pas sûr de tout savoir refaire seul si je devais) mais je ne vois pas l'erreur.

Je te remercie encore une fois
 

Pièces jointes

- 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
2
Affichages
861
Retour