Problème maccro

Bonjour,

J'ai cherché sur votre forum, mais je n'ai pas trouver solution à mon problème.

Je dois créer une facture sur excel avec lorsque je clique sur un bouton lié à une maccro la facture s'enregistre avec le mot facture suivi de la date et du numéro de facture, puis les données s'efface pour créer une nouvelle facture.

Voici le code VBA:

ActiveWorkbook.SaveAs Filename:="T:\facture\facture" & Range("E4")

Range("B9,A14:A24,E14:E24").Select

Selection.ClearContents

Range("b8") = Range("b8") + 1

Range("b9").Select

End Sub

Mon problème est le suivant, je souhaites que lorsque l'on passe au jour suivant, le numéro de facture repasse à O.

Si mon explication n'est pas très claire n'hésitez pas à me demander de plus ample information.

Merci pour votre aide

Bonjour à tous,

Je suppose que le N° de facture est en B8,

remplace :

 Range("b8") = Range("b8") + 1 

par :

 Range("b8") = 0

sous réserve d'avoir bien compris la question.

Attention, tes N° de factures ne seront plus incrémentés :

le mieux serait d'envoyer un bout de fichier.

Claude.

Merci pour ta réponse,

https://www.excel-pratique.com/~files/doc/facture.xlsm

J'ai uploadé mon fichier excel,

Le problème si je remplace

Code:

Range("b8") = Range("b8") + 1

par :

Code:

Range("b8") = 0

A chaque enregistrement le numéro de facture repassera à 0, je souhaites seulement que ce numéro repasse à zéro lors d'un changement de jour.

Par exemple : le 1er novembre j'ai effectué 10 factures. Le lendemain lorsque j'ouvre la facture le numéro de facture repasse à O car nous sommes un autre jour.

On m'a parlé de la macro Auto_open mais je n'ai pas d'idée comment l''utiliser.

Merci pour votre aide

re,

oui, c'est bien ce que je pensais !

peux-tu envoyer ton fichier au format XLS

je ne peux pas ouvrir ton lien

Claude.

re,

Désolé, j'ai envoyé la version en xls.

https://www.excel-pratique.com/~files/doc/facturevictor.xls

Merci

re,

j'utilise la cellule i1

Sub save2()
 'ActiveWorkbook.SaveAs Filename:="T:\facture\facture" & Range("E4")
Range("B9,A14:A24,E14:E24").ClearContents
    If Range("i1") = Date Then
        Range("b8") = Range("b8") + 1
    Else
        Range("b8") = 0
    End If
        Range("b9").Select
        Range("i1") = Date
End Sub

claude.

r,

excuse, faute de frappe

Sub save2()
 'ActiveWorkbook.SaveAs Filename:="T:\facture\facture" & Range("E4")
Range("B9,A14:A24,E14:E24").ClearContents
    If Range("i1") = Range("f1") Then
        Range("b8") = Range("b8") + 1
    Else
        Range("b8") = 0
    End If
        Range("b9").Select
        Range("i1") = Date
End Sub

Claude.

Merci beaucoup,

Votre réponse correspond parfaitement, je n'y serai jamais arrivé seul.

re,

n'oublie pas la petite formalité !

oQksBresolu

à+...Claude.

Bonjour,

Une solution différente de celle de Claude :

  • En F1, la date du jour mise par macro
  • Les données en E4 sont supprimées

A la fermeture du fichier, la date du jour est mise en F1 et sera contrôlée à la réouverture du fichier. Si la date du jour est différente elle sera adaptée et la cellule B8 sera remise à 0.

Fichier

Amicalement

Dan

Encore merci Claude, et Dan également.

Bonjour,

J'ai pu créer mon fichier de base, mais je viens de m'apercevoir, qu'il me manque une donnée. Je souhaiterai que lorsque je clique sur mon fichier de base il reprenne le numéro de la dernière facture +1, si par exemple:

Aujourd'hui nous sommes le 14 novembre, j'ai enregistré 15 factures, je quitte la dernière facture, puis je reviens le même jour, je relance la facture de base et la je souhaiterai avoir le numéro de l'ancienne facture +1 (soit 16) qui s'affiche dans la case numéro de facture.

Je vous joins le fichier. https://www.excel-pratique.com/~files/doc/facture_excel_pratique.xls

Merci d'avance, si mes explications ne sont pas claire faite le moi savoir, j'essaierai de reformuler ma demande.

Victor

bonsoir,

