Figer des valeurs pour historiser
Résolu/Fermé
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
-
24 févr. 2015 à 10:58
touroul Messages postés 475 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 11 novembre 2024 - 25 févr. 2015 à 12:29
touroul Messages postés 475 Date d'inscription mardi 5 octobre 2010 Statut Membre Dernière intervention 11 novembre 2024 - 25 févr. 2015 à 12:29
A voir également:
- Figer des valeurs pour historiser
- Figer colonne excel - Guide
- Excel liste de valeurs - Guide
- Cette valeur ne correspond pas aux restrictions de validation des données pour cette cellule ✓ - Forum Excel
- Formule excel si compris entre plusieurs valeurs ✓ - Forum Excel
- Validation des données ✓ - Forum Excel
5 réponses
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
24 févr. 2015 à 11:34
24 févr. 2015 à 11:34
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
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
Modifié par touroul le 24/02/2015 à 12:36
Modifié par touroul le 24/02/2015 à 12:36
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
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
24 févr. 2015 à 12:37
24 févr. 2015 à 12:37
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
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
25 févr. 2015 à 10:09
25 févr. 2015 à 10:09
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 ...
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
25 févr. 2015 à 11:02
25 févr. 2015 à 11:02
Bonjour,
Quand tu adaptes, adapte correctement et ça marchera bien.
Comme ta tournure de phrase fait que tu t'adresses à d'autres que moi je vais m'en tenir là et laisser la place.
eric
Quand tu adaptes, adapte correctement et ça marchera bien.
Comme ta tournure de phrase fait que tu t'adresses à d'autres que moi je vais m'en tenir là et laisser la place.
eric
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
25 févr. 2015 à 11:33
25 févr. 2015 à 11:33
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
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
25 févr. 2015 à 11:43
25 févr. 2015 à 11:43
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
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
25 févr. 2015 à 12:02
25 févr. 2015 à 12:02
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
eriiic
Messages postés
24603
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
15 décembre 2024
7 249
25 févr. 2015 à 12:16
25 févr. 2015 à 12:16
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
touroul
Messages postés
475
Date d'inscription
mardi 5 octobre 2010
Statut
Membre
Dernière intervention
11 novembre 2024
16
25 févr. 2015 à 12:29
25 févr. 2015 à 12:29
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.