enregistrement de données

  • Initiateur de la discussion Initiateur de la discussion Microbe
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

M

Microbe

Guest
Bonjour,

Est t'il possible de créer un genre d'historique?, à savoir dans mon classeur il y a plusieurs feuilles; Bon de commande, Bon de livraison, Facture, Note de crédit, Facture corrigée et Historique.
Je voudrais que a chaque fois que j'enregistre un nouveau BC ou facture etc, Certaines donnée aille s'enregistré également sur la feuille historique.

Formule, Vba?

A savoir que je ne veux pas a avoir a cliqué sur un bouton de commande, je veux que ca ce fasse quand j'utilise la fonction sauvegarde d'excel.

Merci d'avance
 
Re : enregistrement de données

Bonjour Microbe,

Avec une condition If à integrer dans la procedure evenementielle Workbook_Beforesave

VB:
 i=Sheets("Historique").Range("A65356").End(xlup).row+1
If activesheet.Name="Bon de commande" then
Sheets("Historique").cells(i,1)=Activesheets.cells(10,1)
...
...
elseif activesheet.Name="Bon de livraison" then
Sheets("Historique").cells(i,1)=Activesheets.cells(10,1)
...
end if
Je suis parti dans le cas ou chaque feuille est organisée de façon différente sinon ces la meme trame pour toutes les feuilles tu peut de passer du IF.

a chaque fois que le fichier sera sauvegarder il inscriras dans la premiere ligne vide da la premiere colonne.
 
Re : enregistrement de données

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
i=Sheets("Histo").Range("A65356").End(xlup).r ow+1
If ActiveSheet.Name = "Bon de commande" Then
Sheets("Histo").Cells(i, 1) = Activesheet.Cells(10, 1)
...
...
ElseIf ActiveSheet.Name = "Bon de livraison" Then
Sheets("Histo").Cells(i, 1) = Activesheet.Cells(10, 1)
...
End If
End Sub

ERREUR DE COMPILATION: ERREUR DE SYNTAXE

Je vai essayer de joindre un exemple
 
Re : enregistrement de données

Re


En utilisant la balise CODE, ton message sera plus agréable à lire.

Édites ton message contenant le code de ta macro.
Sélectionnes ton code VBA et cliques sur cet icône:
code.png


Cela donnera ce résultat, c'est mieux non ?
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
i=Sheets("Histo").Range("A65356").End(xlup).row+1
If ActiveSheet.Name = "Bon de commande" Then
Sheets("Histo").Cells(i, 1) = Activesheet.Cells(10, 1)
...
...
ElseIf ActiveSheet.Name = "Bon de livraison" Then
Sheets("Histo").Cells(i, 1) = Activesheet.Cells(10, 1)
...
End If
End Sub
 
Dernière édition:
Re : enregistrement de données

Re

Qui dit exemple, dit fichier simplifié

Dans le cas présent
Un classeur avec 2 onglets, trois lignes de données aurait suffit

C'était le sens de mon précédent message.

Ps: Microbe : as-tu la charte du forum ?
 
Re : enregistrement de données

Bonjour le fil, bonjour le forum,

