Numéro de devis automatique qui se change à chaque enregistremen [Résolu/Fermé]

Signaler
Messages postés
23
Date d'inscription
mardi 17 janvier 2017
Statut
Membre
Dernière intervention
9 mai 2017
-
Messages postés
17226
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 septembre 2020
-
Bonjour,

J'ai fait une macro pour que mon numéro de devis se change automatiquement, voici mon code :

Sub effacer_et_numero()
'
' effacer_et_numero Macro
'

'
Range("A13:G15,E4,D17,E17,F17,D18,E18,F18,D19,E19,F19,D20,E20,F20,B22,C22,D22,E22,F22,B23,C23,D23,E23,F23,B24,C24,D24,E24,F24,B25,C25,D25,E25,F25,C27,E28").Select
Selection.ClearContents


If Range("I5").Value <> 1 Then
Range("E5").Value = Range("E5").Value + 1
End If


End Sub

Avec ce code ça fonctionne mais je suis obligée de reprendre la dernière facture faite alors que je voudrais que ca prenne en compte l'enregistrement et que je puisse réouvrir que mon modèle et non pas la dernière facture

Est ce possible ?

merci d'avance



15 réponses

Messages postés
17226
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 septembre 2020
4 232
Bonsoir,

Essaye comme cela avec une simplification de ton code

Sub effacer_et_numero()
'
Range("E4,A13:G15,D17:F20,B22:F25,B27,F28").ClearContents
If Range("I5").Value <> 1 Then
Range("E5").Value = Range("E5").Value + 1
End If
ActiveWorkbook.Save
End Sub
1
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 60747 internautes nous ont dit merci ce mois-ci

Messages postés
23
Date d'inscription
mardi 17 janvier 2017
Statut
Membre
Dernière intervention
9 mai 2017

Merci

C'est exactement ce que je voulais

Merci beaucoup
Messages postés
86
Date d'inscription
dimanche 2 avril 2006
Statut
Membre
Dernière intervention
13 mai 2017
20
Bonjour,

Pourrais tu mettre un exemple concret ainsi que le résultat attendu ?

Car j'ai bien peur de ne pas comprendre le besoin sans le contexte

--
Messages postés
23
Date d'inscription
mardi 17 janvier 2017
Statut
Membre
Dernière intervention
9 mai 2017



Je vous fais une capture du haut de mon modèle où il y a mon numéro de devis.
Dans l'état actuel des choses je dois reprendre à chaque fois le dernier devis que j'ai fait pour faire fonctionner mon numéro automatique.

Je voudrais pouvoir inclure dans le code quelque chose qui change le numéro à chaque enregistrement de devis, ainsi je reprends simplement mon modèle et pas le dernier devis fait

j'espère que ca sera plus compréhensible :)
Messages postés
86
Date d'inscription
dimanche 2 avril 2006
Statut
Membre
Dernière intervention
13 mai 2017
20
C'est toujours très flou sans un exemple concret car juste avec cette capture, je n'ai toujours pas de contexte.

Y'a t-il d'autres codes macro ?

Comment sont disposés les devis ? Sur une seule feuille à la suite ? Sur plusieurs feuilles ?

Si on part de l'hypothèse que vous voulez garder un modèle sans la facture mais juste avec le numéro, alors il faudra mettre un compteur quelquepart dans le classeur qui sera incrémenté à chaque nouveau devis. Il peut être mis dans la même feuille mais caché dans une cellule non affichée Z1 par exemple, ou bien en caractère blanc sur blanc dans une cellule affichée A1 par exemple.

Si vous choisissez par exemple de le mettre dans A1, il faudra rajouter ce code :

'incrémenter la valeur invisible
Range("A1").Value = Range("A1").Value +1
'copier le nouveau numéro
Range("E5").Value = Range("A1").Value

Sinon, une autre méthode consisterai à

1- dupliquer la feuille du modèle
2- renommer la nouvelle feuille avec un nom parlant "devis_en_cours"
3- mettre le numéro du dernier devis +1 dans la cellule E5 de "devis_en_cours"
--
Messages postés
23
Date d'inscription
mardi 17 janvier 2017
Statut
Membre
Dernière intervention
9 mai 2017



Oui j'ai déjà mis sur la même feuille un bouton qui remet tout à zéro et qui incrémente à chaque fois mon numéro de devis.

donc exemple: j'ouvre mon modèle je fais mon devis puis je l'enregistre sous un nom différent que je mets dans un dossier. Si je veux faire un autre devis si j'ouvre à nouveau le modèle et que je clique sur le bouton ça me remet au numéro 1

Si je veux que ca mette 2 je dois réouvrir le devis 1 appuyer sur le bouton et là j'ai le 2 qui s'affiche

Mais je ne voudrais pas ouvrir à chaque fois le dernier devis mais uniquement mon modèle

