Incrementation

Résolu
gclipse Messages postés 12 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 7 janvier 2015 - 1 janv. 2015 à 01:28
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 - 8 janv. 2015 à 13:53
Bonjour,

l'incrémentation ne se fait plus. cette macro a été conçu par une personne de ce forum ( il y a 8 ans je crois).
serait il possible de la vérifier s.v.p., merci!


Sub IncrementationFactureNumero()
Dim NumberInvoiceNumber As Integer
Dim RangeInvoiceNumber As Range
Dim StringInvoiceNumber As String


Set RangeInvoiceNumber = Sheets("Feuil3").Range("g10")

StringInvoiceNumber = "1"

With RangeInvoiceNumber
If .Value = "" Then
.Value = StringInvoiceNumber & " " & Format(0, "0000")
End If
End With


NumberInvoiceNumber = Val(Mid(RangeInvoiceNumber, Len(StringInvoiceNumber) + 1))
NumberInvoiceNumber = NumberInvoiceNumber + 1
RangeInvoiceNumber = StringInvoiceNumber & " " & Format(NumberInvoiceNumber, "0000")


End Sub
Private Sub Workbook_Open()
CreeBO
End Sub
Sub Workbook_BeforeClose(Cancel As Boolean)
DelBO ' supprimer la barre à outils
End Sub<code basic>
</code>



Option Explicit

Dim trouve As Byte
Dim xclass2 As String
Dim xchemin As String
Dim a1 As String
Dim msg As String
Dim Style As String
Dim Reponse2 As String
Dim title1 As String
'---------------------------------
' Utilisation :sauvegarde dans un classeur la feuille
'---------------------------------
'
Sub sauvegardefeuille()

'********************************************************************
'Application.ScreenUpdating = False
xclass2 = ActiveWorkbook.Name
xchemin = ActiveWorkbook.Path & "\"
' message info
a1 = " facture " & Trim(Sheets("Feuil1").Range("g10"))

title1 = " Information " 'Titre de la zone de saisie
msg = " La feuille sera enregistrée sous le nom :"
msg = msg & (Chr(13) & Chr(10)) & a1
msg = msg & (Chr(13) & Chr(10)) & "Etes vous d'accord ? "
Style = vbYesNo + vbInformation + vbDefaultButton3
' Affiche le message pour validation.
Reponse2 = MsgBox(msg, Style, title1)
If Reponse2 = vbNo Then Exit Sub
'*************************************

' vérification si fichier existe
Call lectufi2
If trouve = 1 Then
msg = " Un fichier exite déja sous le nom "
msg = msg & (Chr(13) & Chr(10)) & xchemin & a1 & ".xls"
msg = msg & (Chr(13) & Chr(10)) & " veuillez supprimer ou renommer le fichier "
Style = vbYes + vbCritical + vbDefaultButton1
Reponse2 = MsgBox(msg, Style, title1)
Exit Sub
End If

Sheets("Feuil1").Select
Sheets("Feuil1").Copy

ActiveWorkbook.SaveAs Filename:=xchemin & a1 & ".xls", _
FileFormat:=xlNormal, Password:="", WriteResPassword:="", _
ReadOnlyRecommended:=False, CreateBackup:=False
ActiveWorkbook.Close

Sheets("Feuil1").Select
Sheets("Feuil1").Activate
Range("B8:E13").Select
Range("A16:G39").ClearContents
Selection.ClearContents
Sheets("Feuil3").Range("A2") = Sheets("Feuil3").Range("A2") + 1
Range("A40").Select
ActiveCell.FormulaR1C1 = "0"
Range("G40").Select
ActiveCell.FormulaR1C1 = "0"
Range("A41").Select
ActiveCell.FormulaR1C1 = "0"
Range("A42").Select
ActiveCell.FormulaR1C1 = "0"
Range("G11").ClearContents


End Sub
'------------------------------------------------------------------------
' Macro : lectufi2
' DateTime : 07/04/2006 09:46
' Author : JP14
' Purpose : lecture fichier pour vérifier son existence
' call lectufi2
' xchemin & a1 en entrée
' trouve = 0 pas trouvé
' trouve =1 trouvé
'------------------------------------------------------------------------

Sub lectufi2()
Dim monfichier As String
trouve = 0
monfichier = Dir(xchemin & "*.xls")
Do Until monfichier = ""
If monfichier = a1 Then
trouve = 0
Exit Do
End If
monfichier = Dir
Loop
End Sub
<code basic>
</code>

si il manque quelque chose je suis tout près.

--

14 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 1/01/2015 à 10:35
Bonjour,

