Problème N°auto sur modele

Manu13

XLDnaute Occasionnel
Bonsoir le Forum,

j'ai un petit problème de numérotation auto sur un fichier modele.xlt
j'apelle ce fichier via un autre classeur par un bouton.
Lors de ça première ouverture le N° s'incremente +1(là pas de problème) je fais une sauvegarde auto par un bouton sur ce même fichier avec nom fichier et chemin dossier.

lorsque je rapelle le fichier modele plus d'incrementation

code du fichier modele dans ThisWorkBook

Private Sub Workbook_Open()

If ActiveWorkbook.Path = "" Then
Sheets("Feuil1").Range("G2") = Sheets("Feuil1").Range("G2") + 1
ActiveWorkbook.SaveCopyAs (Application.TemplatesPath & "Modele.xlt")
End If
End Sub

code du bouton sauvegarde
Sub sauve()
Dim Chemin$, Client$, Fichier$

Chemin = "C:\Documents and Settings\Emmanuel\Mes documents\DossierA\"
Client = Range("B5")
Fichier = Range("G2") & ".xls"
Application.DisplayAlerts = False
If Dir(Chemin & Client) = " " Then MkDir Chemin & Client
ActiveWorkbook.SaveAs Chemin & Client & "\" & Fichier

Application.DisplayAlerts = True

End Sub


si vous avez une idée c'est avec plaisir

bonne soirée à tous
manu
 

Papou-net

XLDnaute Barbatruc
Re : Problème N°auto sur modele

Bonsoir manu13,

Essaies en modifiant ton code comme ça :

Code:
Private Sub Workbook_Open()

[COLOR="Blue"][B]Sheets("Feuil1").Range("G2") = Sheets("Feuil1").Range("G2") + 1[/B][/COLOR]
If ActiveWorkbook.Path = "" Then
ActiveWorkbook.SaveCopyAs (Application.TemplatesPath & "Modele.xlt")
End If
End Sub

Espérant t'avoir aidé.

Cordialement, et bonnes fêtes.
 

Papou-net

XLDnaute Barbatruc
Re : Problème N°auto sur modele

Bonsoir Papou-net,

Merci pour ta réponse
l'incrementation se fait , mais ne garde pas le dernier N° incrementé!!!

Cordialement,
manu

