gros gros probleme la fonction d'enregistrement automatique de mon fichier marche pu

patrick965

XLDnaute Impliqué
Bonjour et merci de prendre le tem de me lire
je vous joins mon ficher parce que j'ai un gros problème urgent...

sans raison apparente lorsque j'étais en train de modifier des apparence dans ma fiche Excel plus rien ne fonctionne et un message d'erreur apparait quand je veut enregistrer

Habituellement quand j'entre un nom de client et que je clique sur enregistrer la macro ou le code crée un ficher au nom du client et enregistre-le tous dans ce fichier.

Depuis ce soir rien ne marche et je ne comprends pas pourquoi et ce qui est le plus blizzard c'est que mes autres sauvegarde précédant non plus fonctionne plus il en a une datée du 26-02-2015 qui fonctionne très bien, mais depuis j'ai travaillé environs 50h pour continuer a la modifier.

merci beaucoup de me dire ce qui a clocher et pourquoi

vraiment merci
 

Pièces jointes

  • SOUMISSION BATIMENT TRICOLOR test 24-02-2015.xlsm
    174.5 KB · Affichages: 62
  • SOUMISSION BATIMENT TRICOLOR test 24-02-2015.xlsm
    174.5 KB · Affichages: 68
  • SOUMISSION BATIMENT TRICOLOR test 24-02-2015.xlsm
    174.5 KB · Affichages: 75
  • voici mon probleme que je navais pas avant.jpg
    voici mon probleme que je navais pas avant.jpg
    53.4 KB · Affichages: 71
  • voici mon probleme que je navais pas avant.jpg
    voici mon probleme que je navais pas avant.jpg
    53.4 KB · Affichages: 74
  • voici mon probleme que je navais pas avant.jpg
    voici mon probleme que je navais pas avant.jpg
    53.4 KB · Affichages: 62
Dernière édition:

patrick965

XLDnaute Impliqué
Re : gros gros probleme la fonction d'enregistrement automatique de mon fichier march

bonjour jobs

je me demandais une question toute simple peu on enlever l'écriture gras nom pas au titre Nom,Adresse,Ville,Province,code postalTéléphone,courriel etcmais seulement au réponse de c'est question et ce sans séparer les case parce que comme tu peu le constater je ne peu pas mettre le titre dans une cellule et la réponse dans une autre.
il y a t'il une solution .

ps j'ai vue sa pire que la réalité le lien Google map je pensais a des formule désoler s'étais ma faute.

vraiment un énorme merci pour ton précieux tem cher amis.
 

job75

XLDnaute Barbatruc
Re : gros gros probleme la fonction d'enregistrement automatique de mon fichier march

Re,

je me demandais une question toute simple peu on enlever l'écriture gras nom pas au titre

camarchepas vous a dit quelque part de défusionner les cellules, c'est le plus simple, voyez ce fichier (4).

Dans ce fichier, pour finir, un complément qui devrait vous plaire.

La macro Workbook_BeforeSave crée un 3ème fichier "logistic.xlsm", identique au fichier d'origine, avec toutes ses feuilles.

Mais la différence est qu'on y crée le nom défini (masqué) "FichierCopié".

