Macro GRRRRR

Résolu/Fermé
valttt Messages postés 280 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 6 décembre 2024 - Modifié par valttt le 28/06/2016 à 18:42
valttt Messages postés 280 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 6 décembre 2024 - 28 juin 2016 à 21:54
Bonjour,

J'ai récupéré sur un site, un code VBA me permettant à chaque fermeture du fichier d’extension .xlsm, de créer dans le même dossier un document nommé FactureX.xlsx ou X est un numéro incrémenté de 1 à chaque fois.

Voici ce code:


Option Explicit Private Sub Workbook_Open()
Range("B1") = Range("B1") + 1
ActiveWorkbook.Save
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Chemin As String, Numéro_facture As Integer
Chemin = ActiveWorkbook.Path
Numéro_facture = Range("B1")
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
Chemin & "\Facture " & Numéro_facture & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub


Ma question est de savoir comment sur Excel 2010, utiliser ce même code pour être utiliser avec un autre fichier.
En clair je n'arrive pas à utiliser ce code de façon automatique.

Mil merci pour votre aide.

A voir également:

8 réponses

Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 649
28 juin 2016 à 18:42
Salut,

Quelle partie du code tu ne comprends pas?
0
valttt Messages postés 280 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 6 décembre 2024 16
Modifié par valttt le 28/06/2016 à 18:51
Merci pour ta réponse Pierre1310.

Ce n'est pas que je comprends ou pas, mon problème est que je ne sais pas quoi faire avec ce code pour l'utiliser dans un fichier de facture personnel.
J'ai essayer de l'utiliser sous Visual Basic, Macro, mais rien n'y fait (dans Excel).
0
Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 649
28 juin 2016 à 19:01
Je ne comprends pas ton problème, la macro marche, que te faut-il de plus?
0
valttt Messages postés 280 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 6 décembre 2024 16
28 juin 2016 à 19:09
Je sais que cela fonctionne, il est même génial car il correspond exactement à ce que je recherche !

J'ai tirer ce code du fichier joint sur ce site: https://forum.excel-pratique.com/viewtopic.php?forum_uri=excel&t=26118&start=

Mon fichier personnel d'origine est: Facture_SOS.xlsx
Je veux intégrer ce code pour que lorsque je vais enregistrer ce même fichier en .xlsm, la macro fonctionne.
Je n'arrive pas à enregistrer cette macro.
Je ne sais que faire de ce code.

J'ai essayer plusieurs chose pour essayer d'avoir un fichier xlsm fonctionnel mais rien.

Pardon pour mon ignorance...et merci encore pour ton aide.
0
Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 649
28 juin 2016 à 19:36
Ba c'est simple, enregistrer sous en .xlsm puis tu vas dans l'onglet développeur, sécurité des macros et tu permets tout.
0
valttt Messages postés 280 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 6 décembre 2024 16
Modifié par valttt le 28/06/2016 à 19:48
Merci, c'est déjà fait, mais je doit très mal m'exprimer :-(

1)Je veux intégrer ce code à mon fichier d'origine (.xlsx), pour qu'il devienne macro
2)J'enregistre mon fichier d'origine en .xlsm pour que la macro fonctionne.

C'est la 1) que je n'arrive pas à faire.

Quelle est la méthodologie ?
Ou dois-je mettre ce code ?
Comment enregistrer cette macro / code ?

Bref, je sais plus comment le dire, car tout ce que j'ai essayer ne fonctionne pas.... MEUUUUUUUUUUUUUUH
0
Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 649
28 juin 2016 à 19:55
A d'aaaaaaacord.

Tu fais alt f11
clic droit sur workbook => ajouter module
tu doubles clic dessus.
tu tape
sub maMacro()

Puis entré

Tu colles ton code et voila x)
0

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

Posez votre question
valttt Messages postés 280 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 6 décembre 2024 16
Modifié par valttt le 28/06/2016 à 20:28
Merci encore pour ton aide Pierre1310,

