[Résolu] Numérotation continue des documents

Discussion et problème sur le célèbre facturier réalisé sous OpenOffice

Modérateur : Vilains modOOs

Règles du forum
FactOOor a été testé sur la version officielle de Openoffice. Le support technique sur FactOOor est donc assuré pour la version en cours et n'ayant subi aucun changement quant à son contenu (formulaire, rapport ou code macro).
Marijani
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 27 févr. 2010 13:34

[Résolu] Numérotation continue des documents

Message par Marijani »

Bonjour,
Par défaut, FactOOor remet la numérotation des documents à 1 lors de chaque changement d'année ; j'imagine qu'il ne doit pas être bien difficile en éditant l'une ou l'autre macro de garder une numérotation continue d'année en année, seuls changeant le numéro de l'année et celui du mois.
J'ai bien tenté d'analyser le code de la macro AfCalc et j'imagine que la solution doit se trouver dans la routine 'ChangerMois()' mais je ne suis pas suffisamment 'calé' en macros pour comprendre ce qu'il faut modifier pour répondre à mon attente.
Quelqu'un peut m'aider ?
Merci d'avance et bonne journée
Dernière modification par Flip le 07 mars 2010 22:20, modifié 1 fois.
Raison : Balisage RESOLU.
OpenOffice 3.2 sur XP SP3
Avatar de l’utilisateur
Grenouille
ManitOOu
ManitOOu
Messages : 3223
Inscription : 13 janv. 2006 16:21
Localisation : Chasseneuil-du-Poitou / Futuroscope

Re: Numérotation continue des documents

Message par Grenouille »

Bonjour,
Marijani a écrit : garder une numérotation continue d'année en année, seuls changeant le numéro de l'année et celui du mois.
En attendant la réponse du concepteur de FactOOor, tu peux éventuellement faire ta suggestion dans ce fil :
http://user.services.openoffice.org/fr/ ... 27&t=17877

A+
OpenOffice 4.1.5 et LibreOffice 5.3.4 (par obligation) sous Windows 7
Nicolas
Membre hOOnoraire
Membre hOOnoraire
Messages : 121
Inscription : 30 nov. 2006 13:28
Localisation : Chambéry (73)

Re: Numérotation continue des documents

Message par Nicolas »

Hello,
ci j ai bien compris ton ptit souci, modifies la macro changer mois tel quel et ça devrait répondre à tes attentes.

Code : Tout sélectionner

Sub ChangerMois()
REM	appel sur ouverture du fichier
REM regarde si le mois en cours à changer depuis la dernière utilisation
REM si oui réinitialse la numérotation des factures, avoirs et devis
REM vérifie la présence du répertoire FactOOorPDF, le crée si il le faut
Dim mois as Integer
Dim monDoc as Object, monForm as Object
Dim leDossier as String
	REM appel de la procédure qui construit le quadrillage principal - Facture /
	modeleDeBase
	VerifierSource
	VerifierBase
	monDoc = thisComponent
	maFacture = monDoc.Sheets.getByName("Facture")
	If monDoc.CurrentController.ActiveSheet.Name <> "Facture" Then
		monDoc.CurrentController.ActiveSheet = maFacture
	End If
	mois = month(now)
