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 :

Automatisation de la mise à jour de date


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Femme Profil pro
    Développeur produit
    Inscrit en
    Mai 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur produit
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2018
    Messages : 5
    Par défaut Automatisation de la mise à jour de date
    Bonjour à toutes et à tous,

    Voici mon problème : j'ai trouvé il y a quelques semaines une macro permettant de mettre à jour automatiquement une date à la date du jour dans une cellule dès lors qu'une modification était faite sur la ligne de cette cellule.
    Toutefois, je me suis rendue compte que cela ne fonctionnait que ligne par ligne, et que la date ne se mettait à jour que pour la première ligne lors de modification en masse. Par exemple lorsqu'on fait un copié/collé sur plusieurs lignes, il n'y a que la date de la première ligne (celle selectionnée pour le collé) qui se met à jour.
    Cela me pose un problème car j'aimerais que tout soit mis à jour, et la macro a fait buguer un fichier important dans lequel on change régulièrement plusieurs cellules par colonnes, à travers du copié/collé ou bien lorsqu'on tire.

    Voici la macro en question, avec 5 la ligne à partir de laquelle la mise à jour se fait, et O la colonne dans laquelle la mise à jour est inscrite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Worksheet_Change(ByVal Target As Range)
        If Target.Row > 5 Then Cells(Target.Row, "O") = Date
    End Sub
    Je voudrais spécifier quelque part que cela doit être fait pour chaque ligne dans la selection (enfin je crois que c'est ce qui résoudrait mon problème), mais je suis extrêmement novice en VBA et ne sais pas l'écrire...

    Merci beaucoup pour votre aide,

    Getthefunk

  2. #2
    Membre éprouvé Avatar de Wololol
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 104
    Par défaut
    Bonjour,

    Voici un code qui fonctionne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row > 5 Then
        For Each Cell In Target
            Cells(Cell.Row, "O") = Date
        Next Cell
        End If
    End Sub
    Pour l'explication du pourquoi ça ne fonctionnait pas, c'est parce que ta fonction ne s'appliquer que sur la première ligne de ton Target (première ligne de ta sélection).

    Dans ce nouveau code, on fait la même chose que dans l'ancien, sauf qu'on l'applique à la ligne de chaque cellule modifiée.

    Bonne journée

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Développeur produit
    Inscrit en
    Mai 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur produit
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2018
    Messages : 5
    Par défaut
    Bonjour Wololol,

    Merci beaucoup!
    J'ai une autre question que j'ai oublié de poser : saurais-tu comment faire pour que la date ne se mette à jour que lorsque les cellules de certaines colonnes sont modifiées et pas toute la ligne?

    Merci beaucoup en tous cas!!!

    Getthefunk

  4. #4
    Membre éprouvé Avatar de Wololol
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 104
    Par défaut
    Re,

    C'est tout à fait possible, il y a de nombreuses solutions, je vais t'en proposé une, à utilisé s'il n'y a que quelque colonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Row > 5 Then
        If Target.Column = 1 Then
            For Each Cell In Target
                Cells(Cell.Row, "O") = Date
            Next Cell
        End If
    End If
    End Sub
    Dans cette exemple cela ne fonctionnera que en colonne "A", je te conseillerai cependant d'utiliser un Case si tu as plusieurs colonnes à filtrer.

    La solution que je viens de te donner n'est optimisé que pour un cas, si tu veux, tu peux me dire sur quelles colonne tu veux que ça s'applique ainsi on pourra trouver une solution mieux adapté

    Wololol

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Développeur produit
    Inscrit en
    Mai 2018
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur produit
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Mai 2018
    Messages : 5
    Par défaut
    Hello,

    Ok super! Mais en fait oui, j'aurais plusieurs colonnes à sélectionner,
    Je viens de checker ce qu'était un case, du coup est ce que l'exemple suivant fonctionnerait ? (je suis vraiment novice ahah)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Worksheet_Change(ByVal Target As Range)
    Colonne = Target.Column
    If Target.Row > 5 Then
       Select Case Colonne
           Case 1,3,5
       End Select
            For Each Cell In Target
                Cells(Cell.Row, "O") = Date
            Next Cell
        End If
    End If
    End Sub
    Merci d'avance !

  6. #6
    Membre éprouvé Avatar de Wololol
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    104
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 104
    Par défaut
    Re,

    Non, ça ne fonctionnera pas, en effet tu termine ton case avant même de faire quoi que ce soit avec :o)

    Un Case fonctionne a peut près comme un if :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Colonne = 5 Then
    'tes actions
    End If
    équivalent en Case :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Select Case Colonne
    Case 5
    'tes actions
    End Select
    Il faut donc procéder ainsi pour ton cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub Worksheet_Change(ByVal Target As Range)
    Colonne = Target.Column
    If Target.Row > 5 Then
       Select Case Colonne
           Case 1, 3, 5
            For Each Cell In Target
                Cells(Cell.Row, "O") = Date
            Next Cell
       End Select
    End If
    End Sub
    On applique bien nos actions avant de fermer le select, comme on l'aurait fait avec un End If

Discussions similaires

  1. [AC-2003] Automatiser une requete mise à jour
    Par BqiKo dans le forum Access
    Réponses: 1
    Dernier message: 30/07/2009, 16h12
  2. [Security] Mise à jour de date de login.
    Par Invité dans le forum Spring
    Réponses: 1
    Dernier message: 03/07/2009, 14h20
  3. Mise à jour de date fichier de controle
    Par atporfi dans le forum Administration
    Réponses: 3
    Dernier message: 16/12/2008, 12h21
  4. requete mise à jour format date en semaine
    Par laurent7474 dans le forum Requêtes et SQL.
    Réponses: 6
    Dernier message: 15/04/2008, 08h06
  5. Mise à jour de date sur base MySQL
    Par tristus dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 14/01/2007, 14h47

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