Numéroter automatiquement les devis [Résolu]

Signaler
Messages postés
84
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
19 mai 2011
-
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
-
bonjour j'ai une erreur 5825 sur mon code vba
j'ai fait une macro pour automatiser les numéro des devis  sur word je vous donne le code, j'ai beau chercher je trouve pas la solution je pense que c'est une erreur de variable sur la ligne en couleur

Sub AutoOpen()
Dim vPremierNuméro As Single
Dim vNuméro As Single
Dim vNumérotation As String
Dim vNomDocument As String
Dim vChemin As String




vChemin = "c:\GME\devis"
If ActiveDocument.Variables.Count = 0 Then
    vPremierNuméro = 393
    ActiveDocument.Variables.Add Name:="NumDevis", Value:=vPremierNuméro
End If
vNuméro = ActiveDocument.Variables("NumDevis").Value     
ActiveDocument.Variables("NumDevis").Value = vNuméro + 1
ActiveDocument.SaveAs vChemin & "Devis modèle.doc"
vNumérotation = Right("0000" & vNuméro, 6)
vNumérotation = vNumérotation & "/" & Year(Now)
ActiveDocument.Bookmarks("NuméroDevis").Range = vNumérotation
vNomDocument = vChemin & Year(Now) & "-" & Right("0000" & vNuméro, 6) & ".doc"
ActiveDocument.SaveAs vNomDocument


For Each vVar In ActiveDocument.VariablesIf vVar.Name "note" Then vIndex aVar.Index
Next
If vIndex = 0 Then
ActiveDocument.Variables.Add Name:="note", Value:=54
Else
ActiveDocument.Variables(vIndex).Value = 54
End If
If Variables.Count > 0 Then
ActiveDocument.Variables("note").Delete
End If
End Sub
Sub SupprimerVariables()
Dim vVar
For Each vVar In ActiveDocument.Variables
  vVar.Delete
Next
End Sub


merci je vais continer à chercher

dédé[8D]

4 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
17
Alors crée un fichier texte avec la valeur du dernier numéro, il ne doit y avoir que ce nombre dans le fichier texte.

Ensuite insère ça dans ta procédure :

Dim colLigne As New Collection
Dim ff As Integer, vNumero As Single
ff = FreeFile

Dim sLigne As String
'Lecture du fichier
Open "C:\Chemin\Nom_Fichier.txt" For Input As #ff
Line Input #ff, sLigne
colLigne.Add sLigne
Close #ff

vNumero = CSng(sLigne) + 1 'récupération du nombre


'Réecriture du fichier
Dim i As Integer
Open "C:\Chemin\Nom_Fichier\Adobe.txt" For Output As #ff

Print #ff, vNumero

Close #ff

A pratir de là, vNumero possède le bon nombre pour tes devis

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
17
RECTIFICATION CI DESSOUS :

'Réecriture du fichier
Dim i As Integer
Open "C:\Chemin\Nom_Fichier.txt" For Output As #ff '<= y avait une erreur là

Print #ff, vNumero

Close #ff

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
17
Salut,

essaie de remplacer
vNuméro = ActiveDocument.Variables("NumDevis").Value par
vNuméro = CSng(ActiveDocument.Variables("NumDevis").Value)

Ayant déclaré vNuméro en Single, peut-être faut-il convertir les données de la variable en Single aussi.

Si ça marche pas, peut-etre que tu peux écrire dans un fichier texte et ainsi récupérer sa valeur avant ajout de 1.

@++

--Mortalino--
Le Mystérieux Chevalier "Provençal, le Gaulois"
N'oubliez pas de lire le règlement !
Messages postés
84
Date d'inscription
vendredi 25 juin 2004
Statut
Membre
Dernière intervention
19 mai 2011

salut,
Merci pour ta réponse mais ça me donne la même erreur 

dédé[8D]