Si vrai exécute une fonction

Résolu
Defcon -  
 Defcon -
Bonjour,

Je cherche un moyen d'écrire une formule qui dirait :
SI A1>0, ALORS "Inscris la valeur de la date du jour".

Je demande la valeur de la date du jour, car je ne veux qu'elle change le lendemain.

3 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Ou avec un code VBA à coller dans un module (clic droit sur l'onglet de feuille/Visualiser le code/Insertion/Module) et déclencher avec un bouton, ou directement dans les propriétés d'un contrôle ActiveX
    On commence par définir les variables pour limiter la plage
    Ex. "Lig" (Dim Lig) pour définir la zone de bouclage "For" de la ligne à la ligne, ici de la ligne 2 à la ligne 60.
    La variable Col (Dim Col) pour limiter la macro à la colonne ici colonne A.
    Ce qui donne une plage A2:A60

    cette ligne conditionnelle si cellules lignes/colonnes >0 alors sur la cellule ligne/colonne2 =Date (colonne(2 est colonne définie par la variable Col qui est la A +1 cette dernière est neutralisé par l'apostrophe '

    'If Cells(i, Col) > 0 Then Cells(i, 2) = Date

    Pour éviter que la date soit changé par la macro j'ai rajouté une condition

    And cellule ligne/colonne A+1 ="" (et ligne/colonne B = ""
    If Cells(Lig, Col) > 0 And Cells(Lig, 2) = "" Then Cells(Lig, 2) = Date

    Sub test()
    Dim Lig As Long
    Dim Col As String
    Col = "A"
    For Lig = 2 To 60
    'If Cells(i, Col) > 0 Then Cells(i, 2) = Date
    If Cells(Lig, Col) > 0 And Cells(Lig, 2) = "" Then Cells(Lig, 2) = Date
    Next Lig
    End Sub

    Placé dans les propriétés d'un bouton créé avec la boite d'outils contrôle ça donne

    Private Sub CommandButton1_Click()
    Dim Lig As Long
    Dim Col As String
    Col = "A"
    For Lig = 2 To 60
    If Cells(Lig, Col) > 0 And Cells(Lig, 2) = "" Then Cells(Lig, 2) = Date
    Next Lig
    End Sub

    Ou pour automatiser la saisie de la date dès qu'une valeur est saisie dans la plage A2:A60
    Dans les propriétés de la feuille concernée (clic droit sur l'onglet de feuille/Visualiser le code cller ce code dans la partie blanche

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim Lig As Long
    If Not Intersect([A:A], Target) Is Nothing Then
    For i = 2 To 60
    If Target > 0 And Target.Offset(0, 1) = "" Then Target.Offset(0, 1) = Date
    Next i
    End If
    End Sub

    1
    1. Defcon
       
      Merci pour tout
      0
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    =si(A1>0;AUJOURDHUI();"")

    Et tu formates la cellule au format date
    0
    1. Defcon
       
      Oui, je sais pour cela. Cependant, lorsque je vais ouvrir le fichier le lendemain, la date sera celle du lendemain.
      0
  3. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Pourquoi ne pas faire simple, clic dans la cellule à renseigner et clic sur la touche Ctrl et la touche point virgule (Ctrl et ;)
    0