Ce nom permet de neutraliser les macros Workbook_Open BeforeClose et BeforeSave :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
If Not IsError([FichierCopié]) Then Exit Sub 'neutralisation
Dim nom$, chemin$, wb As Workbook
With Sheets("Facture de service")
  .Activate
  nom = Application.Proper(.[D10]) 'majuscule en tête
  If nom = "" Then
    MsgBox "Le nom n'a pas été entré..."
    .[D10].Select
  Else
    Cancel = True
    chemin = Me.Path & "\" 'chemin du dossier à adapter
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    On Error Resume Next
    '---création du fichier facture .pdf---
    MkDir chemin & nom 'création du sous-dossier s'il n'existe pas
    .ExportAsFixedFormat xlTypePDF, chemin & nom & "\" & .[F4]
    If Dir(chemin & nom & "\*") = "" Then _
      MsgBox "Caractère interdit dans le nom !", 48: Exit Sub
    Application.EnableEvents = False
    '---création du fichier facture .xlsx---
    Set wb = Workbooks.Add(xlWBATWorksheet)
    .Copy After:=wb.Sheets(1)
    wb.Sheets(1).Delete
    wb.SaveAs chemin & nom & "\" & .[F4] 'enregistrement
    wb.Close
    '---création du fichier logistic.xlsm---
    Me.SaveCopyAs chemin & nom & "\" & .[F4] & "_logistic.xlsm"
    Set wb = Workbooks.Open(chemin & nom & "\" & .[F4] & "_logistic.xlsm")
    wb.Names.Add "FichierCopié", True, Visible:=False 'nom défini masqué
    wb.Close True
    Application.EnableEvents = True
    NomMemo = .[D10] 'mémorisation
    '---mémorisation du numéro de facture---
    Workbooks("Numero_Facture").Close False 'si le fichier est ouvert
    Set wb = Workbooks.Add(xlWBATWorksheet)
    .[F4].Copy wb.Sheets(1).[A1]
    wb.Sheets(1).Protect "TOTO" 'mot de passe à adapter
    wb.SaveAs chemin & "Numero_Facture" 'enregistrement
    wb.Close
  End If
End With
End Sub
Bonne soirée.
 

Pièces jointes

  • SOUMISSION BATIMENT TRICOLOR test 24-02-2015(4).xlsm
    186.6 KB · Affichages: 45

patrick965

XLDnaute Impliqué
Re : gros gros probleme la fonction d'enregistrement automatique de mon fichier march

c'est
vraiment super ca c'est exactement ce que je voulais tu est un roi tu est formidable une énorme merci a toi et toute ceux qui mon donner un coup de main.
 

job75

XLDnaute Barbatruc
Re : gros gros probleme la fonction d'enregistrement automatique de mon fichier march

Re,

Cette solution est nettement meilleure car elle évite d'ouvrir le 3ème fichier créé :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
If Not IsError([FichierCopié]) Then Exit Sub 'neutralisation
Dim nom$, chemin$, wb As Workbook
With Sheets("Facture de service")
  .Activate
  nom = Application.Proper(.[D10]) 'majuscule en tête
  If nom = "" Then
    MsgBox "Le nom n'a pas été entré..."
    .[D10].Select
  Else
    Cancel = True
    chemin = Me.Path & "\" 'chemin du dossier à adapter
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    On Error Resume Next
    '---création du fichier facture .pdf---
    MkDir chemin & nom 'création du sous-dossier s'il n'existe pas
    .ExportAsFixedFormat xlTypePDF, chemin & nom & "\" & .[F4]
    If Dir(chemin & nom & "\*") = "" Then _
      MsgBox "Caractère interdit dans le nom !", 48: Exit Sub
    '---création du fichier facture .xlsx---
    Set wb = Workbooks.Add(xlWBATWorksheet)
    Application.EnableEvents = False
    .Copy After:=wb.Sheets(1)
    wb.Sheets(1).Delete
    Application.EnableEvents = True
    wb.Sheets(1).Cells.Validation.Delete 'pour détruire les liaisons
    wb.SaveAs chemin & nom & "\" & .[F4] 'enregistrement
    wb.Close
    '---création du fichier service.xlsm---
    Me.Names.Add "FichierCopié", True, Visible:=False 'nom défini masqué
    Me.SaveCopyAs chemin & nom & "\" & .[F4] & "_service.xlsm"
    Me.Names("FichierCopié").Delete
    NomMemo = .[D10] 'mémorisation
    '---mémorisation du numéro de facture---
    Workbooks("Numero_Facture").Close False 'si le fichier est ouvert
    Set wb = Workbooks.Add(xlWBATWorksheet)
    .[F4].Copy wb.Sheets(1).[A1]
    wb.Sheets(1).Protect "TOTO" 'mot de passe à adapter
    wb.SaveAs chemin & "Numero_Facture" 'enregistrement
    wb.Close
  End If
End With
End Sub
"logistic.xlsm" ne me plaisait pas, je l'ai remplacé par "service.xlsm".

Fichier (5).

Edit : suppression des liste de validation pour détruire les liaisons dans le fichier .xlsx.

Bonne nuit.
 

Pièces jointes

  • SOUMISSION BATIMENT TRICOLOR test 24-02-2015(5).xlsm
    186.5 KB · Affichages: 46
Dernière édition:

job75

XLDnaute Barbatruc
Re : gros gros probleme la fonction d'enregistrement automatique de mon fichier march

Re,

Une dernière chose.

Quand on ouvrait le fichier .xlsx il y avait un message causé par les liaisons des listes de validation.

Je viens de les supprimer dans le fichier (5) du post #19 :

Code:
wb.Sheets(1).Cells.Validation.Delete 'pour détruire les liaisons
A+
 

job75

XLDnaute Barbatruc
Re : gros gros probleme la fonction d'enregistrement automatique de mon fichier march

Bonjour patrick965, le forum,

A la réflexion la solution précédente ne me paraît pas la meilleures solution.

Au lieu de créer le fichier service.xlsm par un SaveCopyAs il vaut mieux le créer par un SaveAs de manière à ce que ce soit lui qui reste le fichier actif.

Ensuite à chaque modification de ce fichier les fichiers .xlsx et .pdf seront mis à jour.

Je rentre ce matin à Paris, je ferai les modifications nécessaires dans quelques heures.

Bonne journée.

A+
 

job75

XLDnaute Barbatruc
Re : gros gros probleme la fonction d'enregistrement automatique de mon fichier march

Re,

Voici donc le fichier (6) définitif avec ce code dans ThisWorkbook :

Code:
Dim numero$ 'mémorisation

Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
'interdit la modification du numéro de facture
Application.EnableEvents = False
With Sheets("Facture de service")
  If Sh.Name = .Name Then _
    If Not Intersect(Source, .[F4]) Is Nothing Then .[F4] = numero
End With
Application.EnableEvents = True
End Sub

Private Sub Workbook_Open()
If Not IsError([FichierCopié]) Then Exit Sub 'neutralisation
Dim chemin$, nomfich$, n As Variant
Sheets("Facture de service").Activate 'au cas où...
'---date du jour---
[F5] = Date
'---numéro de facture---
chemin = Me.Path & "\" 'chemin du dossier à adapter
nomfich = Dir(chemin & "Numero_Facture.xls*")
If nomfich <> "" Then
  n = ExecuteExcel4Macro("'" & chemin & "[" & nomfich & "]Feuil1'!R1C1")
  n = IIf(Left(n, 4) = CStr(Year(Date)), Val(Mid(n, 9)), 0)
End If
numero = "'" & Format(Date, "yyyymmdd") & Format(n + 1, "0000")
[F4] = numero
End Sub

Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
'Si l'on veut modifier le fichier modèle (vide) laisser le nom vide
Dim nom$, chemin$, wb As Workbook
With Sheets("Facture de service")
  .Activate
  If IsError([FichierCopié]) Then nom = Application.Proper(.[D10]) & "\"
  'si l'on est sur le fichier service.xlsm la variable nom = ""
  If nom = "\" Then
    MsgBox "Le nom n'a pas été entré..."
    .[D10].Select
  Else
    Cancel = True
    chemin = Me.Path & "\" 'chemin du dossier
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    On Error Resume Next
    '---création/modification du fichier facture .pdf---
    MkDir chemin & nom 'création du sous-dossier
    .ExportAsFixedFormat xlTypePDF, chemin & nom & .[F4]
    If Dir(chemin & nom & "*") = "" Then _
      MsgBox "Caractère interdit dans le nom !", 48: Exit Sub
    Application.EnableEvents = False
    '---création/modification du fichier facture .xlsx---
    Set wb = Workbooks.Add(xlWBATWorksheet)
    .Copy After:=wb.Sheets(1)
    wb.Sheets(1).Delete
    wb.Sheets(1).Cells.Validation.Delete 'pour détruire les liaisons
    wb.SaveAs chemin & nom & .[F4] 'enregistrement
    wb.Close
    '---création/modification du fichier service.xlsm---
    Me.Names.Add "FichierCopié", True, Visible:=False 'nom défini masqué
    Me.SaveAs chemin & nom & .[F4] & "_service", 52 'enregistrement
    Application.EnableEvents = True
    '---mémorisation du numéro de facture---
    If nom <> "" Then
      Workbooks("Numero_Facture").Close False 'si le fichier est ouvert
      Set wb = Workbooks.Add(xlWBATWorksheet)
      .[F4].Copy wb.Sheets(1).[A1]
      wb.Sheets(1).Protect "TOTO" 'mot de passe à adapter
      wb.SaveAs chemin & "Numero_Facture" 'enregistrement
      wb.Close
      Application.ScreenUpdating = True
      MsgBox "Vous êtes maintenant sur le fichier '" & .[F4] & "_service.xlsm'." _
        & vbLf & "Dans le dossier '" & Left(nom, Len(nom) - 1) & "'."
    End If
  End If
End With
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
If IsError([FichierCopié]) Then Me.Saved = True 'évite l'invite
End Sub
A+
 

Pièces jointes

  • SOUMISSION BATIMENT TRICOLOR test 24-02-2015(6).xlsm
    187.3 KB · Affichages: 44

job75

XLDnaute Barbatruc
Re : gros gros probleme la fonction d'enregistrement automatique de mon fichier march

Bonjour patrick965,

Pour que ce soit parfait il faut supprimer les caractères interdits en D10 :

Code:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Source As Range)
'interdit la modification du numéro de facture et supprime les caractères interdits
If Sh.Name <> "Facture de service" Then Exit Sub
If Intersect(Source, Sh.[F4,D10]) Is Nothing Then Exit Sub
Dim nom$, i As Byte
Application.EnableEvents = False
Sh.[F4] = numero
nom = Sh.[D10]
For i = 1 To 9
  nom = Replace(nom, Mid("\/:*?""<>|", i, 1), "")
