Figer des valeurs pour historiser
Résolu
touroul
Messages postés
509
Date d'inscription
Statut
Membre
Dernière intervention
-
touroul Messages postés 509 Date d'inscription Statut Membre Dernière intervention -
touroul Messages postés 509 Date d'inscription Statut Membre Dernière intervention -
A voir également:
- Figer des valeurs pour historiser
- Figer les volets - Guide
- Excel liste de valeurs - Guide
- Quand on visite cette page, des messages sont échangés entre le navigateur et le site web. des extraits des messages échangés lors de la première connexion sont reproduits ci-dessous. des valeurs ont été remplacées par des numéros. retrouvez chacune de ces valeurs. - Forum Réseaux sociaux
- Figer une page word ✓ - Forum Bureautique
- Cette valeur ne correspond pas aux restrictions de validation des données pour cette cellule ✓ - Forum Excel
5 réponses
Bonjour,
Pas de TCD dans ton classeur donc en supposant qu'il ne change pas de taille, à mettre dans ThisWorbook :
La date mémorisée est celle de la veille de l'ouverture.
eric
Pas de TCD dans ton classeur donc en supposant qu'il ne change pas de taille, à mettre dans ThisWorbook :
Private Sub Workbook_Open() If Month([D10]) <> Month(Date) Then [D11:D14] = [D3:D6].Value [D10] = Date - 1 End If End Sub
La date mémorisée est celle de la veille de l'ouverture.
eric
Bonjour Eric
Merci bien.
En effet pas de TCD dans mon fichier Exemple, mais peu importe la source des données pour le moment.
Je ne suis pas sûr d'avoir tout compris ...
Tu utilises la cellule D10 pour revenir d'1 jour, pourquoi ?
Ou peut-être que tu voulais plutôt dire D2 ?
Ensuite : je dois refaire le même type de code pour les autres mois, c'est bien ça ?
Enfin, comment spécifier que les cellules auxquelles on fait référence se trouvent sur une autre feuille : puis-je écrire
Merci pour le SAV
Merci bien.
En effet pas de TCD dans mon fichier Exemple, mais peu importe la source des données pour le moment.
Je ne suis pas sûr d'avoir tout compris ...
Tu utilises la cellule D10 pour revenir d'1 jour, pourquoi ?
Ou peut-être que tu voulais plutôt dire D2 ?
Ensuite : je dois refaire le même type de code pour les autres mois, c'est bien ça ?
Enfin, comment spécifier que les cellules auxquelles on fait référence se trouvent sur une autre feuille : puis-je écrire
If Month(['Historique'!D10]) = Month(Date) Then?
Merci pour le SAV
Tu utilises la cellule D10 pour revenir d'1 jour, pourquoi ?
Oui, une erreur. J'avais historisé la date de la veille comme tu parlais des données du dernier jour du mois mais c'est bien la date du jour qu'il faut historiser ([D10] = Date) pour un fonctionnement correct.
Il faut stocker cette date pour savoir que c'est fait pour ce mois et ne plus écraser les données sauvegardées.
Ensuite : je dois refaire le même type de code pour les autres mois, c'est bien ça ?
Non, ce code suffit.
Enfin, comment spécifier que les cellules auxquelles on fait référence se trouvent sur une autre feuille
Et si tu veux un historique de l'historique ajoute
eric
Oui, une erreur. J'avais historisé la date de la veille comme tu parlais des données du dernier jour du mois mais c'est bien la date du jour qu'il faut historiser ([D10] = Date) pour un fonctionnement correct.
Il faut stocker cette date pour savoir que c'est fait pour ce mois et ne plus écraser les données sauvegardées.
Ensuite : je dois refaire le même type de code pour les autres mois, c'est bien ça ?
Non, ce code suffit.
Enfin, comment spécifier que les cellules auxquelles on fait référence se trouvent sur une autre feuille
Private Sub Workbook_Open() With Sheets("Histo") If Month(.[A1]) <> Month(Date) Then .[A2:A5] = Sheets("Feuil1").[D3:D6].Value .[A1] = Date End If End With End Sub
Et si tu veux un historique de l'historique ajoute
.[A:A].Insert Shift:=xlToRightjuste après le if
eric
Bonjour
Après adaptation du code d'Eric, j'obtiens ceci :
Par contre ce code ne fonctionne que pour le mois de février (D2).
Je pourrais recopier ce code pour chaque mois, mais ce n'est pas très joli. Y aurait-il possibilité de l'adapter pour qu'il recherche le mois actuel dans C2:N2 et qu'il recopie la plage D11:D14 sur les lignes 3 à 6 du mois correspondant ?
Enfin, dans la boucle If, il n'y a pas de Else : donc au changement de mois, les valeurs du mois précédent seront-elles conservées ?
Le fichier modifié : https://www.cjoint.com/c/EBzkuI4zjVA
Mes remerciements pour l'adaptation ...
Après adaptation du code d'Eric, j'obtiens ceci :
Private Sub Workbook_Open()
'Historisation
With Sheets("Histo")
If Month(.[D2]) = Month(Date) Then
.[D3:D6] = Sheets("Histo").[D11:D14].Value
.[A1] = Date
End If
End With
End Sub
Par contre ce code ne fonctionne que pour le mois de février (D2).
Je pourrais recopier ce code pour chaque mois, mais ce n'est pas très joli. Y aurait-il possibilité de l'adapter pour qu'il recherche le mois actuel dans C2:N2 et qu'il recopie la plage D11:D14 sur les lignes 3 à 6 du mois correspondant ?
Enfin, dans la boucle If, il n'y a pas de Else : donc au changement de mois, les valeurs du mois précédent seront-elles conservées ?
Le fichier modifié : https://www.cjoint.com/c/EBzkuI4zjVA
Mes remerciements pour l'adaptation ...
Bonjour Eric
Je ne te voyais pas sur le forum ce matin, d'où la formulation généraliste.
Mon travail m'empêche d'être présent les après-midi sur le forum.
Même si tu ne veux pas donner suite, je renouvèle mes remerciements ainsi que toute l'admiration sincère que j'ai pour tes compétences et ton sens de l'aide. En aucun cas je n'ai voulu te blesser, excuse-moi.
Je reprends donc ton code d'origine que je ne semble pas avoir compris :
Le stockage de la date actuelle se fait en A1.
Dans l'expression If Month(.[A1]) <> Month(Date) par exemple je ne comprends pas pourquoi tu poses la condition <> car on recherche bien le mois en cours dans le tableau ...
Merci d'avance
Je ne te voyais pas sur le forum ce matin, d'où la formulation généraliste.
Mon travail m'empêche d'être présent les après-midi sur le forum.
Même si tu ne veux pas donner suite, je renouvèle mes remerciements ainsi que toute l'admiration sincère que j'ai pour tes compétences et ton sens de l'aide. En aucun cas je n'ai voulu te blesser, excuse-moi.
Je reprends donc ton code d'origine que je ne semble pas avoir compris :
Le stockage de la date actuelle se fait en A1.
Dans l'expression If Month(.[A1]) <> Month(Date) par exemple je ne comprends pas pourquoi tu poses la condition <> car on recherche bien le mois en cours dans le tableau ...
Merci d'avance
If Month(.[A1]) <>et
.[A1] = Datesont sur la même cellule.
je ne comprends pas pourquoi tu poses la condition <> car on recherche bien le mois en cours dans le tableau ...
Non, on regarde si le mois en cours est <> du mois mémorisé. S'il l'est c'est qu'on a changé de mois et qu'il faut enregistrer.
eric
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci d'avoir répondu, merci bien.
Je veux vraiment comprendre, ne serait-ce que pour progresser.
Je comprends que ton code sert à figer les valeurs D3:D6 si on ne se trouve pas dans le mois en cours.
Puis-je te demander encore quelques explications ?
Pourquoi passer par A2:A5 qui restent vides après exécution de la macro à l'ouverture ?
Dans le fichier : https://www.cjoint.com/c/EBzmmOtAJkm D11:D14 ne se recopient pas en D3:D6
Mes remerciement anticipés Eric
Je veux vraiment comprendre, ne serait-ce que pour progresser.
Je comprends que ton code sert à figer les valeurs D3:D6 si on ne se trouve pas dans le mois en cours.
Puis-je te demander encore quelques explications ?
Pourquoi passer par A2:A5 qui restent vides après exécution de la macro à l'ouverture ?
Dans le fichier : https://www.cjoint.com/c/EBzmmOtAJkm D11:D14 ne se recopient pas en D3:D6
Mes remerciement anticipés Eric
Pourquoi passer par A2:A5
J'ai pris A2:A5 car tu as parlé d'une feuille Histo qui n'existait pas et que je pensais dédiée mais tu mets où tu veux.
qui restent vides après exécution de la macro à l'ouverture ?
Ben oui, puisque tu as une date en février en A1 et qu'on est en février c'est que l'historisation a eu lieu.
Attend mars maintenant, ou met une date en janvier en A1 (ou ailleurs tant que le code reste cohérent).
eric
J'ai pris A2:A5 car tu as parlé d'une feuille Histo qui n'existait pas et que je pensais dédiée mais tu mets où tu veux.
qui restent vides après exécution de la macro à l'ouverture ?
Ben oui, puisque tu as une date en février en A1 et qu'on est en février c'est que l'historisation a eu lieu.
Attend mars maintenant, ou met une date en janvier en A1 (ou ailleurs tant que le code reste cohérent).
eric
D'accord je comprends mieux à présent.
Cette fois je vais pouvoir adapter le code correctement.
A vrai dire au départ je n'avais pas pris ton code dans le bon sens, je pensais que tu recopiais alors qu'en fait tu empêchais la copie, d'où mon incompréhension.
Au plaisir de te retrouver. Mille mercis.
Cette fois je vais pouvoir adapter le code correctement.
A vrai dire au départ je n'avais pas pris ton code dans le bon sens, je pensais que tu recopiais alors qu'en fait tu empêchais la copie, d'où mon incompréhension.
Au plaisir de te retrouver. Mille mercis.