'	If CInt(Mid(ChercherDernierDoc("TFacture", "NumeroFacture"), 2, 2)) = CInt(Mid(CStr(year(now)), 3,2)) Then
'		If CInt(Mid(ChercherDernierDoc("TFacture", "NumeroFacture"), 4, 2)) < mois Then
'			maFacture.getCellRangeByName("Q18").setValue(1)
'		ElseIf CInt(Mid(ChercherDernierDoc("TFacture", "NumeroFacture"), 4, 2)) = mois Then
'			maFacture.getCellRangeByName("Q18").setValue(CInt(Mid(ChercherDernierDoc("TFacture", "NumeroFacture"), 7)) + 1)
'		End If
'	Else
'		maFacture.getCellRangeByName("Q18").setValue(1)
'	End If
'	If CInt(Mid(ChercherDernierDoc("TDevis", "NumeroDevis"), 2, 2)) = CInt(Mid(CStr(year(now)), 3,2)) Then
'		If CInt(Mid(ChercherDernierDoc("TDevis", "NumeroDevis"), 4, 2)) < mois Then
'			maFacture.getCellRangeByName("Q19").setValue(1)
'		ElseIf CInt(Mid(ChercherDernierDoc("TDevis", "NumeroDevis"), 4, 2)) = mois Then
'			maFacture.getCellRangeByName("Q19").setValue(CInt(Mid(ChercherDernierDoc("TDevis", "NumeroDevis"), 7)) + 1)
'		End If
'	Else
'		maFacture.getCellRangeByName("Q19").setValue(1)
'	End If
'	If CInt(Mid(ChercherDernierDoc("TAvoir", "NumeroAvoir"), 2, 2)) = CInt(Mid(CStr(year(now)), 3,2)) Then
'		If CInt(Mid(ChercherDernierDoc("TAvoir", "NumeroAvoir"), 4, 2)) < mois Then
'			maFacture.getCellRangeByName("Q20").setValue(1)
'		ElseIf CInt(Mid(ChercherDernierDoc("TAvoir", "NumeroAvoir"), 4, 2)) = mois Then
'			maFacture.getCellRangeByName("Q20").setValue(CInt(Mid(ChercherDernierDoc("TAvoir", "NumeroAvoir"), 7)) + 1)
'		End If
'	Else
'		maFacture.getCellRangeByName("Q20").setValue(1)
'	End If
	monForm = maFacture.Drawpage.Forms.getByName("FormFacturier")
	REM appel de la procédure de choix d'un item - Facture /
	ChoisirItemListe(monForm, "ListBoxDoc", "  FACTURE")

	REM appel la fonction de recherche du répertoire courant - Facture /
	leDossier = DossierCourant(monDoc) & "FactOOorPDF"
	If Dir(leDossier,16) = "" Then
		MkDir leDossier
	End If
	monDoc.CurrentController.getControl(monForm.getByName("ComboBoxProd")).setText("")
	'CreerStatistiques
	'TotalFactAttente
End Sub
lorsque tu mets une apostrophe devant la ligne, la macro en cours d'éxecution saute cette ligne et ne tiens compte du code.

@+
Nicolas.
OoO 3.0.1 XP home SP3
Marijani
NOOuvel adepte
NOOuvel adepte
Messages : 19
Inscription : 27 févr. 2010 13:34

Re: Numérotation continue des documents

Message par Marijani »

Bonsoir et merci à Nicolas pour ses pistes ;
en fait, c'était bien comme tu le proposais sauf qu'il faut quand même laisser la ligne qui assigne le numéro de la facture, indépendamment du mois et de l'année : le code de la macro devient alors :

Code : Tout sélectionner

   If monDoc.CurrentController.ActiveSheet.Name <> "Facture" Then
      monDoc.CurrentController.ActiveSheet = maFacture
   End If
   mois = month(now)
'   If CInt(Mid(ChercherDernierDoc("TFacture", "NumeroFacture"), 2, 2)) = CInt(Mid(CStr(year(now)), 3,2)) Then
'      If CInt(Mid(ChercherDernierDoc("TFacture", "NumeroFacture"), 4, 2)) < mois Then
'         maFacture.getCellRangeByName("Q18").setValue(1)
'      ElseIf CInt(Mid(ChercherDernierDoc("TFacture", "NumeroFacture"), 4, 2)) = mois Then
          maFacture.getCellRangeByName("Q18").setValue(CInt(Mid(ChercherDernierDoc("TFacture", "NumeroFacture"), 7)) + 1)
'      End If
'   Else
'      maFacture.getCellRangeByName("Q18").setValue(1)
'   End If
Et la même modification pour les devis et les avoirs

Encore merci et bonne semaine à tous !

Le sujet peut être marqué comme résolu
Dernière modification par Flip le 07 mars 2010 22:19, modifié 1 fois.
Raison : Balisage CODE
OpenOffice 3.2 sur XP SP3