Stocker une variable pendant un certain temps
Résolu
nat1639
-
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 12263 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je ne parvient pas à trouver ce que je cherche, je voudrai qu'une cellule attribue sa valeur à une autre cellule pendant un certain temps et lorsque je sort de ce créneau, que cette cellule garde la dernière valeur.
Par exemple sur une journée (le lundi).
La cellule A1 change de valeur au cour de la journée, ce qui change la valeur de A2 associée à A1 mais lorsque je change de jours et que l'ont passe à mardi, je voudrai que A2 ce fige pour garder la dernière valeur stocker.
J'espère que vous comprendrez ce que je veux dire.
Je ne pense pas qu'un simple if avec un créneau de deux dates puisse suffire.
Merci pour votre aide.
Je ne parvient pas à trouver ce que je cherche, je voudrai qu'une cellule attribue sa valeur à une autre cellule pendant un certain temps et lorsque je sort de ce créneau, que cette cellule garde la dernière valeur.
Par exemple sur une journée (le lundi).
La cellule A1 change de valeur au cour de la journée, ce qui change la valeur de A2 associée à A1 mais lorsque je change de jours et que l'ont passe à mardi, je voudrai que A2 ce fige pour garder la dernière valeur stocker.
J'espère que vous comprendrez ce que je veux dire.
Je ne pense pas qu'un simple if avec un créneau de deux dates puisse suffire.
Merci pour votre aide.
A voir également:
- Stocker une variable pendant un certain temps
- Renommer plusieurs fichiers en même temps - Guide
- Combien de temps reste une story sur facebook - Guide
- Temps pour soi iphone - Guide
- Mode Concentration sur iPhone : pour ne pas être dérangé - Guide
- Ss06 snapchat combien de temps - Forum Snapchat
4 réponses
Bonjour,
Avec une macro événementielle c'est possible.
Je t'ai fait plusieurs cas, à toi de choisir et supprimer les lignes qui ne t'intéressent pas.
Le code :
Pour appliquer ce code : clic droit sur l'onglet de la feuille concernée / Visualiser le code, copier-coller le code donné + haut dans la fenêtre VBA Editor, fermer cette fenêtre pour retourner sur la feuille et changer la valeur de A1... le bon jour à la bonne heure!
Cordialement,
Franck P
Avec une macro événementielle c'est possible.
Je t'ai fait plusieurs cas, à toi de choisir et supprimer les lignes qui ne t'intéressent pas.
Le code :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub 'Ici Target = A1 Application.EnableEvents = False 'Change le contenu de la cellule A2 uniquement le 23 juillet 2013 : If Date = "23/07/2013" Then Range("A2") = Target 'Change A2 le mardi seulement : If Weekday(Date, vbTuesday) = 1 Then Range("A2") = Target 'Change uniquement le 23 juillet 2013 entre 10h15m25s et 11h15m23s : If Now > "23/07/2013 10:15:25" And Now < "23/07/2013 11:15:23" Then Range("A2") = Target Application.EnableEvents = True End Sub
Pour appliquer ce code : clic droit sur l'onglet de la feuille concernée / Visualiser le code, copier-coller le code donné + haut dans la fenêtre VBA Editor, fermer cette fenêtre pour retourner sur la feuille et changer la valeur de A1... le bon jour à la bonne heure!
Cordialement,
Franck P
merci pour ta rapidité. Le troisième cas est exactement ce que je cherchais par contre ça ne marche pas. Les premières lignes avant les trois cas correspondes à quoi?
J'ai déjà fait quelques macros mais seulement des petites bidouilles.
J'ai déjà fait quelques macros mais seulement des petites bidouilles.
Le 3ème est celui avec les horaires c'est bien ce que tu veux??
Les premières lignes avec les trois cas correspondes à quoi? je l'ai indiqué en commentaire dans la macro
Le premier test If : If Target.Address <> "$A$1" Then Exit Sub n'exécute pas la procédure si tu changes une autre cellule que A1. C'est ta demande. En fait, lors d'un changement dans la cellule A1, la macro vérifie les conditions et si elles sont remplies stocke A1 dans A2.
Les conditions données sont les suivantes :
Si on est le 23 juillet 2013 :
Si on est mardi :
Si il est entre 10h15 et 11h15 le 23 juillet :
Les premières lignes avec les trois cas correspondes à quoi? je l'ai indiqué en commentaire dans la macro
Le premier test If : If Target.Address <> "$A$1" Then Exit Sub n'exécute pas la procédure si tu changes une autre cellule que A1. C'est ta demande. En fait, lors d'un changement dans la cellule A1, la macro vérifie les conditions et si elles sont remplies stocke A1 dans A2.
Les conditions données sont les suivantes :
Si on est le 23 juillet 2013 :
If Date = "23/07/2013" Then
Si on est mardi :
If Weekday(Date, vbTuesday) = 1
Si il est entre 10h15 et 11h15 le 23 juillet :
If Now > "23/07/2013 10:15:25" And Now < "23/07/2013 11:15:23"
Oui c'est bien ça, merci pour le détail.
Voila ce que j'ai mis:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
'Ici Target = A1
Application.EnableEvents = False
If Now > "22/07/2013 10:15:25" And Now < "28/07/2013 11:15:23" Then Range("A2") = Target
Application.EnableEvents = True
End Sub
Le créneau est sur une semaine
Voila ce que j'ai mis:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
'Ici Target = A1
Application.EnableEvents = False
If Now > "22/07/2013 10:15:25" And Now < "28/07/2013 11:15:23" Then Range("A2") = Target
Application.EnableEvents = True
End Sub
Le créneau est sur une semaine
As tu bien placé ce code dans le module de la feuille concernée?
Parce que j'ai testé et ça fonctionne plutôt bien chez moi.....
Regarde ce classeur test et change la valeur en A1...
Parce que j'ai testé et ça fonctionne plutôt bien chez moi.....
Regarde ce classeur test et change la valeur en A1...
Ouai nickel ça marche! Juste si je veu que ma cible provienne d'une autre feuille c'est possible en mettant le nom de la feuille et la cellule ou ça ne concerne que la feuille comportant la macro?
En tout cas merci
edit:Par contre quand je change la date pour être en dehors du créneau la cellule prend quand même la valeur
En tout cas merci
edit:Par contre quand je change la date pour être en dehors du créneau la cellule prend quand même la valeur
Par contre quand je change la date pour être en dehors du créneau la cellule prend quand même la valeur
Non.
tu as du te tromper.
J'ai essayé :
ça ne me change pas la valeur de A2...
Pour faire varier la cellule d'une autre feuille, il suffit d'ajouter... le nom de la feuille :
Non.
tu as du te tromper.
J'ai essayé :
If Now > "24/07/2013 10:15:25" And Now < "28/07/2013 11:15:23"
ça ne me change pas la valeur de A2...
Pour faire varier la cellule d'une autre feuille, il suffit d'ajouter... le nom de la feuille :
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Address <> "$A$1" Then Exit Sub 'Ici Target = A1 Application.EnableEvents = False If Now > "22/07/2013 10:15:25" And Now < "28/07/2013 11:15:23" Then Sheets("Feuil3").Range("A2") = Target Application.EnableEvents = True End Sub
^^ désolé je pensai pouvoir l'adapter. Si on est sur le même créneau de jour mais des mois diffèrent ça fait comme si c'été vraix.
If Now > "22/08/2013" And Now < "30/08/2013"
Ce créneau marche, on est vrai pour les jour mais pas pour les mois, c'est pour cette raison que je me demandai si ça ne venais pas du format.
If Now > "22/08/2013" And Now < "30/08/2013"
Ce créneau marche, on est vrai pour les jour mais pas pour les mois, c'est pour cette raison que je me demandai si ça ne venais pas du format.