Excel Automatiser raccourcis

Résolu/Fermé
bacardi972 Messages postés 4 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008 - 16 juil. 2008 à 12:08
bacardi972 Messages postés 4 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008 - 17 juil. 2008 à 10:01
Bonjour!

Bon, j'ai crée un worksheet permettant de suivre la gestion des stocks de mon entreprise.

J'ai donc créé des tableaux dont l'onglet porte le nom de l'objet. Ce sont toujours les mêmes tableaux du reste.

Je veux que dès qu'une cellule de la colonne B est remplie, que la colonne C indique la date (fixée)automatiquement. Idem pour les colonnes D et E qui suivent la même logique.

Cause: flux entrants et flux sortants.

J'ai écrit le code suivant pour la feuille "Coca" par exemple:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then If Not (IsEmpty(Target.Value)) Then Range("C" & Target.Row).Value = Worksheets("Coca").Cells(17, 1).Value Else Range("C" & Target.Row).ClearContents
If Target.Column = 4 Then If Not (IsEmpty(Target.Value)) Then Range("E" & Target.Row).Value = Worksheets("Coca").Cells(17, 1).Value Else Range("E" & Target.Row).ClearContents

End Sub

Ok. Vous avez vu que la formule récupère date affichée en A17.
Or, c'est pour une gestion de stock, donc je ne veux pas que la date se base sur l'heure système: je la veux fixe.

J'ai donc une case sur ma page "Général" (première page), dans laquelle j'exécute le raccourci suivant:
"Ctrl+;" puis un espace, puis "Ctrl+:" pour avoir ça "16/07/2008 12:17" en C5

Mais c'est assez lourd.

Est-ce que je peux avoir une ligne VBA qui me permette d'exécuter ces touches de raccourci automatiquement dans la case C5 au lancement de Excel?

Je vous remercie et reste à votre disposition
A voir également:

8 réponses

lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
16 juil. 2008 à 13:01
Bonjour,
Sais pas si j'ai bien compris, mettre la date et l'heure à l'ouverture du classeur ?

Private Sub Workbook_Open()
    Sheets("Général").Cells(5,3).Value = Now
End Sub
Tu dit...
A+
0
bacardi972 Messages postés 4 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
16 juil. 2008 à 14:08
Bonjour!

Merci pour votre rapidité.
La formule donnée me donne la date et l'heure du moment. Mais elle évolue avec le temps. Elle n'est pas fixée à la différence de la manip "Ctrl+;" par exemple.

C'est une information capitale dans le problème car c'est pour réaliser un historique. et j'ouvre le classeur tous les jours pour suivre la consommation des produits.

Il faut donc que quand j'ouvre mon classeur, le moment d'ouverture (date heure) soit affiché dans une cellule (C5 en particulier), mais que cette automatisation ne soit pas le résultat d'une formule =now(); =aujourdhui(); =maintenant() et j'en passe.
Ces formules impliquent en effet des données variables et volatiles. Il me faut une date fixée qui ne changera pas quand j'ouvrirai le classeur le lendemain par exemple.

C'est la dernière chose qui me manque à mon classeur.

Je reste à votre disposition!
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
16 juil. 2008 à 16:50
J'ai toujours pas compris...
Que veux-tu comme date dans cette cellule et quand doit-elle être initialisée.
Et avec quoi ?
0
bacardi972 Messages postés 4 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
16 juil. 2008 à 17:53
Re!

La formule que vous m'avez donnée = NOW me permettrait de faire ce que je veux si sa valeur ne bougeait pas.

exemple: aujourd'hui, nous sommes le 16. Avec votre formule, il affichera 16/07/08 admettons.
Demain 17, 17/07/08.

Ok.
Or, mon classeur fait intervenir des tableaux. Ce qui se passe: quand j'entre une valeur dans la colonne B, il m'affiche la date du jour de saisie dans la colonne C (sur la même ligne), sans que je n'aie rien à faire.

Or, la formule que j'ai va piocher la date du jour dans la cellule A17 de chaque feuille.
Si j'utilise le =now, les dates que j'ai entrées la veille se mettent à la date du jour.

Moi je ne veux pas qu'elles bougent. C'est pour ça que je voulais éviter de mettre une formule de type =maintenant()... à cause de leur volatilité.

