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
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