As-tu fait dérouler ton code pas-à-pas (touche F8 dans l'éditeur VBA) ?
J'ai un doute sur ta ligne :

Code:
If ActiveWorkbook.Path = "" Then

la condition ne doit pas s'exécuter car le classeur actif possède bien un chemin de répertoire.

Je me pose donc une question sur l'utilité de ce test.

Cordialement.
 

Manu13

XLDnaute Occasionnel
Re : Problème N°auto sur modele

Non, je le fait de suite

bon je viens de le faire, il ne prend pas en compte la ligne

ActiveWorkbook.SaveCopyAs (Application.TemplatesPath & "Modele.xlt")


il passe directement de
If ActiveWorkbook.Path = "" Then

à

End If
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Problème N°auto sur modele

Non, je le fait de suite

bon je viens de le faire, il ne prend pas en compte la ligne

ActiveWorkbook.SaveCopyAs (Application.TemplatesPath & "Modele.xlt")


il passe directement de
If ActiveWorkbook.Path = "" Then

à

End If

Ca me semble normal, puisque le chemin de répertoire n'est pas vide.
Essaies en retirant le If...Then tout en conservant le
ActiveWorkbook.SaveCopyAs (Application.TemplatesPath & "Modele.xlt")

Cordialement, et à +, je pars me coucher.
 

Manu13

XLDnaute Occasionnel
Re : Problème N°auto sur modele

Sur la réflexion de Papou-net, j'ai retiré la ligne

If ActiveWorkbook.Path = "" Then

effectivement, maintenant la ligne

ActiveWorkbook.SaveCopyAs (Application.TemplatesPath & "Modele.xlt")

est lu

et pourtant le dernier n° n'est pas sauvegardé!!!

bon, je vais continué à chercher

bonne nuit à tous

Manu

Edit: Papou-net on c'est croisé et j'avais anticipé ton dernier message....
bonne nuit
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Problème N°auto sur modele

Ca me semble normal, puisque le chemin de répertoire n'est pas vide.
Essaies en retirant le If...Then tout en conservant le
ActiveWorkbook.SaveCopyAs (Application.TemplatesPath & "Modele.xlt")

Cordialement, et à +, je pars me coucher.

Bonjour manu13,

Cette nuit, j'étais un peu fatigué.
Je voulais dire :

Code:
Private Sub Workbook_Open()
Sheets("Feuil1").Range("G2") = Sheets("Feuil1").Range("G2") + 1
ActiveWorkbook.SaveCopyAs (Application.TemplatesPath & "Modele.xlt")
End Sub

Est-ce bien ce que tu as fait ?

Cordialement.
 

Manu13

XLDnaute Occasionnel
Re : Problème N°auto sur modele

Bonjour Papou-net et le Forum,

Bonjour manu13,

Cette nuit, j'étais un peu fatigué.
Je voulais dire :

Code:
Private Sub Workbook_Open()
Sheets("Feuil1").Range("G2") = Sheets("Feuil1").Range("G2") + 1
ActiveWorkbook.SaveCopyAs (Application.TemplatesPath & "Modele.xlt")
End Sub

Est-ce bien ce que tu as fait ?

Cordialement.

Oui.

j'ai essayé aussi à la fermeture, avec Workbook_beforeclose(cancel as boolean)
mais sans résultat......

Cordialement,
Manu
 

Papou-net

XLDnaute Barbatruc
Re : Problème N°auto sur modele

Bonjour Papou-net et le Forum,



Oui.

j'ai essayé aussi à la fermeture, avec Workbook_beforeclose(cancel as boolean)
mais sans résultat......

Cordialement,
Manu

Alors là, je ne comprends plus. Si tu enregistres ton fichier manuellement, est-ce que le problème persiste ?

Si oui, peux-tu joindre une copie de ton fichier ?

Cordialement.
 

Papou-net

XLDnaute Barbatruc
Re : Problème N°auto sur modele

Voilà,

Bouton sur classeur1, appelle modele.xlt

Cordialement,
manu

Alors j'ai copié tes 2 fichiers dans un répertoire que j'ai créé sur mon disque dur, puis j'ai ajouté le code suivant, dans le fichier .xlt (et ça fonctionne quand on ferme ce fichier avec la croix de fermeture) :

Code:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
ActiveWorkbook.Close SaveChanges:=True
End Sub

Par contre, j'ai détecté un problème dans ton module de sauvegarde, car la variable 'Client' est vide, et c'est pour cette raison, je pense, que la sauvegarde ne se fait pas par le programme.

Autre source d'interrogation :

Code:
If Dir(Chemin & Client) = " " Then MkDir Chemin & Client

Je ne pense pas que la syntaxe soit valable, mais je ne maitrise pas encore la manipulation des fichiers et répertoires en VBA. Je vais cgercher sur le Net des informations à ce sujet, elles pourront toujours m'être utile.

Quoiqu'il en soit, j'espère t'avoir quand-même aidé à avancer (c'est plus facile avec un fichier exemple).

Cordialement.
 

Papou-net

XLDnaute Barbatruc
Re : Problème N°auto sur modele

C'est bien ce que je pensais, le MkDir ne fonctionne pas et je ne sais pas pour quelles raisons.

En fouillant sur le Web, j'ai trouvé un module, écrit par Ange Ounis, et que j'ai légèrement modifié. Je l'ai testé, il est OK.

Il crée les sous-répertoires, il ne te reste plus qu'à écrire le code pour enregistrer ton fichier dans ce répertoire.