On ne peut pas mettre de pièce jointe ici? car j'aurai pu t'envoyer le classeur ça aurait plus clair
Messages postés
86
Date d'inscription
dimanche 2 avril 2006
Statut
Membre
Dernière intervention
13 mai 2017
20
Pour info on peut mettre une pièce jointe ici

https://www.cjoint.com/
Messages postés
17226
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 septembre 2020
4 232
Re,

si je comprends ton dernier post
clic droit sur l'onglet de ta feuille/Visualiser le code
colle ce code, puis enregistre ton fichier et teste le

Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)
On Error Resume Next
Range("E4,A13:G15,D17:F20,B22:F25,B27,F28").ClearContents
If Range("I5").Value <> 1 Then
Range("E5").Value = Range("E5").Value + 1
End If
ActiveWorkbook.Save
End Sub
Messages postés
23
Date d'inscription
mardi 17 janvier 2017
Statut
Membre
Dernière intervention
9 mai 2017

Bah j'aurai mieux fait de pas toucher , car là ça me dit que j'ai plus de macro, donc c'est pas fini

faut que je recommence tout :-(
Messages postés
17226
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 septembre 2020
4 232
Re,
As tu testé mon dernier code post 6
Messages postés
23
Date d'inscription
mardi 17 janvier 2017
Statut
Membre
Dernière intervention
9 mai 2017

re

non, mais je le testerai demain car là je dois quitter

Ca sera mieux ?
Messages postés
17226
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 septembre 2020
4 232
Re,
alors pas de retour !
si ton problème est résolu confirme le nous que l'on passe le statut de la discussion en résolu
Merci
Messages postés
23
Date d'inscription
mardi 17 janvier 2017
Statut
Membre
Dernière intervention
9 mai 2017

Bonjour

Bon j'ai remis ton premier code qui fonctionne mais n'est pas enregistré en modèle l'extension est en .xlsm

Je n'arrive pas autrement

Quel est l'avantage du deuxième code stp ?

Cordialement
Messages postés
17226
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 septembre 2020
4 232 >
Messages postés
23
Date d'inscription
mardi 17 janvier 2017
Statut
Membre
Dernière intervention
9 mai 2017

Re,
essaye le code ci dessous
Messages postés
17226
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 septembre 2020
4 232
Re,

Il vaudrais mieux soit traiter ta demande à l'ouverture du fichier ou en deux temps effacement des données à l'enregistrement et activer le compteur à l'ouverture du fichier.
essaye comme cela, clic droit sur l'onglet de ta feuille/Visualiser le code/ouvre la Thiswokbook
et colle ce code

Private Sub Workbook_Open()
On Error Resume Next
Range("E4,A13:G15,D17:F20,B22:F25,B27,F28").ClearContents
If Range("I5").Value <> 1 Then
Range("E5").Value = Range("E5").Value + 1
End If
ActiveWorkbook.Save
End Sub

Qui a t'il dans ta cellule I5 qui conditionne le compteur
Messages postés
23
Date d'inscription
mardi 17 janvier 2017
Statut
Membre
Dernière intervention
9 mai 2017

re

il y a 0

j'ose plus toucher

là quand j'ai rempli mon devis je l'enregistre avec le nom du client ce qui me génère un autre fichier

et quand j'ouvre mon fichier d'origine toutes les cellules sont effacées il ne reste que le numéro de devis que j'active avec mon bouton effacer

donc pour l'instant je crois que je vais laisser comme ça car je galère trop
Messages postés
86
Date d'inscription
dimanche 2 avril 2006
Statut
Membre
Dernière intervention
13 mai 2017
20
J'espère que tu as fait des sauvegardes
Messages postés
17226
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 septembre 2020
4 232
Re,
mais c'est normal que sur ton fichier modèle les cellules s'effacent, c'est ton code
Range("A13:G15,E4,D17,E17,F17,D18,E18,F18,D19,E19,F19,D20,E20,F20,B22,C22,D22,E22,F22,B23,C23,D23,E23,F23,B24,C24,D24,E24,F24,B25,C25,D25,E25,F25,C27,E28").Select
Selection.ClearContents

que j'ai simplement condensé
mon dernier code efface et numérote ton compteur sur le fichier modèle qu'a l'ouverture de ce dernier

il faut compléter le code de sorte à enregistrer sous pour dupliquer le fichier sans le code VBA
je te proposerais un code demain
Messages postés
17226
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 septembre 2020
4 232
Re,
J'ai un peu de temps pour me pencher sur ta demande
si je comprends bien tu veux générer des devis à partir d'un fichier modèle
alors ce qu'Excel sait faire
- Dupliquer une feuille exemple Devis soit au format XLS, XLSX ou PDF
- Nommer tes copies en fonction du numéro facture ou Nom du client
- Archiver tes devis dans un répertoire
- Effacer et changer le numéro de ta facture dans ton modèle pour devis suivant
Es ce cela que tu veux
Messages postés
23
Date d'inscription
mardi 17 janvier 2017
Statut
Membre
Dernière intervention
9 mai 2017

Bonjour Mike

Oui c'est exactement cela

Avec ton premier code ça fonctionne. Je l'ai laissé en xlsm

C'est peut être pas très complet mais ça fonctionne :-)

Si tu me donnes ton mail je t'envoies le classeur pour que tu vois ce que j'ai fait mais faut pas se moquer :-) je ne suis pas du tout une pro des macros
Messages postés
17226
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 septembre 2020
4 232
Re,

