Si vrai exécute une fonction

Résolu/Fermé
Defcon - 12 nov. 2010 à 16:27
 Defcon - 13 nov. 2010 à 03:35
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

Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
12 nov. 2010 à 22:38
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
Merci pour tout
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
12 nov. 2010 à 18:23
Salut,


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

Et tu formates la cellule au format date
0
Oui, je sais pour cela. Cependant, lorsque je vais ouvrir le fichier le lendemain, la date sera celle du lendemain.
0
Mike-31 Messages postés 18346 Date d'inscription dimanche 17 février 2008 Statut Contributeur Dernière intervention 13 novembre 2024 5 104
12 nov. 2010 à 18:53
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