Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VBA] Fixer la date d'une cellule avec condition

    12 mars 2019 à 9:37:53

    Bonjour,
    J'ai un petit problème dans un code VBA . 

    Ce que je voulais réaliser, c'est  le remplissage automatique d'une colonne avec la date d'aujourd'hui (mais d'une manière qu'il change pas après) , avec une condition sur une autre cellule ( si le reste de la commande est >=0 , la date sera automatiquement renseigné dans la cellule E.

    je vous présente le code :

    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim i As Integer
    For i = 2 To 100
    If Cells(i, "C").Value <> "" And Cells(i, "D") >= 0 Then
    Cells(i, "E").Value = Date
    Cells(i, "E").NumberFormat = "d/m/yyyy"
    End If
    Next
    Range("E:E").EntireColumn.AutoFit
    End Sub
    

    Le problème que j'ai rencontré, c'est que le programme se bloque quand je met la conditions >=0 par ce qu'il commence à renseigner la date sur toute la colonne (même les cases vide). J'ai re-testé avec une condition du Reste = 1 et ça bloque toujours .

    Merci pour votre aide.
    Bonne journée

    • Partager sur Facebook
    • Partager sur Twitter
      12 mars 2019 à 12:21:30

      Salut,

      L'argument "Target" représente la cellule qui a été éditée, utilise ça pour savoir si c'est une cellule de la colonne C ou D et modifie la colonne E correspondante en conséquence.

      Enlève aussi la boucle For.

      • Partager sur Facebook
      • Partager sur Twitter
        12 mars 2019 à 14:57:03

        Bonjour @Stormweaker 

        Est ce que vous pouvez m'expliquer en détail les modifications que je devrai faire. Parce que je suis débutante en VBA .

        Merci beaucoup

        • Partager sur Facebook
        • Partager sur Twitter
          12 mars 2019 à 15:07:58

          Tu peux commencer par enlever la ligne avec le For (et le Next qui va avec à la fin), il exécute sur des lignes qui ne sont pas concernées par ta modification donc il ne sert à rien.

          "Target" représente la plage qui a été modifiée, ce que tu peux faire pour que la macro ne s'exécute pas n'importe où, c'est vérifier 2 trucs :

          • qu'une seule cellule a été modifiée : Target.Count = 1
          • que la cellule modifiée est en colonne "C" ou "D" : Target.Column = 3 Or Target.Column = 4

          Si ces deux conditions sont vérifées, tu peux ensuite passer au reste de ton code (vérifier les valeurs et mettre la date), avec la ligne i qui correspond à la ligne de la cellule modifiée soit Target.Row.

          Tu devrais aussi lire un tuto (ou plus) sur le VBA si ce n'est pas déjà fait : https://openclassrooms.com/fr/courses/825502-analysez-des-donnees-avec-excel/822888-premiers-pas-en-vba

          -
          Edité par Stormweaker 12 mars 2019 à 15:08:56

          • Partager sur Facebook
          • Partager sur Twitter

          [VBA] Fixer la date d'une cellule avec condition

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown