Besoin d'aide en vba pour heure

Résolu/Fermé
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 - 3 oct. 2011 à 18:31
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 - 7 oct. 2011 à 09:44
Bonjour,
Bonjour,

Je commence tout juste en VbA et là j'essaie d'afficher l'heure actuelle dans une case en fonction de la case d'à côté. ça fonctionne pour une mais je n'arrive pas à copier pour les suivantes, ex je voudrais la même chose avec d11 et c11 ...

Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Set vtarget = Intersect(Target, Columns(4))
If Not (vtarget Is Nothing) Then
For Each varea In vtarget
For Each vcell In varea
If Not (IsEmpty(vcell.Value)) Then
If vcell.Row > 9 Then
Range("C" & vcell.Row).Value = Time
End If
Else
Range("C" & vcell.Row).ClearContents
End If
Next
Next
End If
Application.EnableEvents = True
End Sub

merci à l'avance



6 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 312
4 oct. 2011 à 07:19
Bonjour

Je comprends mal ce que tu veux faire

ta macro (est ce de toi?) ne peut fonctionner qu'avec la cellule que tu changes dans la colonne C....
Set vtarget = Intersect(Target, Columns(4)) ne représente qu'une seule cellule et
les lignes suivantes
For Each varea In vtarget
For Each vcell In varea sont donc inutiles

est ce que tu voudrais agir sur une zone de la colonne c (par ex D10:D11)? dans ce cas cette zone est elle toujours la m^me (sinon il ne faut pas opter pour l'événement worksheets_change) ?

ou bien...?

Dis toi bien que nous n'avons que ce que tu écris pour essayer de t'aider
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
4 oct. 2011 à 13:12
Bonjour, Bonjour Michel,
Peut-être que c'est ça qui veux faire ?
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, [D9:D30]) Is Nothing Then
        Application.EnableEvents = False
        Target.Offset(0, -1) = Time
        Application.EnableEvents = True
    End If
End Sub

Quand tu change une cellule de la colonne 4 (D) entre les lignes 9 et 30
La date s'inscrit dans la colonne C de la même ligne.
A+

0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
Modifié par lanetmel le 4/10/2011 à 23:38
Bonjour

Premièrement un immense merci à vous qui essayer de m'aider! J'apprécie énormément. Alors je vais essayer d'être plus claire. Je veux faire un fichier pour mes opérateurs de séchoir à bois. Chaque jour, ils doivent entrer des données
Date / heure/ température/ ....
colonne A B C
J'ai déjà mis que lorsque b>0 la date s'inscrit dans la colonne A, ceci fonctionne (je l'ai pas fait en vba

Mais là je voudrais que l'heure s'inscrive dans la colonne b lorsqu'ils entre des info dans c. C'est à tous les jours durant une période qui varie entre 15 et 45 jours. Je veux que l'heure inscrite reste la même , je ne veux pas que'elle change à la fermeture ou ré-ouverture du document.

encore merci à l'avance
Mélanie
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 312
5 oct. 2011 à 08:56
Bonjour,

apparemment.... As tu testé la macro de Lermite?

et que fait on avec la date ?

ps: bonjour Lermite, il y avait bien longtemps que l'on s'était croisé, ça va ?
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 754
5 oct. 2011 à 08:58
Bonjour,
Est ce que tu lis les réponses des personnes qui tentent de t'aider?
Essayes tu leurs solutions?

Tout est dit dans la réponse de Lermitte, et les questions posées par Michel (est ce que tu voudrais agir sur une zone de la colonne c (par ex D10:D11)? dans ce cas cette zone est elle toujours la m^me (sinon il ne faut pas opter pour l'événement worksheets_change) ? ou bien...?) sont toujours d'actualité...
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
5 oct. 2011 à 13:18
Bonjour à vous deux,

J'ai essayé la réponse de Lermite mais il ne se passe rien. J'ai inscris la macro dans la feuille ou je veux que cela se passe... La date il n'y a rien à faire avec..la date du jour suivant s'inscrit automatiquement lorsque la date est entrée ça sa fonctionne..

Ex de ce que je veux que ça donne
a b c
1 5 octobre 2011 7:14 120
2 6 octobre 20111 8:22 150
3 7 octobre 2011 8:54 130

donc quand on entre la donnée dans c1 je veux que b1 égale à l'heure qu'il est lors de l'entrée de la donnée. la date du jour se met automatiquement.
Ensuite on ferme le fichier jusqu'au lendemain.
le lendemain quand on entre la donnée dans c2 je veux que b2 égale à l'heure
et je ne veux pas que les données change à l'ouverture ou la fermeture de fichier

encore merci à l'avance
Mélanie
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
5 oct. 2011 à 13:35
Encore moi,

en fait, ceci fonctionne
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
Set vtarget = Intersect(Target, Columns(4))
If Not (vtarget Is Nothing) Then
For Each varea In vtarget
For Each vcell In varea
If Not (IsEmpty(vcell.Value)) Then
If vcell.Row > 9 Then
Range("C" & vcell.Row).Value = Time
End If
Else
Range("C" & vcell.Row).ClearContents
End If
Next
Next
End If
Application.EnableEvents = True
End Sub
jusqu'à temps que j'active ma macro effacer tout. à ce moment on affiche ce message d'erreur : impossible de modifier une cellule fusionnée et ça me renvoie à ma macro ci-haut et cette ligne :
Range("C" & vcell.Row).Value = Time
est soulignée en jaune et à partir de ce moment ça ne fonctionne plus?
Quelqu'un sait pourquoi?
merci
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 312
5 oct. 2011 à 13:44
Désolé, mais cette macro ne répond pas à tes éclaircissements
Les cellules fusionnées sont à éviter au maximum
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
5 oct. 2011 à 14:36
Bonjour Michel

voici mon fichier, cela t'aide t-il plus?

https://www.cjoint.com/?3JfoD7LpSXC
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 191
Modifié par lermite222 le 7/10/2011 à 10:14
Re tous, (Oui, ça va très bien, merci)
J'ai tester le code précédant sur ton classeur et je ne vois pas ce qui cloche ??
L'heure s'inscrit bien dans la colonne C quand tu modifie une cellule colonne D ligne Paire. (10..12..14..etc)
A+
EDIT : Pour ce qui est d'effacer une plage avec cellules fusionnées ( en voyant ton classeur j'admet que c'est indispensable à moins de tout changer) Voir cette astuce
Edit 2 : Ce que tu "raconte" dans tes explications ne correspond pas du tout à ton classeur.
La donnée doit s'inscrire en colonne D et l'heure en colonne C ( et pas b/c comme tu dis)
Suivant ta 2ém explication, il semblerait que tu veuille mettre ta date en colonne B quand ont met une donnée en colonne A et que l'ont AJOUTE l'heure à la date quand ont met une donnée en colonne D ????
Tout ça n'est pas clair du tout.

Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
0