Fonction maintenant en fonction d'autres cellules

narkoleptik

XLDnaute Junior
Salut

J'ai une question :
Je souhaite afficher dans une cellule B par exemple la date et l'heure en fonction de la cellule A.

Je m'explique :
La cellule A doint être checkée avec un "x" et je veux savoir la date et l'heure à laquelle elle a été remplie.

J'ai essayé la formule suivante :
SI(A="x";MAINTENANT();"")

Ca fonctionne mais quand le fais la même opération sur la cellule D qui doit être replie avec date/heure en fonction de la C, alors la B remet la date et l'heure de la D.

En fait, je souhaite afficher date et heure mais de manière figée. C'est un tableau de plusieurs centaines de cellules.

Si je me fais mal comprendre, dites le moi, je vous enverrai un exemple.

Slt
 

vgendron

XLDnaute Barbatruc
Re : Fonction maintenant en fonction d'autres cellules

Bonjour
la fonction Maintenant() est recalculé à chaque fois que Excel fait un nouvea calcul, et comme le temps n'est pas figé. il se met à jour

tu peux contourner le pb en écrivant ce bout de code dans l'évènement de la feuil1

Alt+F11 pour ouvrir l'éditeru VBA
clic droit sur la feuil1 du projet du nom de ton fichier
puis copie colle ce code
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 1 and target="x" Then Target.Offset(0, 1) = Time
End Sub

ici. dès qu'une cellule de la 1ere colonne (colonne A) change et qu'elle contient "x" , la date est mise dans la colonne B
 

narkoleptik

XLDnaute Junior
Re : Fonction maintenant en fonction d'autres cellules

Super, ça a l'air de fonctionner.
Par contre, pour l'adapter à mon fichier, il faut que je modifie un peu.
En fait, je dois vérifier sir les cellules des colonnes 7 et 8 sont vides. Si elles sont non vides, alors il faut inscrire la date et l'heure dans les cellules de la colonne 12.
Du coup, comme je ne maitrise pas VBA, je comprends bien la logique du début de ta forumle, mais pas la fin.
 

vgendron

XLDnaute Barbatruc
Re : Fonction maintenant en fonction d'autres cellules

Il faudrait que tu postes ton fichier exemple pour qu'on y voit plus clair
pour explication
Target: c'est la cellule sur laquelle tu as modifiée et qui a provoqué l'appel à l'évènement de la feuille Worksheet_Change
target.column, c'est la colonne de la cellule modifiée
target="x"; on teste le contenu de la cellule

Code:
If Target.Column = 1 and target="x" Then Target.Offset(0, 1) = Time

en français ca donne
si la colonne de la cellule est 1 (colonne A) ET contenu cellule="x" ALORS, la cellule d'a coté (décalage de 0 ligne, 1 colonne) prend l'heure

pour la suite. j'ai ma petite idée de ton besoin, mais je préfère voir ton fichier pour en etre sur ;-)
 

narkoleptik

XLDnaute Junior
Re : Fonction maintenant en fonction d'autres cellules

voilà le fichier exemple
J'ai bien compris la logique mais du coup, je rajoute des contraintes!
 

Pièces jointes

  • exmpl.xlsm
    11 KB · Affichages: 36
  • exmpl.xlsm
    11 KB · Affichages: 38
  • exmpl.xlsm
    11 KB · Affichages: 40

vgendron

XLDnaute Barbatruc
Re : Fonction maintenant en fonction d'autres cellules

Hello,

ci dessous le code à placer

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'si modif de la colonne G

If Target.Column = 7 Then

    If (Target = "x" Or Target = "X") And (Target.Offset(0, 1) = "a" Or Target.Offset(0, 1) = "A" Or Target.Offset(0, 1) = "r" Or Target.Offset(0, 1) = "R" Or Target.Offset(0, 1) = "p" Or Target.Offset(0, 1) = "P") Then
        Target.Offset(0, 6) = Time
    End If
'si modif de la colonne H
ElseIf Target.Column = 8 Then
    If (Target.Offset(0, -1) = "x" Or Target.Offset(0, -1) = "X") And (Target = "a" Or Target = "A" Or Target = "r" Or Target = "R" Or Target = "p" Or Target = "P") Then
        Target.Offset(0, 5) = Time
    End If

End If


End Sub

il y a surement plus simple et plus court
exemple; faire un tableau contenant la liste des valeurs acceptées,
utiliser un upcase pour gerer minuscule et majuscule
éviter de faire quasiment le meme test en fonction de si on modifie la colonne G ou H
 

vgendron

XLDnaute Barbatruc
Re : Fonction maintenant en fonction d'autres cellules

voila déjà plus court avec le Ucase

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'si modif de la colonne G

If Target.Column = 7 Then
    If UCase(Target) = "X" And (UCase(Target.Offset(0, 1)) = "A" Or UCase(Target.Offset(0, 1)) = "R" Or UCase(Target.Offset(0, 1)) = "P") Then
        Target.Offset(0, 6) = Time
    End If
'si modif de la colonne H
ElseIf Target.Column = 8 Then
    If (UCase(Target.Offset(0, -1)) = "X") And (UCase(Target) = "A" Or UCase(Target) = "R" Or UCase(Target) = "P") Then
        Target.Offset(0, 5) = Time
    End If
End If

End Sub
 

vgendron

XLDnaute Barbatruc
Re : Fonction maintenant en fonction d'autres cellules

ha??
bizarre. chez moi ca marche bien. bon. sauf que je m'a gourré, l'heure se mettait en colonne M au lieu de L
donc modif
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'si modif de la colonne G

If Target.Column = 7 Then
    If UCase(Target) = "X" And (UCase(Target.Offset(0, 1)) = "A" Or UCase(Target.Offset(0, 1)) = "R" Or UCase(Target.Offset(0, 1)) = "P") Then
        Target.Offset(0, 5) = Time
    End If
'si modif de la colonne H
ElseIf Target.Column = 8 Then
    If (UCase(Target.Offset(0, -1)) = "X") And (UCase(Target) = "A" Or UCase(Target) = "R" Or UCase(Target) = "P") Then
        Target.Offset(0, 4) = Time
    End If
End If

End Sub
avec le fichier en PJ pour une fois
 

Pièces jointes

  • exmpl.xlsm
    17.4 KB · Affichages: 41
  • exmpl.xlsm
    17.4 KB · Affichages: 42
  • exmpl.xlsm
    17.4 KB · Affichages: 39

narkoleptik

XLDnaute Junior
Re : Fonction maintenant en fonction d'autres cellules

Bon j'ai trouvé ce que je voulais :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
'si modif de la colonne G

If Target.Column = 7 Then
    If UCase(Target) = "X" Then
        Target.Offset(0, 6) = Time
    End If
'si modif de la colonne H
ElseIf Target.Column = 8 Then
    If (UCase(Target) = "A") Or (UCase(Target) = "P" Or UCase(Target) = "R") Then
        Target.Offset(0, 5) = Time
    End If
End If

End Sub

Dernière modif souhaitée : Avoir la date du jour où on check les colonnes G et H sur le même principe que l'heure mais en colonne-1 par rapport à l'heure.
 

Discussions similaires

Réponses
2
Affichages
160

Statistiques des forums

Discussions
312 332
Messages
2 087 364
Membres
103 528
dernier inscrit
maro