Donc, ce que je demande c'est s'il est possible d'écrire en langage VBA la suite de manipulations suivante:
"Ctrl+;"(donne le jour), puis un "espace"(pour faire joli), puis "ctrl+:" (donne l'heure), et ce, à l'ouverture du Worksheet (donc les minutes ne bougeront pas). C'est donc un =maintenant() qui restera toujours fixe.

Je fais marcher le tout en le faisant manuellement en ce moment. Mais je veux automatiser ce processus dès l'ouverture du classeur.

C'est possible ? (faire une date fixe générée à chaque démarrage, dans toujours la même cellule de la même feuille).


Je reste à votre dispositon,
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
16 juil. 2008 à 18:03
Si ru veux pas que cette date soit inirialisée à chaque ouverture du classeur amis que la 1èere fois oui, alors ...
Je doit dire que malgré tes explications j'ai pas bien compris.


Private Sub Workbook_Open()
    If Sheets("Général").Cells(5,3).Value ="" then
         Sheets("Général").Cells(5,3).Value = Now
    End if
End Sub

Mais PAS COMPRIS !!!!!
0
lol

Je mets en ligne la partie du programme qui nous intéresse daccord?
Vous pourrez trifouiller par vous même et éventuellement corriger..

On fait comme ça?

P.S: il faut que je le mette sur cjoint c'est correct? je vais me débrouiller de toute façon
0

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

Posez votre question
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
16 juil. 2008 à 20:13
Il faut donc que quand j'ouvre mon classeur, le moment d'ouverture (date heure) soit affiché dans une cellule (C5 en particulier)...
et
Il me faut une date fixée qui ne changera pas quand j'ouvrirai le classeur le lendemain par exemple.

Faudrait savoir....
En fait tu veux que lorsque tu ouvres le classeur la date se mette dans une cellule, sauf si tu regardes l'écran méchamment. C'est ça ?

Autre chose, il y a, il me semble confusion :
si dans une cellule tu mets =aujourdhui() ou qcq chose comme ça à la prochaine ouverture ça se mettra à jour effectivement.
Si c'est par macro que tu utilises =now() ça ne se mettra à jour QUE SI C'EST VOULU.

eric
0
Bonsoir,

Eric: tu insinues que la machine a une conscience? Tu as pris un raccourcis en écrivant que je me contredisais.

Imaginons la situation. Tu as un tableau vide avec 2 colonnes (A et B).

Tu veux que: si tu rentres une valeur dans une cellule de la colonne A, la cellule juxtaposée en B affiche la date de saisie de la colonne A.
Il ne faut donc pas que le lendemain, toutes ces dates déjà saisies aient changé.

J'ai essayé plusieurs choses mais comme je débute, j'ai encore des lacunes.

Quelles lignes de macro tu écris dans ce cas?

Merci par avance; je reste à votre disposition.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
16 juil. 2008 à 21:44
Une question pour éclairer ma lanterne :
Pourquoi mettre la date ET l'heure si tu désires que cette valeur reste fixée à l'heure d'ouverture du fichier ?

Ton code a l'air correct même si je ne l'aurais pas écrit ainsi.
Si tu ajoutes le bout donné par lermite au post 1 ça sera complet.
Contrairement à ce que tu dis, ce n'est pas parce qu'il a utilisé now que la valeur va changer dans la cellule toutes les secondes. Il ne sera rafraichi qu'à chaque ouverture de fichier comme tu l'as demandé (c'est la différence entre une formule et du code vba que j'essayais de t'expliquer).

Teste l'ensemble et demande ensuite si il faut rajouter qcq chose ou s'il y a une erreur.

eric
0
lermite222 Messages postés 8702 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
17 juil. 2008 à 07:11
Eureka, je crois que j'ai compris
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Static AncCol As String, Col As Integer, Lig As Long
    If AncCol <> "" Then
        Col = Range(AncCol).Column
        Lig = Range(AncCol).Row
        If Cells(Lig, Col) <> éé Then
            If Col = 1 And Cells(Lig, Col + 1) = "" Then
                Cells(Lig, Col + 1) = Now
            End If
        End If
    End If
    AncCol = Target.Address
End Sub


Quand tu met une donnée dans la colonne A la date s'inscrit automatiquement danq la colonne B
et ne changera plus.
A+
0
bacardi972 Messages postés 4 Date d'inscription mercredi 16 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008
17 juil. 2008 à 10:01
Super!!!!

Merci lermite, tu me sors de mon isolement intellectuel.

Merci à toi aussi Eric!

C'est précisément ce que je voulais. Génial !
Je n'ai plus qu'à l'adapter à mes colonnes.

Merci beaucoup, je peux enfin boucler le projet..

A bientôt
0