XL 2016 Date de remplissage d'une cellule dans la colonne à côté

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

masrino

XLDnaute Nouveau
Bonjour à tous,

Alors je suis un réel débutant en VBA donc pas de moquerie s'il vous plaît.

Je souhaite afficher automatiquement la date de remplissage d'une cellule dans la colonne d'à côté et pour cela j'utilise :


VB:
 Private Sub Worksheet_Change(ByVal Target As Range)

    Dim h, iSct As Range
    Set iSct = Intersect(Target, Range("D:D"))
    If iSct Is Nothing Then Exit Sub
    Application.EnableEvents = False
    For Each h In iSct.Cells
    If IsEmpty(h) Then
    h.Offset(0, 1) = ""
    Else
    h.Offset(0, 1) = Format(Now, "mm/dd/yy")
    End If
    Next
    Application.EnableEvents = True
    
End Sub

C'est un copié-collé trouvé sur le forum d'ailleurs donc je n'ai pas tout compris (par exemple à quoi correspond iSct...)
Tout fonctionne à merveille mais ma question est la suivante :

Je souhaite faire la même chose quelques colonnes plus loin (date qui dépendra du remplissage d'une cellule différente) sur la même feuille, que dois-je rajouter ?

C'est à ce moment là qu'il ne faut pas se moquer de moi 🙄
J'ai essayé un copié collé en modifiant la variable mais ça ne doit pas être suffisant ou bien il y a autre chose à faire

Je vous remercie grandement d'avance.

Cordialement.

Marc
 
Bonjour,

La seule chose que je peux te dire, c'est que le iSect est une variable de type Range, et qu'elle contient l'ensemble des cellules communes à deux plages : Target et D : D.

D : D est la colonne D.
Target est l'ensemble des cellules modifiées par l'utilisateur.
 
Bonjour,
Personne ne se moque ici. Ceux qui savent aident ceux qui ne savent pas.
Dans ce code, il suffit de lister les cellules, les colonnes séparées par "," où ça doit se faire dans la constante ListeDesPlages.

Si tu as 3 colonnes par exemple les colonnes C, E et K:
Private Const ListeDesPlages = "C:C,E:E,K:K"

VB:
Private Const ListeDesPlages = "A1,B6:B8,D:D,F4"

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    Dim Cellule As Range
    Dim TabRanges() As String

    'Récupère la liste des plages
    TabRanges = Split(ListeDesPlages, ",")
    
    'Inhibe ce traitement récursif
    Application.EnableEvents = False

    'Parcours des plage à traiter
    For i = 0 To UBound(TabRanges)
        If Not Intersect(Target, Me.Range(TabRanges(i))) Is Nothing Then
            For Each Cellule In Intersect(Target, Me.Range(TabRanges(i))).Cells
                Cellule.Offset(0, 1).Value = Format(Now, "dd/mm/yy")
            Next Cellule
        End If
    Next i
    
    'Désinhibe ce traitement récursif
    Application.EnableEvents = True
End Sub
 
Dernière édition:
Bonjour,

La seule chose que je peux te dire, c'est que le iSect est une variable de type Range, et qu'elle contient l'ensemble des cellules communes à deux plages : Target et D : D.

D : D est la colonne D.
Target est l'ensemble des cellules modifiées par l'utilisateur.

Merci à toi Marcel32, c'est toujours bon à savoir 🙂

Personne ne se moque ici. Ceux qui savent aident ceux qui ne savent pas.
Dans ce code, il suffit de lister les cellules, les colonnes séparées par "," où ça doit se faire dans la constante ListeDesPlages.

Un grand merci pour ton aide, tout marche nickel !

J'ai même trouvé le moyen d'adapter mon code d'origine grâce à toi !

A bientôt peut-être pour de nouvelles questions. 😉

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

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
Réponses
3
Affichages
223
Retour