Je n'ai qu'à peine parcouru (et refuse d'aller plus loin dans son analyse) ce code écrit par je ne sais qui, mais écrit de manière manifestement "barbare", notamment en ce qui concerne les suites de sélections pour ensuite travailler sur la sélection faite (ce n'est pas ainsi que l'on travaille).
Tu nous dis que l'incrémentation ne se fait plus, ce qui donne à penser qu'elle se faisait jusqu'alors sans problème.
Est-ce le cas ? et si oui :
- à quel numéro en étais-tu ?
- quelle est la dernière date à laquelle tout fonctionnait bien ?
- comment sont lancées les macros que tu nous montres ?
Ces questions ne sont pas posées au hasard et je te prie d'y répondre avec le plus grand soin.

PS : Tu m'as fait peur, en disant que ce code barbare :
a été conçu par une personne de ce forum ( il y a 8 ans je crois)
!
J'ai du coup cherché ===>> OUF ! il n'a pas été écrit ici, mais sur un autre forum (excel-downloads) il y a en effet environ 8 ans ...
Je ne crois pas me tromper en t'affirmant que plus d'un des développeurs du présent forum auraient bondi et réagi en voyant un tel code.



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 1/01/2015 à 12:03
Je sais que ce n'est pas ce code qui est la cause fondamentale de ton problème, mais voilà quand-même du plus propre pour ta sub IncrementationFactureNumero :

Private Sub IncrementationFactureNumero()
Dim prefix As String, suffix As String, toto
With Sheets("Feui3").Range("g10")
If .Text = "" Then .Value = "1"
toto = Split(.Text, " ")
prefix = toto(0)
If UBound(toto) = 1 Then suffix = Split(.Text, " ")(1)
.Value = prefix & " " & Format(Val(suffix) + 1, "0000")
End With
End Sub


Et que dire de ta sub Sub sauvegardefeuille ?
on se demande à quoi peuvent bien servir ces deux lignes :
Sheets("Feuil1").Select
Sheets("Feuil1").Copy

puisque nous ne voyons nulle part ce que tu fais de cette copie ...
On se demande par ailleurs ce que sont les instructions qui viennent après la fermeture du classeur par :
ActiveWorkbook.Close

Et, à propos de ces instructions, que seraient-elles (si exécutées), sinon ceci (sans select, etc ...):
With Sheets("Feuil1")
.Range("A16:G39").ClearContents
.Range("B8:E13").ClearContents
Sheets("Feuil3").Range("A2") = Sheets("Feuil3").Range("A2") + 1
.Range("A40").FormulaR1C1 = "0"
.Range("G40").FormulaR1C1 = "0"
.Range("A41").FormulaR1C1 = "0"
.Range("A42").FormulaR1C1 = "0"
. Range("G11").ClearContents
end with

On se demande d'ailleurs ce que peut être une formule R1C1 = "0" ! Pourquoi une formule pour simplement une valeur ?

Je répète toutefois. Telle n'est pas, à mon avis, la cause fondamentale de tes malheurs. Je ne commencerai à la deviner que lorsque tu auras répondu avec précision et soin aux questions posées dans mon message précédent.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
gclipse Messages postés 12 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 7 janvier 2015
1 janv. 2015 à 14:08
Merci a vous de bien vouloir m'aider.
désolé, je croyait que c'était d'ici que tout avait commencer.
ce programme est utiliser par un copain, qui a une petite compagnie de service routier mécanique.
après accident de travail de plus de 1 an il se remis en service.
la dernière fois qu'il s'est servi de la facturation (dernière facture,2013-07-23)

le fichier a été bidouiller. maintenant-
l'incrémentation ne fonctionne plus

le fichier( excel) ne se ferme plus en sauvegardant dans son répertoire C:/docu..../facturation

la copie sauvegarder, en la ré-ouvrant pour vérifier si elle est ok , donne la date de la journée active.
mais cela était toujours comme ça du début.

voici où télécharger le fichier
https://www.dropbox.com/s/rx4v3giehwocc58/facture.xls?dl=0

je ne sais pas comment coller un fichier .

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


Tu nous dis que l'incrémentation ne se fait plus, ce qui donne à penser qu'elle se faisait jusqu'alors sans problème.
Est-ce le cas ? et si oui :
- à quel numéro en étais-tu ? 1081

- quelle est la dernière date à laquelle tout fonctionnait bien ? 2013-07-23

- comment sont lancées les macros que tu nous montres ? je vous envoie en attachement le fichier complet

le dossier de sauvegarde est c:/ documents/facturation



--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 janv. 2015 à 15:10
Je n'ouvre JAMAIS (raisons de sécurité maintes fois évoquées) un classeur dont je ne suis pas l'auteur !
Il manque une réponse importante, que j'attands encore :
- comment sont lancées les macros que tu nous montres ?



0

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

Posez votre question
J'ai compris.

par 3 icônes en complément, une pour aller chercher un client dans une liste (useform) sur la feuille2.

une deuxième pour imprimer la facture.

une troisième pour enregistrer dans le fichier c:/..../document/facturation
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 1/01/2015 à 17:08
Bon ...
Si rien dans le code n'a été modifié depuis la date du 23 juillet 2013 (date du dernier fonctionnement normal), tu es peut-être une victime de plus de la dernière mise à jour de Office (celle faite le 9 décembre 2014).
On va le savoir :
1) Ferme toutes tes applications en cours (surtout les applis OFFICE)
2) Va sous le pseudo-Dos (Démmarrer ===>> exécuter ===>> Command ===>> OK
3) dans la fenêtre dos : Rends-toi sous C (frappe CD.. et ENTER jusqu'à la ligne de commande C:\>
4) une fois là : Frappe exactement (espaces compris) :
DEL /F /S /A:H /A:-H *.EXD
puis appuie sur la touche ENTER et ATTENDS patiemment que la main te sois rendue
puis ferme la fenêtre DOS (Frappe EXIT puis presse ENTER)
5) ouvre à nouveau ton classeur et dis-nous s'il réagit bien maintenant.

