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

patrick965

XLDnaute Occasionnel
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
 

Fichiers joints

Dernière édition:

camarchepas

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

Bonjour ,

rien que 4 posts différents pour la même application ......

et je n'ai pas été voir sur d'autres sites.


En fait tu essaies de coller des morceaux de codes les uns en dessous des autres , bien sur cela ne fonctionne pas , alors hop l'on reposte .

tu as des idées sur tous enfin surtout des idées , mais en courant dans tous les sens tu fini par nous y perdre et ton montage devient un chateau de cartes

Je ne bosse pas comme cela , donc pour ma part j'arrete ce sujet
 

patrick965

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

Bonjour
je ne poste pas pour la même chose si tu regardes bien la première fois étais pour mettre Google map sur ma feuille ensuite changer mon code pour que celui-ci enregistre, mais soumission en pdf et en Excel avec le numéro de facture .
Mais comme j'ai continué a travaillé a cherché et a me débrouiller en attendant d'avoir de l'aide pour c'est post j'ais trouver comment faire pour Google map donc ça, c'est suer, mais lus tard j'ai remarquée que mon document était défectueux je ne peu plus enregistrer comme avant et pourtant je ne croie as avoir changer rien dans le code et j'ai cherché pendants des heurs sans trouver la raison et ce que je trouvais des lus bizarre c'est que c'est comme ca pour toute, mais document Excel et pourtant je nais pas travailler avec les autres.
Voilà ce que j'essaie de faire comprenez que je travaille sur ce projet depuis plus de 1 an et je chercher a apprendre, mais comprenez que dais foie on ce bute a un mur.

Merci de votre aide et Sacher que rien en moi ne cherche a mal faire les choses. Mais jais presque pleurer quand jais vu mon travail arrêter d'enregistrer et les autres aussi .

Merci de prendre du temps, pour moi j'en suis très reconnaissant.
 

Fichiers joints

job75

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

Bonjour patrick965, salut camarchepas,

Le code qui se trouve dans ThisWorkbook c'est moi qui vous l'avais donné l'an passé.

A l'époque il n'y avait que ce code, mais vous en avez rajouté, en particulier une macro Worksheet_Activate qui sème le pataquès...

Cependant on peut y remédier en ajoutant des Application.EnableEvents dans la macro Workbook_BeforeSave :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
Dim der%, nom$, chemin$, wb As Workbook
With Sheets("Facture de service")
  .Activate
  der = InStr(.[C10], ":")
  If der = 0 Then MsgBox _
    "Il faut : (2 points) après ""Nom"" en C10 !!", 48: Exit Sub
  nom = Application.Trim(Mid(.[C10], der + 1))
  nom = Application.Proper(nom) 'majuscule en tête pour le classement
  If nom = "" Then
    MsgBox "Le nom n'a pas été entré..."
    .[C10].Select
  Else
    Cancel = True
    chemin = Me.Path & "\" 'chemin du dossier à adapter
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.EnableEvents = False 'à cause de Worksheet_Activate
    On Error Resume Next
    '---création du fichier facture---
    Set wb = Workbooks.Add(xlWBATWorksheet)
    .Copy After:=wb.Sheets(1)
    wb.Sheets(1).Delete
    Application.EnableEvents = True
    wb.Sheets(1).Name = .[F4]
    MkDir chemin & nom 'création du sous-dossier s'il n'existe pas
    wb.SaveAs chemin & nom & "\" & .[F4] 'enregistrement
    wb.Close
    If Dir(chemin & nom & "\*") = "" Then _
      MsgBox "Caractère interdit dans le nom !", 48: Exit Sub
    NomMemo = .[C10] '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
Fichier joint.

Nota 1 : j'ai déplacé Cancel = True pour rendre possible l'enregistrement du fichier quand le nom n'est pas entré.

Nota 2 : sous Excel 2007 le fichier facture créé est un .xlsx sans macro.

Sous Excel 2003 ce sera un .xls avec la macro Worksheet_Activate qui risque de créer le pataquès...

A+
 

Fichiers joints

Dernière édition:

patrick965

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

Bonjour job75,camarchepas
un gros merci jais tellement mal filer quand jais vu toute arrêter comme s.étais je vous en suis très reconnaissant
je me demandais quand le fichier ce avec a l'intérieur la soumission Excel xlsm serait'il possible que tous les feuille et sheet qui son avec ma feuille soumission s'enregistre avec parce que ceux-ci calculent les matériaux nécessaires pour cette job la.
De plus je me demandais s’il serait possible qu'un pdf de la feuille de facture de service aussi ce crée avec le numéro de facture et s'enregistre avec le fichier xlsm dans le dossier au nom du client.

Jasper que vous allez bien comprendre ce que je cherche a faire..

Vraiment merci les amis vous être pour mois de très grande aide.

cordialement
Patrick965
 

job75

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

Bonjour patrick965,

Jasper que vous allez bien comprendre ce que je cherche a faire..
Oui mais ce que vous cherchez à faire ne va pas du tout :rolleyes:

Les macros doivent être réservées au fichier modèle.

Il ne faut pas qu'elles existent dans le fichier créé et c'est pour ça qu'on ne copie qu'une seule feuille.

A+
 

job75

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

Re,

Je viens d'ajouter .Activate dans la macro du post #4, c'est logique...

