VBA déplacement cellule avec date

Bonjour le forum,

Dans le fichier joint, j'aimerais qu'une date dans une colonne "Entrée" se déplace dans la cellule "Sortie" avec la date du jour lorsqu'une nouvelle date du jour est entrée dans la colonne "Entrée", tout cela sur la même ligne (correspondant au nom en colonne A).

Dans le fichier joint, ce sera peut-être plus clair !

J'avais envisagé une formule plutôt que du VBA mais celle-ci sera automatiquement effacée lors d'une saisie de date, donc ça ne peut aller.

Merci d'avance pour votre précieuse aide et au temps que vous me consacrez

15forum-vba.xlsx (18.96 Ko)

Bonjour,

un essai par macro, répondant à l'exemple du classeur,à tester et adapter. La date du jour en colonne U est inscrite par double clic dans la cellule.

dans la feuille de code de la feuille EFFECTIF UEP :

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim DL As Long
DL = Range("A" & Rows.Count).End(xlUp).Row
If Not Intersect(Range("U3:U" & DL), Target) Is Nothing Then
    If IsEmpty(Target) Then
        If Not IsEmpty(Target.Offset(, -6)) Then
            Target = Date
            Target.Offset(, -6).ClearContents
            Target.Offset(, -5) = Date
        End If
    End If
End If
End Sub

A+

Merci énormément pour ce code, que j'essaie de comprendre pour le modifier.

Il faudrait qu'il soit applicable de C3 à AT32 et dans l'idéal, qu'il s'exécute soit par une saisie manuelle de la date soit par Ctrl+;

J'essaie de me mettre à la rédaction de macros mais j'ai vraiment du mal à la compréhension et pour m'aider, j'ajoute des descriptifs pour savoir ce que veut dire chaque ligne ou la compilation de plusieurs lignes...

ça fait beaucoup de demandes, je sais et libre à toi d'y répondre ou pas car je veux pas monopoliser ton temps sur mon cas

Encore merci pour tout !

Quelques éclaicissements:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean):

c'est la sub qui se déclenche au double clic sur une cellule dans la feuille.

Si tu veux absolument saisir une date ou utiliser ctrl+; il vaudra mieux utiliser

Private Sub Worksheet_Change(ByVal Target As Range) qui se déclenchera à la "sortie" d'une cellule modifiée.

DL = Range("A" & Rows.Count).End(xlUp).Row : dernière ligne "occupée" de la colonne A

exemple si je modifie U4

'teste si la cellule qu'on sélectionne est bien dans la plage définie ; ici U3:Udernière ligne
If Not Intersect(Range("U3:U" & DL), Target) Is Nothing Then   ' U4 est compris dans la plage => OK
    ' si la cellule sélectionnée est vide
    If IsEmpty(Target) Then   ' U4 est vide => OK
        ' si la cellule située sur la même ligne , 6 colonnes avant n'est pas vide
        If Not IsEmpty(Target.Offset(, -6)) Then  ' O4 est renseigné => OK
            'la cellule sélectionnée prends la date du jour
            Target = Date   'U4=date du jour
             ' la cellule 6 colonnes avant est effacée
            Target.Offset(, -6).ClearContents  'O4 est effacé
             'la cellule 5 colonnes avant la cellule selectionnée prend la date du jour
            Target.Offset(, -5) = Date  'P4 =date du jour
        End If
    End If
End If

A+

Merci beaucoup pour toutes ces précisions, c'est parfait et du très bon boulot

Rechercher des sujets similaires à "vba deplacement date"