Stocker une variable pendant un certain temps
Résolu/Fermé
nat1639
-
Modifié par nat1639 le 23/07/2013 à 10:41
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 23 juil. 2013 à 14:56
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 23 juil. 2013 à 14:56
A voir également:
- Stocker une variable pendant un certain temps
- Blocage agriculteur carte en temps réel - Accueil - Transports & Cartes
- Combien de temps reste une story sur facebook - Guide
- Renommer plusieurs fichiers en même temps - Guide
- 2 go internet combien de temps - Forum Opérateurs & Réseaux mobiles
4 réponses
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
Modifié par pijaku le 23/07/2013 à 11:17
Modifié par pijaku le 23/07/2013 à 11:17
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.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
23 juil. 2013 à 11:45
23 juil. 2013 à 11:45
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
23 juil. 2013 à 12:29
23 juil. 2013 à 12:29
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
23 juil. 2013 à 14:25
23 juil. 2013 à 14:25
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
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
23 juil. 2013 à 14:35
23 juil. 2013 à 14:35
et si, enfin, tu nous disais ce que tu veux exactement???
^^ 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.
pijaku
Messages postés
12263
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
4 janvier 2024
2 752
Modifié par pijaku le 23/07/2013 à 14:49
Modifié par pijaku le 23/07/2013 à 14:49
et si, enfin, tu nous disais ce que tu veux exactement???
Edit :
Transformons donc nos String en Date :
Edit :
Transformons donc nos String en Date :
If Now > CDate("22/08/2013 10:15:25") And Now < CDate("28/08/2013 11:15:23") Then Sheets("Feuil3").Range("A2") = Target