Entièrement d'accord avec Staple. Pour avoir travailler sur un autre de tes posts, j'avoue que c'est facile pour toi. Tu envoie un gros fichier qu'il nous faut télécharger, puis convertir (enfin pour les ringards comme moi qui ne débandent pas d'Excel 2003) et tout ça pour s'apercevoir que les choses importantes n'y sont même pas. Cest à toi Microbe de faire l'effort de nous fournir un fichier alléger reprenant la structure de ton fichier original (noms des onglets, plages nommés, code VBA etc) avec juste une poignée de données non confidentielles. Mais il semblerait que cela soit trop te demander et tu as peut-être finalement raison puisque nous somme suffisamment c.. pour te répondre... Comme te le recommande JM, lis donc la Lien supprimé du forum !
 
Re : enregistrement de données

Je m'excuses si vous pensez que un classeur de 2 feuilles est "un gros fichier", celui de base fait 15 feuilles donc en extraire 2 pour moi ça n'est plus "un gros fichier", après peut être que effectivement un classeur avec 2 onglets, trois lignes de données aurait suffit pour certains, mais pour d'autre il est plus facile de travailler sur un exemple contrait que sur trois lignes de données!

Je pense que sur mes post précédent, ainsi que sur la 2e feuille du classeur j'ai indiquer ce que je n'arrivait pas a faire alors je ne comprend pas pourquoi on me dit "tout ça pour s'apercevoir que les choses importantes n'y sont même pas" ...

Enfin qui soit, merci à nyko283 de m'avoir donné un début d'idée et pour les autres désolé de ne pas avoir 11 117 ou 5 135 msg sur un forum à mon actif, il est vrais que je n'ai pas votre expérience tant en connaissance excel que en rédaction de message sur forum, mais comme le dit l'expression; "C'est en forgeant, qu'on deviens forgeront" !!!
 
Re : enregistrement de données

Re

Microbe
Il s'agissait juste de créer une fichier exemple exnihilo mais permettant de tester ce que tu veux faire:
à savoir : enregistrer des données d'une feuille d'un classeur sur une autre à la fermeture de celui-ci

Donc pour faire ceci en VBA, un simple classeur avec 2 feuilles suffisait pour faire des tests

Ensuite il te restait plus qu'à reprendre le code VBA testé, l'adapter et le mettre dans ton fichier original.

L'avantage du fichier exemple simplifié est que le posteur peut le poster dans le post directement.

Voilà pourquoi je te suggérai de lire la charte du forum (puisque que tu dis ne pas bien connaitre les forums)

Extrait de la charte:
En ce qui concerne la possibilité de pièces jointes, elles devront être explicites et comporter juste un exemple de votre problème, pas une application entière. Il est inutile de joindre un tableau formaté de 100 lignes et 30 colonnes et plusieurs feuilles pour un exemple. De plus les données contenues devront être 'purgées' de toute information confidentielle. Le Webmaster ne pourra en aucun cas être tenu pour responsable.
Par ailleurs les macros évènementielles sur WorkBook_Open et Workbook_BeforeClose (ou Aut😵pen / Auto_Close), sont à éviter, on peut très bien montrer son problème sans avoir à faire subir quoique ce soit au lecteur, sinon on le signale clairement dans le post.
 
Dernière édition:
Re : enregistrement de données

Re,

Non tu as sans doute alleger ton fichier mais peut etre beaucoup de donnée sont inutile, et puis par exemple moi la je suis au boulot avec un accès internet tres tres limité 😡et donc je ne peut télécharger ton fichier alors que s'il etait poster ici j'aurais pu le voir😕.

un petit fichier comme ceci suffit...

sinon l'erreur de syntaxe vient des 3points de susppension 😛ou tu doit y mettre ton code comme je l'ai fait dans le fichier.
 

Pièces jointes

Re : enregistrement de données

Voilà j'ai essayé de faire simple avec mon fichier exemple ^^
(J'ai enregistré en version 2007)
Comme dit précédement je souhaiterais que certaines données soient enregistrées et pas toutes et ce l'orsque j'utilise la fonction de sauvegarde d'excel donc par Workbook_Beforesave.

Merci d'avance
 

Pièces jointes

Re : enregistrement de données

Merci nyko283, les fichiers ce sont croisé. C'est exactement ce que je recherche.
J'essayerai à l'avenir de faire des fichiers test comme le tiens, c'est juste que je ne sais pas tj comment faire pour etre sur que on comprenne mon soucis. Encore toutes mes excuses et un grand merci
 
Re : enregistrement de données

Re

Tu vois que c'est plus facile ainsi

Une possibilité

Code:
Dim src As Worksheet
Set src = Worksheets("Donnée")
With Worksheets("Histo").[A65536].End(xlUp)(2)
    .Value = src.[B7]
    .Offset(, 1) = src.[D2]
    .Offset(, 2) = src.[D10]
End With

Code à mettre dans une des deux procédures événementielles
Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)

End Sub
ou
Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

End Sub

PS: question: tu veux qu'à chaque changement en B7,D2,D10 de la feuille Données
on copie les infos dans Histo

Avec le code présenté plus haut, on ne copiera que les dernières valeurs saisies.
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
2
Affichages
874
Réponses
24
Affichages
2 K
Retour