Si maintenant, sur Excel 2007, vous voulez créer un fichier .pdf au lieu d'un fichier .xlsx c'est simple :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
Dim der%, nom$, chemin$, wb As Workbook
With Sheets("Facture de service")
  .Activate
  der = InStr(.[C10], ":")
  If der = 0 Then MsgBox _
    "Il faut : (2 points) après ""Nom"" en C10 !!", 48: Exit Sub
  nom = Application.Trim(Mid(.[C10], der + 1))
  nom = Application.Proper(nom) 'majuscule en tête pour le classement
  If nom = "" Then
    MsgBox "Le nom n'a pas été entré..."
    .[C10].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
    NomMemo = .[C10] '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
Fichier (2).

A+
 

Fichiers joints

Dernière édition:

patrick965

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

Bonjour job75

Merci pour ton bon travail
en fais ce que je cherche a faire est que quand je clique sur la petite disquette , que le fichier ce crée comme présentement et que dans le fichier un enregistrement ce crée en xlsx et en pdf avec chacun le même numéro
de facture.
j'explique...
souvent je dois crée des soumissions et les envoyer via courriel donc j'envoie la soumission par courriel en pdf .
Mais il arrive quelque foie que des clients apporte des corrections donc je dois garder le fichier que je peux modifier en xlsx.
En ce moment je dois enregistrer la soumission et aller dans le dossier rouvrir la soumission et l'enregistrer en pdf dans le même dossier .
Je cherche donc a diminuer les manipulations .

Merci M job75 vous aite de grande aide ...:D
 

job75

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

Re,

Bah ce n'est vraiment pas difficile de combiner les fichiers (1) et (2) :

Code:
Private Sub Workbook_BeforeSave(ByVal SaveAsUi As Boolean, Cancel As Boolean)
Dim der%, nom$, chemin$, wb As Workbook
With Sheets("Facture de service")
  .Activate
  der = InStr(.[C10], ":")
  If der = 0 Then MsgBox _
    "Il faut : (2 points) après ""Nom"" en C10 !!", 48: Exit Sub
  nom = Application.Trim(Mid(.[C10], der + 1))
  nom = Application.Proper(nom) 'majuscule en tête pour le classement
  If nom = "" Then
    MsgBox "Le nom n'a pas été entré..."
    .[C10].Select
  Else
    Cancel = True
    chemin = Me.Path & "\" 'chemin du dossier à adapter
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    Application.EnableEvents = False 'à cause de Worksheet_Activate
    On Error Resume Next
    '---création du fichier facture---
    Set wb = Workbooks.Add(xlWBATWorksheet)
    .Copy After:=wb.Sheets(1)
    wb.Sheets(1).Delete
    Application.EnableEvents = True
    wb.Sheets(1).Name = .[F4]
    MkDir chemin & nom 'création du sous-dossier s'il n'existe pas
    wb.SaveAs chemin & nom & "\" & .[F4] 'enregistrement
    wb.Close
    If Dir(chemin & nom & "\*") = "" Then _
      MsgBox "Caractère interdit dans le nom !", 48: Exit Sub
    '---création du fichier facture .pdf---
    .ExportAsFixedFormat xlTypePDF, chemin & nom & "\" & .[F4]
    NomMemo = .[C10] '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
Fichier (3).

A+
 

Fichiers joints

patrick965

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

wow un gros gros merci vous m'avez sauver des heures de travail .
lolll facile pour vous lolll
autre petite question à part juste avant que mon fichier déraille je tentais de mettre un lien Google map sur ma feuille pour entrée en sheet1 case D11 et D12 le total en km et en temps entre l'adresse entrée en c5 de la feuille facture de service ( qui elle ne changera jamais ) et le code postal inscrit en case c20 de sheet 1.

j'avais esseillé ce qui est sur ce lien https://www.youtube.com/watch?v=N_A5gPzYzMo
et c'est après que toute a mal été je ne c'est pas si il y avait un lienou pas.
a tu une autre proposition pour moi
parce qu’encore la je dois avoir c'est donné pour inclure dans ma soumission les temps de route des hommes et aussi le km pour calculer ce que je dois charger en plus sur ma facture pour payer les dépenses lier au travail demander par le client .
Je comprends que je peu aller sur Google et taper Google Mapp et entrer un itinéraire et retourner sur ma feuille Excel et y entre les données, mais je cherche la aussi a gagné du temps et des erreurs.

Merci beaucoup si tu étais proche je te payerais un bon café.
 

job75

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

Re,

Pourquoi essayer de faire une usine à gaz, c'est très mauvais pour la santé mentale :rolleyes:

Mettez le lien Google Maps dans la feuille, c'est amplement suffisant.

A+
 

patrick965

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

bonjour Jobs

je ne comprend pas trop comment mettre le lien Google ma et ni ou ni comment l'utiliser pourrais tu me montrée en exemple svp merci beaucoup.
 

patrick965

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

re bonjour jobs
l'autre but est que en bas de ma feuille sheet 1 il y ais le trajet en mappe et en dessous en texte pour l'équipe qui va aller cher ce client.
d'onc aie ce que c'est possible ou a tu meilleur idée.
merci
 

job75

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

Re,

Vous vous moquez du monde cher ami, je vous laisse vous acharner tout seul sur votre usine à gaz.
 

patrick965

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

merci pour ton merveilleux travail
bonne journée ou bonne nuit
 

patrick965

XLDnaute Occasionnel
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.
 

Fichiers joints

patrick965

XLDnaute Occasionnel
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.
 

Fichiers joints

Dernière édition:

patrick965

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

merci merci merci encore merci
 
Haut Bas