PS : ne t'inquiète pas d'une lenteur qui te paraîtra excessive lors de la première réutilisation de Excel. Elle est normale (reconstitution des fichiers . exd). Cette lenteur ne sera plus là lors des utilisations ultérieures.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" facilitera les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement répéter son contenu. Je n'interviend
0
gclipse Messages postés 12 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 7 janvier 2015
1 janv. 2015 à 17:53
ok c'est fait, deux fichier .exd supprimer.


tout est identique comme avant sauf que le numéro de facture s'incrémente sur la feuil3 mais pas sur la feuil1 a G10.

le fichier s'enregistre bien dans son dossier.
mais il ne se ferme pas tout seul et je dois choisir entre enregistrer ou non pour sa fermeture.

Mon ami ma confirmer que ce fichier a été modifier dernièrement.
apparemment pour changer les montant de taxes.
possible de corriger?

--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 janv. 2015 à 18:02
Il s'incrémente sur la feuil3, pardi, puisque tu le demandes !
Si tu veux que ce soit sur la Feuille Feuil1,
Change donc "Feuil3" en "Feuil1" !

On ne va pas continuer ainsi, avec toi comme intermédiaire entre nous et ton "ami".
Demande-lui de venir s'expliquer directement.
0
gclipse Messages postés 12 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 7 janvier 2015
1 janv. 2015 à 18:42
ok,
mon ami m'a apporter son portable lundi soir et m'as demander de voir ce que je pouvais faire.Lui il ne connais absolument rien de l'informatique et moi je répare les portables et je ne suis pas programmeurs, mais je veux bien l'aider.

j'ai fait ce que vous m'avez proposer et maintenant la feuil3 ne s'incrémente plus et la feuil1 aussi.
je met une photo!


si vous voulez bien continuer cela me ferait un grand plaisir, merci.

--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 janv. 2015 à 18:52
1) Reprends s'il te plait mon code et non celui de ton ami.
2) non. Je n' "aide jamais à aider". Si j'aide, j'aide directement l'intéressé, pas celui qui est supposé aider l'intéressé.
Tu voudras bien comprendre qu'il en va dans ce domaine comme dans celui des "témoignages par personnes interposées". Ils ne conduisent que très rarement (et toujours difficilement) quelque-part !!!
Si ton ami n'a pas, lui déjà, des idées très claires sur ce qu'il fait, ce qu'il avait pour le faire et ce qu'il a ensuite bidouillé tu ne peux qu'en avoir encore moins que lui. C'est clair.
Désolé, mais c'est ainsi. Demande à celui qui a besoin d'aide de venir s'expliquer LUI-MEME ici.
0
gclipse Messages postés 12 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 7 janvier 2015
1 janv. 2015 à 19:21
je respecte votre décision.

je ne comprend votre raisonnement,ma femme non d'ailleurs!
mais c'est comme ça.

merci, d'avoir de votre temps et bonne année.






