IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

VBA sur modification cellule (plusieurs lignes)


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut VBA sur modification cellule (plusieurs lignes)
    Bonjour,

    Pourriez-vous m'aider ?

    J'aimerais pouvoir sur plusieurs lignes (+3000) pouvoir ajouter l'heure et la date de l'encodage d'une cellule (nom), je m'explique avec un exemple:

    Les colonnes :

    NOM PRENOM DISTANCE.... TIMER

    Les lignes :
    de 5 à 3000

    Exemple :

    B C D E F
    NOM PRENOM CONTACT DISTANCE.... TIMER
    MEYS Luc 02/254 ** ** 10 25-07-2020 : 12:04
    BOUNS François 02/554 ** ** 5 25-07-2020 : 12:08
    LEGRAND Julie 02/284 ** ** 5 26-07-2020 : 12:15
    MOONS Marie 02/234 ** ** 20 26-07-2020 : 13:11
    ...

    Maintenant : si j'encode à la suite, MILOU | Marc | 02/5487 ** ** |10 | la date et l'heure du moment s'affiche ici...

    J'ai ceci comme base, mais comment jouer sur plusieurs lignes ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B5")) Is Nothing Then
    If Range("F5") = "" Then Range("F5") = Date & " - " & Time
    End If
    End Sub
    Merci d'avance

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut
    J'ai essayé ceci, mais...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B" & ActiveCell.Row)) Is Nothing Then
    If Range("F" & ActiveCell.Row) = "" Then Range("F" & ActiveCell.Row) = Date & " - " & Time
    End If
    End Sub

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut
    Je viens de tester et je remarque que la date et l'heure s'affichent non pas sur la ligne d'encodage mais sur la ligne sélectionnée juste après, donc si après l'encodage je clique sur une ligne avant et bien le TIMER se mettra avant, de même pour après...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B5:B3005")) Is Nothing Then
    Range("F" & ActiveCell.Row) = Date & " - " & Time
    End If
    End Sub

  4. #4
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    Bonjour,

    Essaies:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Option Explicit
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
      If Target.Column = 1 Then
        For Each c In Target.Columns(1).Cells
          If c.Row > 4 Then
            If c.Offset(0, 3).Value = "" And c.Value <> "" Then
              c.Offset(0, 3).Value = Date & " - " & Time
            ElseIf IsEmpty(c.Value) Then
              c.Offset(0, 3).Formula = ""
            End If
          End If
        Next c
      End If
    End Sub

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut
    J'ai trouvé ceci, il y a des améliorations, mais ce n'est toujours pas ça...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("B5:B3005")) Is Nothing Then
    Range("B1") = Range("B" & Rows.Count).End(xlUp).Row
    If Range("F" & Range("B1")) = "" Then Range("F" & Range("B1")) = Date & " - " & Time
    End If
    End Sub
    Fonctionne avec des changement de cellule vers le bas, mais pas vers le haut...

  6. #6
    Expert confirmé Avatar de Patrice740
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2007
    Messages
    2 478
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2007
    Messages : 2 478
    Par défaut
    As-tu essayé mon code ?

    Citation Envoyé par Crachover Voir le message
    J'aimerais ... pouvoir ajouter l'heure et la date de l'encodage d'une cellule (nom)....
    .....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Not Intersect(Target, Range("B5:B3005")) Is Nothing Then
    Pourquoi testes-tu l'«encodage » du prénom au lieu de celui du nom ?

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2009
    Messages
    506
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2009
    Messages : 506
    Par défaut
    Bonjour,

    Je n'avais pas vu votre message... cela fonctionne nickel ! Grand merci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim c As Range
      If Target.Column = 2 Then
        For Each c In Target.Columns(1).Cells
          If c.Row > 5 Then
            If c.Offset(0, 4).Value = "" And c.Value <> "" Then
              c.Offset(0, 4).Value = Date & " - " & Time
            ElseIf IsEmpty(c.Value) Then
              c.Offset(0, 4).Formula = ""
            End If
          End If
        Next c
      End If
      End Sub

    PS : j'aurais aimé protégé la feuille et surtout la colonne TIMER, mais si je protège cette colonne, le code ne fonctionne plus...

Discussions similaires

  1. Fusion de cellules sur une ou plusieurs lignes précédentes
    Par thomasdu40 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 23/07/2010, 18h11
  2. Modification de plusieurs lignes BD
    Par veloce35 dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 04/06/2010, 02h31
  3. [MySQL] Modification de plusieurs lignes
    Par morgan47 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 09/10/2009, 11h14
  4. [VBA-E] comment selectionner plusieurs lignes
    Par Annick.w dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/01/2007, 20h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo