Aide pour simplifier code macros
Bonjour,
tout d'abord merci à vous tous pour le forum et les nombreux messages car étant débutant en macro excel, ça m'a beaucoup aidé.
je vous joints un fichier et m'a question est :
Pouvez vous me dire comment simplifier mes codes ?
Ceci dans un but purement d'apprentissage ;-) Mes macros fonctionnent mais je pense qu'il y a plus simple (J'ai fait de la bidouille et c pas parfait).
Pour expliquer mon fichier excel.
Ce fichier est une aide à la comptabilité d'un magasin. La première feuille permet d'enregistrer l'argent encaissé pour un jour donné.
Le premier bouton "valider données", permet de renvoyer le total (E4:G4) dans la feuille et cellule correspondante à la date.
Le deuxieme bouton "déplacer données", permet de renvoyer les données enregistrées ligne 14 à 113 dans l'onglet "données" (ceci afin de faire une sauvegarde car une fois le transfert ok = delete).
Le troisieme bouton permet d'envoyer à la compta par mail le mois que l'on souhaite.
Il y a des incohérences que je n'arrive pas à rectifier.
1) Le bouton "déplacer données" :
Il fait bien le transfert mais j'aurais souhaité qu'il ne transfert que les lignes dans lesquelles il y a des données. Actuellement il fait un copier coller des 100 lignes.
2) Le bouton "envoi mail" :
il envoie le classeur alors que j'aurai bien aimé qu'il envoie que la feuille.
Merci beaucoup pour votre aide
Cdt
Aide pour simplifier code macros
Bonjour Thautheme ,
merci beaucoup pour ton retour.
Je trouve vraiment bien de mettre des commentaires en fin de phrase car on comprend mieux ce que l'on veut faire avec le code.
Je vais mettre ça dans mes bonnes pratiques :-)
- Super pour le bouton "valider les données" , ça évite de faire :
If mois = "01" Then Worksheets("janvier").Activate
etc...
je vais regarder ça de plus près car j'ai pas tout compris mais je vais m'y plonger et reviens vers toi si pb.
- Par contre pour le bouton "Déplacer les données"
j'ai toujours le pb quand tu valides le bouton 2 fois de suite.
Le code copie et colle les 100 lignes mêmes si il n'y a pas de données dans toutes les lignes.
En tout cas merci beaucoup.
Cdt
Aide pour simplifier code macros
Bonjour Thautheme,
merci beaucoup pour tes réponses, mais j'aurai besoin que tu m'aiguilles sur le bouton 1 "valider données"
J'ai vraiment du mal à comprendre :
T = T + O.Cells(J + 4, I).Value
je comprends le résultat = déterminer si valeur 0 ou pas .
En fait je ne comprends pas à quel moment tu détermines la bonne feuille à utiliser pour le test si = 0
et surtout pourquoi T = T+
Merci d'avance
Cdt
Aide pour simplifier code macros
Merci beaucoup Thautheme, tes explications sont super.
Je vais juste t’embêter une dernière fois sur l'onglet 0.
tu déclares
Code:
1 2 3 4
| D = Range("C4") 'définit la date D
J = Day(D) 'définit le jour J
M = Month(D) 'définit le mois M
Set O = Sheets(Format("1/" & M, "mmmm")) 'définit l'onglet O |
puis tu dis :
If O.Cells(J + 4, 4) = 0 And O.Cells(J + 4, 5).Value = 0 And O.Cells(J + 4, 6).Value = 0 Then
Ma question :
comment la macro peut reconnaître le bonne onglet à ouvrir par rapport à la date D (janvier, février etc..) ?
ou se situe le test ? car on ne dit pas si D ou J = Janvier , ouvrir l'onglet janvier .
Est ce que tu vois ce que je veux dire ?
Cdt
Aide pour simplifier code macros