Next
Sh.[D10] = nom
Application.EnableEvents = True
End Sub
Fichier (7).

A+
 

Pièces jointes

  • SOUMISSION BATIMENT TRICOLOR test 24-02-2015(7).xlsm
    187.6 KB · Affichages: 46
Dernière édition:

patrick965

XLDnaute Impliqué
Re : gros gros probleme la fonction d'enregistrement automatique de mon fichier march

bonjour jobs75

Je Vien d'avoir une petite question...
est t'il possible que lorsque je crée une soumission et que je l'enregistre au nom du client et que je lui envoie et que par exemple le client veut apporter des modifications plus tard dans sa soumission.
Serais'il possible que lorsque je retourne dans la soumission du client et que j'ais apporter les modifications demander que lorsque je clique sur enregistrer qu'il y ait un (a) au bout du numéro de facture et a la deuxième modification un (b) et a la 3 iem modification un (c) et ainsi de suite... mais que la méthode reste la même que vous avez créée pour les enregistrements sauf qu'après le changement que les 3 nouveaux fichiers seront crée avec la lettre correspondante au nombre de foies qu'un changement aura été fait et enregistrer.
PS: je ne veux pas qu'une lettre apparaisse si je vais juste consulter la soumission, mais bien juste a l'enregistrement d'un changement.