--
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 janv. 2015 à 19:38
Je ne vois pas ce que vient maintenant faire ici ta "femme", mais bon ...
Bonne année quand-même.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
1 janv. 2015 à 23:30
Tout ce qui a été dit plus haut ayant été dit (et je n'y change pas un seul iota) :
Je commence à deviner (pas vraiment certain, mais presque) que tout ton mécanisme (y compris celui que je ne vois pas) n'est finalement rien d'autre qu'un mécanisme d'établissement de factures (ou analogues) bâties sur un modèle invariable.
Je devine également que chaque facture est mémorisée sous la forme d'un classeur.
Si tel est le cas, tout ce mécanisme est à revoir.
1) seul le classeur "modèle" doit exister (vierge de données)
2) ce classeur, une fois saisies et confirmer les données ne doit pas donner lieu à l'établissement d'un autre classeur (lourd lourd) mais à la mémorisation des données dans un simple fichier texte (idéalement de structure de données).
3) il suffit dès lors de proposer (un userform ferait l'affaire) le choix entre :
a) créer une nouvelle "facture"
b) reprendre une facture existante (donc les données d'un fichier texte) que ce soit pour imprimer ou pour modifier une facture
c) fermer le classeur sans le sauvegarder (retour à l'état vierge, donc)
4) reste l'histoire du "compteur" pour la numérotation des factures.
Il est bien plus adroit de mettre également ce compteur dans un fichier texte également. Cela affranchit de la nécessité, sinon, de sauvegarder puis d'effacer tout le reste des données saisies dans le modèle
Le "compteur" pourrait se trouver dans le dossier principal de ton classeur. Les fichiers texte concernant les factures, eux, sont à mettre dans un sous-dossier du dossier de ton classeur.
Voilà, en gros, l'essentiel du mécanisme "raisonnable".
Si (et seulement si) tu es prêt à te "lancer" (il va y avoir du boulot) dans un tel développement, je t'y aiderai volontiers, mais uniquement pas à pas et à condition que tu te retrousses un peu les manches de ton côté.
Voilà.
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
6 janv. 2015 à 21:51
Bonjour,
Tout d'abord meilleurs voeux à tous pour cette nouvelle année.
Comme je suis téméraire j'ai uploader ta source.
Je suis d'accord avec ucfoutu ce code est très confus.

J'ai bien trouver la sub IncrementationFactureNumero mais aucun appel à celle-ci. Mettre l'appel à l'ouverture du classeur reviendrai à ne faire qu'une facture à chaque ouverture, donc le mieux serais d'ajouter un bouton à la nouvelle barre d'outils qui lancerais une nouvelle facture. Ensuite changer l'endroit de sauvegarde en "A2" et non pas "G10".
Pour ma part je cacherais les feuilles 2 et 3:
Feuil2.Visible = xlSheetVeryHidden
pour plus de sécurité.
La sub
lectufi2
devrais passer en function cela éviterais de rajouter des "trouve" un peu partout.
Pour la sauvegarde un classeur pour chaque factures ça va vite devenir très lourd et peu pratique donc sauvegarde dans un fichier ou sur une feuille.
En tant que dirigeant je suis passé par là au début, il faut savoir qu'au niveau du fisc il est impératif de pouvoir leur donner un fichier texte pour qu'il puissent consulter vos factures avec un simple traitement de texte.
Moi j'ai vite sauter le pas vers un logiciel dédié style Ciel ou EBP une centaines d'euros c'est pas la mer à boire, 2 heures pour entrer les données et voilà c'est fini.
Si tu compte néanmoins continuer à élaborer ce logiciel dis le moi il me reste des brides du mien que tu pourras adapter.
0
gclipse Messages postés 12 Date d'inscription samedi 21 juin 2008 Statut Membre Dernière intervention 7 janvier 2015
7 janv. 2015 à 19:00
Bonjour!

Je vous suis très reconnaissant a tous les deux de m'aider dans mon cheminement, mais mon ami est venu chercher son portable dimanche.
J'ai fait mon possible pour réparer, cela m'as pris une couples de jours
Ici et là sur internet mais j'ai fini par faire fonctionner l'incrémentation,
J'ai éliminé la feuille 3 (celle qui était destiné pour l'incrémentation).
Maintenant il est protégé avec mot de passe. Oui cela fonctionne de peur mais pour lui il est bien content.
J'aimerais bien faire plus mais pour le moment je n'ai pas le temps, la maison en travaux m'accapare beaucoup.
Je n'abandonne pas le projet.
Merci encore et que 2015 soit de santé et de paix


--
0
valtrase Messages postés 937 Date d'inscription lundi 19 janvier 2004 Statut Membre Dernière intervention 9 mai 2022 3
8 janv. 2015 à 13:53
J'en suis content pour toi.
Si tu dois revenir sur ce projet au vu de son avancement je ne saurais trop te conseiller de passer sous access plus simple pour toi à gérer.
1) Possibilité de gérer simplement plusieurs états (devis facture etc.)
2) Gérer les factures payées, non payées, acompte etc.
etc.
Enfin plein de petites choses qui facilitent le travail.
Pense à signaler comme résolue
0
Rejoignez-nous