l'intérêt d'un forum est le partage du savoir alors on va essayer dans un premier temps de se comprendre
commence par créer un Dossier que tu nommes comme tu veux, exemple Devis.
dupliquer ton fichier Excel que tu enregistres ou colles dans le Dossier Devis que tu viens de créer, dans ce même dossier tu crées un nouveau dossier que tu nommes Archives
ouvre le fichier clic droit sur l'onglet de ta feuille/Visualiser le code/Insertion Module et colle ce code
Sub Archivage_Devis()
'---------------------------------------Création du fichier temporaire
Application.DisplayAlerts = False '-------Annulation des alertes
'---------------------Nom du fichier à créer extension xls
chemin = ActiveWorkbook.Path
nom = [B5].Value & ".xls" 'nom du nouveau classeur dans cellule et définir extension si différente d'application
ActiveSheet.Shapes.Range(Array("Bouton")).Visible = False
Sheets("Feuil1").Copy
ActiveWorkbook.SaveAs chemin & "\Archives\" & nom, FileFormat:=xlExcel8 ' ou adresse si le nom est dans une cellule Range("E2").Value & ".xls"
ActiveWindow.Close
Application.DisplayAlerts = True '-------rétablissement des alertes
'---------------------------------------Après l'archivage le fichier se réinitialise
ActiveSheet.Shapes.Range(Array("Bouton")).Visible = True
Range("E4,A13:G15,D17:F20,B22:F25,B27,F28").ClearContents
If Range("I5").Value <> 1 Then
Range("E5").Value = Range("E5").Value + 1
End If
ActiveWorkbook.Save
End Sub


sur ta feuille de calcul crée un simple bouton avec la barre formulaire
et renomme le tout simplement Bouton
clic droit sur le bouton/Affecter une macro et pointe sur le code Devis
tu peux également faire un clic droit sur le bouton/Modifier le texte pour changer le texte sur le bouton (on peut également utiliser le bouton activex, mais verra plus tard)
saisir sur ta feuille en B5 le nom que tu veux donner à ton devis, lorsque tu cliqueras sur le bouton un devis sera créé à partir de ta feuille et archivé automatiquement dans le dossier Archives et avoir ton modèle vierge avec un compteur en E5 +1
A toi de jouer, si tu n'y arrives pas, on échangera les fichiers
A+
Mike-31

Je suis responsable de ce que je dis, pas de ce que tu comprends...
Messages postés
23
Date d'inscription
mardi 17 janvier 2017
Statut
Membre
Dernière intervention
9 mai 2017

Bonjour

Je voulais juste te montrer ce que j'avais fait pour que tu puisses comprendre mes erreurs car erreur il y a c'est sur.

J'ai donc suivi à la lettre ce que tu m'as mis, j'ai même changer le nom de mon bouton puisqu'il était déjà créé en mettant Bouton pour vraiment suivre ton post pas à pas.

Où ca pêche c'est quand j'arrive à "saisir sur ta feuille en B5..........

là je comprends pas pourquoi tu me dis ça, déjà en B5 je ne peux rien mettre car j'ai l'adresse de la Sté, de plus même si je mets en I5 par ex , je comprends pas car je veux pas un nom mais un chiffre.
Enfin je l'ai quand meme fait, j'ai mis en I5 "nom" pour tester, j'ai modifié dans le code B5 en I5 et j'ai mis en extension xlsm

mais ça fonctionne pas

si je regarde le code que j'ai mis dans ThisWorkbook, ainsi que dans le module que j'ai inséré à la fin il y a en rouge <code>End Sub et tout en haut surligné en jaune Sub Devis()

Il doit manquer quelque chose

en tout cas je te remercie du temps que tu m'accordes


Julie
Messages postés
17226
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 septembre 2020
4 232
Re,

anonymise le fichier s'il contient des données confidentielles, ensuite
1) Clic sur ce lien https://www.cjoint.com/
2) Clic sur le bouton Parcourir pour sélectionner ton fichier
3) Clic sur le bouton Créer le lien en bas de la page
4) Au bout de quelques secondes en haut de la page en bleu souligné un lien sera généré, tu le sélectionnes et tu le copies soit dans une réponse
soit tu clic sur mon pseudo puis sur lui écrire un message
Messages postés
17226
Date d'inscription
dimanche 17 février 2008
Statut
Contributeur
Dernière intervention
14 septembre 2020
4 232
Re,

ton lien n'est pas bon, il ne semble pas complet