Merci dieu lol merci jobs75 merci beaucoup...
 

job75

XLDnaute Barbatruc
Re : gros gros probleme la fonction d'enregistrement automatique de mon fichier march

Re,

Pas de problème mais au lieu des indices (a) (b) (c)... il est plus logique d'utiliser (1) (2) (3)... :

Code:
'---numero de la modification---
Nmodif = 1
Nmodif = [FichierCopié] + 1
Me.Names.Add "FichierCopié", Nmodif, Visible:=False 'nom défini masqué
Les fichiers facture (2) (3)... se créent à chaque enregistrement du fichier service.xlsm.

Donc ne l'enregistrer que quand c'est bien nécessaire.

Fichier (8).

A+
 

Pièces jointes

  • SOUMISSION BATIMENT TRICOLOR test 24-02-2015(8).xlsm
    187.9 KB · Affichages: 46

patrick965

XLDnaute Impliqué
Re : gros gros probleme la fonction d'enregistrement automatique de mon fichier march

bonjour maitre

merci pour la réponce si rapide
la raison pour les quel j'aimerais avoir des a,b,c,d,e etc est juste pour différance plus rapidement a l'œil la différance vue le numéro de facture a beaucoup de chiffre .

si on peu mettre un - a,-b ( un tiret avant les lettres sans serais méga sympa)

merci énormément jobs
 

Statistiques des forums

Discussions
311 720
Messages
2 081 910
Membres
101 837
dernier inscrit
Ugo