Espérant t'avoir aidé.

Cordialement.

Code:
Sub sauve()
' par Ange Ounis, adapté par Papou-net

Dim S As String, D As String, F As String, i As Byte

'dossier à trouver ou créer
S = "C:\Documents and Settings\Emmanuel\Mes documents"
  'si pas trouvé, on le crée sous dossier par sous dossier
If Dir(S, vbDirectory) = "" Then
  D = Split(S, "\")(0) & "\"
  For i = LBound(Split(S, "\")) + 1 To UBound(Split(S, "\"))
    D = D & Split(S, "\")(i) & "\"
    On Error Resume Next
    MkDir D
    On Error GoTo 0
  Next
End If
End Sub
 

Manu13

XLDnaute Occasionnel
Re : Problème N°auto sur modele

Bonsoir Papou-net,

C'est bien ce que je pensais, le MkDir ne fonctionne pas et je ne sais pas pour quelles raisons.

[/CODE]

Tiens c'est bizarre, ça tourne sans problème sur mon ordi
le dossier se créer en fonction du nom en B5, et si il existe, le fichier se place directement dedans.

Bon, sinon pour ton code , déjà merci à toi d'avoir pris de ton temps pour résoudre mon problème, je n'arrive pas à le faire tourner, ça fait deux bonnes heures que j'essaie....

Pour commencer

Lorsque j'ouvre le fichier modele j'ai une erreur "impossible d'accéder à Modele.xlt
bug sur la ligne "ActiveWorkbook.SaveCopyAs (Application.TemplatesPath & "Modele.xlt")"

ensuite bug sur la sauvegarde

Sub sauve()
' par Ange Ounis, adapté par Papou-net

Dim S As String, D As String, F As String, i As Byte
D = Range("B5")
F = Range("G2") & ".xls"

'dossier à trouver ou créer
S = "C:\Documents and Settings\Emmanuel\Mes documents\"
'si pas trouvé, on le crée sous dossier par sous dossier
If Dir(S, vbDirectory) = "" Then
D = Split(S, "\")(0) & "\"
For i = LBound(Split(S, "\")) + 1 To UBound(Split(S, "\"))
D = D & Split(S, "\")(i) & "\"
On Error Resume Next
MkDir D
On Error GoTo 0
Next
End If
ActiveWorkbook.SaveAs S & D & "\" & F

End Sub

c'est sur la ligne activeworkbook.saveas

Ne peut accéder au fichier c:\mes doc
le nom du fichier ou le n'existe pas

je me suis tromper quelque part!!!

ça commence à devenir une histoire de fou.......

Bonne soirée
Cordialement,
Manu
 

Papou-net

XLDnaute Barbatruc
Re : Problème N°auto sur modele

Tiens c'est bizarre, ça tourne sans problème sur mon ordi
le dossier se créer en fonction du nom en B5, et si il existe, le fichier se place directement dedans.
Chez moi, ça plante : "Fichier ou répertoire non trouvé"

Pour commencer

Lorsque j'ouvre le fichier modele j'ai une erreur "impossible d'accéder à Modele.xlt
bug sur la ligne "ActiveWorkbook.SaveCopyAs (Application.TemplatesPath & "Modele.xlt")"

ensuite bug sur la sauvegarde

Comment reussis-tu à l'ouvrir, alors ?

c'est sur la ligne activeworkbook.saveas

Ne peut accéder au fichier c:\mes doc
le nom du fichier ou le n'existe pas

je me suis tromper quelque part!!!

Apparemment, il y a redondance avec les variables S et D. Est-ce que cette modification fonctionne ?

Code:
ActiveWorkbook.SaveAs D & "\" & F

Bonne soirée.
 

Discussions similaires

Statistiques des forums

Discussions
312 490
Messages
2 088 881
Membres
103 981
dernier inscrit
vinsalcatraz