Lancer automatiquement une macro Excel

Résolu
Mistral_13 Messages postés 17 Statut Membre -  
Mistral_13 Messages postés 17 Statut Membre -
Bonjour,

Dans une feuille Excel la date du jour s'affiche automatiquement dans la cellule "A1".

Je souhaiterais que si je saisie une valeur alphanumérique dans la cellule "B2", la cellule "A2" prenne la valeur de la date du jour de "A1".

J'ai créé une macro qui copie la valeur de "A1" dans la cellule "A2" mais comment faire pour lancer cette macro automatiquement dès que "B2" ne sera plus vide.

Merci pour votre aide.

Mistral-13
Configuration: Windows XP Pro
Internet Explorer 7.0

2 réponses

  1. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Pour obtenir la date du jour en colonne A lorsque tu saisis la colonne B en non numérique tu peux utiliser une macro événementielle :
    Private Sub Worksheet_Change(ByVal sel As Range)
    If sel.Column = 2 And sel.Count = 1 Then
        If sel.Value <> "" And Not IsNumeric(sel.Value) Then
            sel.Offset(0, -1).Value = Date
        End If
    End If
    End Sub
    

    0
    1. Mistral_13 Messages postés 17 Statut Membre
       
      Bonjour,

      Un grand merci à toi Gbinforme c'est exactement ce que je souhaitais.
      J'ai modifié ton code non seulement pour l'adapter à ma feuille mais aussi pour effacer la date en cas d'effacement de la cellule située à droite de la date.
      N'étant qu'un débutant en VBA Excel peux tu me donner ton avis sur ma façon de faire. Voici ce que j'ai fait :

      Private Sub Worksheet_Change(ByVal sel As Range)
      If sel.Column = 14 And sel.Count = 1 Then
      If sel.Value <> "" And Not IsNumeric(sel.Value) Then
      sel.Offset(0, -1).Value = Date
      End If
      End If
      If sel.Column = 14 And sel.Count = 1 Then
      If sel.Value = "" Then
      sel.Offset(0, -1).Value = ""
      End If
      End If
      End Sub

      D'avance merci.
      Mistral 13
      0
  2. gbinforme Messages postés 14930 Date d'inscription   Statut Contributeur Dernière intervention   4 744
     
    bonjour

    Tu peux simplifier ainsi
    Private Sub Worksheet_Change(ByVal sel As Range)
    If sel.Column = 14 And sel.Count = 1 Then
        If sel.Value <> "" And Not IsNumeric(sel.Value) Then
            sel.Offset(0, -1).Value = Date
        Else
            sel.Offset(0, -1).Value = ""
        End If
    End If
    End Sub

    Moins il y a de code et plus c'est efficace et facile à maintenir.
    0
    1. Mistral_13 Messages postés 17 Statut Membre
       
      Bonjour,

      C'est super! Ca marche super bien et c'est exactement ce que je cherchais.
      Un grand merci à toi pour cette solution.
      0