1) J'ouvre mon fichier Facture_SOS.xlsx
2) Je clic sur Visual Basic
3)Je tape le code comme tu me dis:
sub maMacro()
Option Explicit Private Sub Workbook_Open()
Range("B1") = Range("B1") + 1
ActiveWorkbook.Save
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim Chemin As String, Numéro_facture As Integer
Chemin = ActiveWorkbook.Path
Numéro_facture = Range("B1")
Application.DisplayAlerts = False
ActiveWorkbook.SaveAs Filename:= _
Chemin & "\Facture " & Numéro_facture & ".xlsx", FileFormat:=xlOpenXMLWorkbook, CreateBackup:=False
End Sub

4) J'enregistre mon fichier avec l'extension xlsm (Facture_SOS.xlsm)

Lorsque je lance mon fichier, il s'ouvre mais rien ne se passe, et si je le ferme, il me demande si je souhaite enregistrer les modifications, alors que je n'en ai pas fait.

Il devrait incrémenter le numéro (0) dans ma cellule B1 et ne pas me demander d'enregistrer les modifications à la fermeture, puisqu'il est censé créer un autre fichier.
0
Utilisateur anonyme
28 juin 2016 à 20:57
Bonjour valttt,

J'ai modifié ainsi le code VBA de ton message #8 :


Option Explicit

Private Sub Workbook_Open()
    [B1] = [B1] + 1: ActiveWorkbook.Save
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Dim Chemin As String, Numéro_facture As Integer
    Chemin = ActiveWorkbook.Path: Numéro_facture = [B1]
    Application.DisplayAlerts = False
    ActiveWorkbook.SaveAs Chemin & "\Facture " & Numéro_facture & ".xlsm",  52
    Application.DisplayAlerts = True
End Sub


52 est le code numérique pour : xlOpenXMLWorkbookMacroEnabled

Attention : après avoir désactivé les alertes, ne pas oublier de les
réactiver ensuite ! Sinon, des erreurs aléatoires et inattendues
peuvent se produire ! D'où cette ligne obligatoire :
Application.DisplayAlerts = True

--------------------------------------------

Essaye comme ça, et dis-moi ce que tu en penses.

Si ton problème est réglé, merci d'aller en haut de page
pour cliquer sur « Marquer comme résolu ».

Cordialement.  😊
 
0
valttt Messages postés 280 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 6 décembre 2024 16
28 juin 2016 à 21:04
Bonjour et merci pour ta réponse,

Rien ne change, il y a toujours les même problèmes:
- Pas d'incrémentation du numéro
- Pas de création de fichier .xlsx avec le numéro dans le nom de fichier
- Demande d’enregistrement des modifications alors qu'il n' en a pas
0
Pierre1310 Messages postés 8564 Date d'inscription lundi 21 décembre 2015 Statut Membre Dernière intervention 21 juillet 2020 649
Modifié par Pierre1310 le 28/06/2016 à 21:35
Tu veux le faire à la fermeture du fichier?
Demande enregistrement pour les modifications car si tu touches au vba il faut enregistrer avant de quitter.
0
valttt Messages postés 280 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 6 décembre 2024 16
28 juin 2016 à 21:54
J'ai enfin trouver le pourquoi du comment !

Mon code original était fonctionnel, mais c'est la façon de l'intégrer qui n'était pas bonne, alors pour info:

1) Ouvrir son fichier toto.xlsx
2) Activer le menu Développeur
3) Cliquer sur Visual Basic
4) Dans les objets (à gauche), double cliquer sur Feuil1
5) Saisir la première partie du code à savoir pour mon cas: Option Explicit
6) Dans les objets (à gauche), double cliquer sur ThisWorkbook
7) Saisir la totalité du code (même la 1ère ligne saisie plus haut)
8) Cliquer sur la disquette pour enregistrer votre travail
9) Un message d'erreur apparait : Cliquer sur NON, et enregistrez votre fichier avec l'extension xlsm (toto.xlsm)

J'espère que cela aidera quelqu'un comme moi plus tard.
Merci encore à Pierre1310 et Albkan pour votre aide.
0