Tu n'a pas tenu compte de mon message du 1/11 4h:16pm , que je rappelle:

Sub save2()
 'ActiveWorkbook.SaveAs Filename:="T:\facture\facture" & Range("E4")
Range("B9,A14:A24,E14:E24").ClearContents
    If Range("i1") = Range("f1") Then
        Range("b8") = Range("b8") + 1
    Else
        Range("b8") = 0
    End If
        Range("b9").Select
        Range("i1") = Date
End Sub

regarde si çà va

Claude.

Bonsoir,

Voici le code que vous m'aviez fait parvenir et que j'ai donc intégré à mon fichier.

Sub save2()

ActiveWorkbook.SaveAs Filename:="C:\Users\Victor\Documents\BIWI\info\exercice\entrainement maison" & Range("E4")

Range("B9,A14:A24,E14:E24").ClearContents

If Range("i1") = Date Then

Range("b8") = Range("b8") + 1

Else

Range("b8") = 1

End If

Range("b9").Select

Range("i1") = Date

End Sub

Mais je souhaiterais que lorsque j'ouvre mon fichier de base il reprenne le dernier numéro de facture, si je suis toujours le même jour et lorsque je change de date le fichier doit repartir à 1 comme c'est le cas actuellement.

Merci

3tab-essai.zip (15.30 Ko)

re,

regarde bien, comme j'ai dis + haut

remplace

 If Range("i1") = Date Then 

par :

    If Range("i1") = Range("f1") Then 

Claude.

Re,

Je suis désolé je dois mal exprimer mon problème, ce que je souhaites réaliser, j'ai ma facture de base, lorsque j'active la macro, la facture s'enregistre avec la date et le numéro de facture. Tout cela fonctionne très bien mais je souhaites que lorsque j'ouvre mon fichier de base le même jour le numéro de la facture de base soit remplacé par le dernier numéro de facture enregistrée +1.

Le but de cette opération est de ne pas à avoir à ouvrir la dernière facture enregistrée de la journée lorsque l'on a quitté exel et que l'on souhaite reprendre le travail plus tard le même jour,grâce à cela je n'utiliserai que la facture de base.

Car actuellement si je quitte après avoir enregistré 5 factures et que j'ouvre la facture de base mon numéro de facture est 1, je souhaites donc qu'il apparaisse 6 dans la case numéro de facture.

merci

re,

Car actuellement si je quitte après avoir enregistré 5 factures et que j'ouvre la facture de base mon numéro de facture est 1, je souhaites donc qu'il apparaisse 6 dans la case numéro de facture.

tu parle bien du même jour ?

quand tu quitte, il faut enregistrer, sinon le compteur n'est pas enregistré !

Tu n'est pas très clair, mais on va finir par y arriver.

Claude.

3test-v2.xlsm (34.35 Ko)

bonsoir,

On tourne un peu en rond hein ?

Si j'incrémente un N° avant de quitter et que je sauvegarde le modèle (aujourd'hui : N° 6)

si je rouvre tout à l'heure j'aurai bien le N° 6

Inversement demain en ouvrant j'aurai toujours le N° 6...

Il faut donc une procédure Workbook_Open qui réinitialise le lendemain (Date différente = N° 1)

C'est ça?

A+

re,

Salut galopin,

non, regarde le If

If Range("i1") = Range("f1") Then

f1 étant =Aujourdhui()

Claude.

2test-v2.xlsm (34.87 Ko)

Re,

Je suis vraiment désolé, je tente une explication différente de mon problème,

le code VB actuel me permet d'enregistrer sous un "nom" avec la date du jour et le numéro de facture. Mais mon fichier de base (facture base.xls) n'est pas modifié car lorsque j'active la macro je passe sur une autre facture ex : facture 14112008 1.xls, ..., à la fin de ma matinée je quitte excel ma dernière facture enregistrée est : facture 14112008 5.xls.

Je souhaites que lorsque je revienne travailler en lançant facture base.xls, je trouve dans la cellule numéro de facture de mon classeur le numéro de la dernière facture (dans l'exemple 5) +1 en valeur pour que je puisse continuer mes factures sans me soucier d'aller rechercher la dernière. Après avoir remplie ma nouvelle facture, en activant la macro je souhaites qu'elle s'enregistre donc sous : facture 14112008 6.xls

Mais actuellement, la facture s'enregistrera sous : facture 14112008 1.xls

J'espère être un peu plus claire.

Merci

Rechercher des sujets similaires à "probleme maccro"