Pb enregistrer fichier.xlsm sur d'autres postes que le mien
LeFils2Elohim
Messages postés
31
Date d'inscription
Statut
Membre
Dernière intervention
-
LeFils2Elohim Messages postés 31 Date d'inscription Statut Membre Dernière intervention -
LeFils2Elohim Messages postés 31 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
J'ai un fichier Excel de suivi de personnel.
Il y a des formules, des MFC et quelques code VBA, dont celui pris sur ce site: https://forums.commentcamarche.net/forum/affich-30129000-date-sous-excel-lie-avec-outlook
Je partage ce fichier par copier/coller d'une cle usb au pc de mon client pour lui permettre de le remplir tout au long du mois et me le renvoyer ensuite pour le traitement des salaires.
Le souci, c'est que lui et moi pouvons l'ouvrir, le lire et y ajouter et supprimer des données, mais seul moi sur mon PC peut enregistrer les modifications apportées.
Quand mon client ou ses collègues (sur leurs PCs) essaient d'enregistrer, ils ont un message d'erreur de ce genre:

>> Nous utilisons tous excel 2010 sous win7 pro
J'ai trouvé un problème similaire au mien sur ce site: https://www.developpez.net/forums/d1462305/logiciels/microsoft-office/excel/macros-vba-excel/impossible-d-enregistrer-fichier-xlsm-d-autres-postes-mien/
Mais je n'arrive pas à adapter sa solution à mon problème. Pouvez vous m'aider svp?
D'avance merci pour votre précieuse aide!
Le Fils
J'ai un fichier Excel de suivi de personnel.
Il y a des formules, des MFC et quelques code VBA, dont celui pris sur ce site: https://forums.commentcamarche.net/forum/affich-30129000-date-sous-excel-lie-avec-outlook
Private [/contents/446-fichier-sub Sub] Worksheet_Change(ByVal Target As Range) Dim MaPlage As Range 'ici on détermine la plage dont les modifications déclencheront la procédure : Set MaPlage = Range("C5:C261") '***** A ADAPTER ****** 'si la cellule modifiée n'est pas dans notre plage on quitte la procédure sans rien faire If Intersect(MaPlage, Target) Is Nothing Then Exit Sub 'sort également de la procédure si tu effaces le contenu d'une cellule date If Target.Value = "" Then Exit Sub 'déclaration des variables Dim strSujet As String, strDescription As String, strLocation As String, datDate As Date, IntDuree As Integer, strCategorie As String 'Attribution des valeurs aux variables 'il est possible de remplacer les valeurs "en dur" par des valeurs contenues dans les cellules 'pour cela, se baser sur Target (= la cellule date modifiée) et faire varier l'Offset pour cibler la bonne cellule 'dans cet exemple, Target est en colonne E. 'Pour cibler la cellule située en colonne A de la même ligne, il convient d'utiliser : Target.Offset(0, -4).Value 'Pour cibler la cellule située en colonne G de la même ligne, il convient d'utiliser : Target.Offset(0, 2).Value strSujet = "Alerte3" strDescription = "....Description...." strLocation = "Ici même" datDate = CDate(Target.Offset(0, 1).Value - 7) 'date contenue dans la colonne D moins 7 jours Do While Not JoursOuvres(madate) 'on boucle tant que la date trouvée n'est pas un jour ouvré datDate = CDate(datDate - 1) 'on enlève un jour Loop 'petit test. Si ta cellule date ne contient pas l'heure, l'heure par défaut sera 08:00:00 'inutile de changer le format de la date, la saisir au format jj/mm/aaaa If InStr(datDate, ":") = 0 Then datDate = CDate(datDate & " 08:00:00") IntDuree = 30 strCategorie = "Travail" 'Appel de la procédure Call NouveauRDV_Calendrier(strSujet, strDescription, strLocation, datDate, IntDuree, strCategorie) End Sub Sub NouveauRDV_Calendrier(Sujet As String, Description As String, Locat As String, madate As Date, duree As Integer, Cat As String) 'Nécessite d'activer la référence "Microsoft Outlook xx.x Object Library" Dim OkApp As New Outlook.Application Dim Rdv As Outlook.AppointmentItem Set Rdv = OkApp.CreateItem(olAppointmentItem) With Rdv .MeetingStatus = olMeeting .Subject = Sujet .Body = Description .Location = Locat .Start = madate .Duration = duree .Categories = Cat .Save End With Set OkApp = Nothing End Sub Function JoursOuvres(UneDate As Date) As Boolean Select Case Weekday(UneDate) Case vbSunday, vbSaturday JoursOuvres = False Case Else 'calcul du dimanche de paques : 'cf : http://www.developpez.net/forums/d198031/logiciels/microsoft-office/access/access-2000-calcul-jours-ouvr-s-champ-formulaire/#post1279591 Dim a As Integer, b As Integer, c As Integer, d As Integer, e As Integer Dim f As Integer, g As Integer, h As Integer, i As Integer, j As Integer, k As Integer Dim l As Integer, m As Integer, n As Integer, p As Integer, iAn As Integer Dim Paques As Date, LundiDePaques As Date, feries(12) iAn = Year(UneDate) a = Int(iAn Mod 19) b = Int(iAn \ 100) c = Int(iAn Mod 100) d = b \ 4 e = b Mod 4 f = (b + 8) \ 25 g = (b - f + 1) \ 3 h = (19 * a + b - d - g + 15) Mod 30 i = c \ 4 k = c Mod 4 l = (32 + 2 * e + 2 * i - h - k) Mod 7 m = (a + 11 * h + 22 * l) \ 451 n = (h + l - 7 * m + 114) \ 31 p = (h + l - 7 * m + 114) Mod 31 Paques = DateSerial(iAn, n, p + 1) 'dimanche de pâques LundiDePaques = DateAdd("d", 1, Paques) 'lundi de pâques feries(0) = DateSerial(iAn, 1, 1) '1er janvier feries(1) = Paques '==> inutile car dimanche mais... feries(2) = LundiDePaques feries(3) = DateSerial(iAn, 5, 1) '1er mai feries(4) = DateSerial(iAn, 5, 8) 'armistice 39-45 feries(5) = DateAdd("d", 39, Paques) 'ascension feries(6) = DateAdd("d", 49, Paques) 'dimanche de pentecôte ==> inutile car dimanche mais... feries(7) = DateAdd("d", 50, Paques) 'lundi de pentecôte feries(8) = DateSerial(iAn, 7, 14) ' 14 juillet feries(9) = DateSerial(iAn, 8, 15) '15 aout feries(10) = DateSerial(iAn, 11, 1) 'toussaint feries(11) = DateSerial(iAn, 11, 11) 'armistice 14-18 feries(12) = DateSerial(iAn, 12, 25) 'Noël For j = 0 To 12 If feries(j) = UneDate Then JoursOuvres = False: Exit Function Next j JoursOuvres = True End Select End Function
Je partage ce fichier par copier/coller d'une cle usb au pc de mon client pour lui permettre de le remplir tout au long du mois et me le renvoyer ensuite pour le traitement des salaires.
Le souci, c'est que lui et moi pouvons l'ouvrir, le lire et y ajouter et supprimer des données, mais seul moi sur mon PC peut enregistrer les modifications apportées.
Quand mon client ou ses collègues (sur leurs PCs) essaient d'enregistrer, ils ont un message d'erreur de ce genre:

>> Nous utilisons tous excel 2010 sous win7 pro
J'ai trouvé un problème similaire au mien sur ce site: https://www.developpez.net/forums/d1462305/logiciels/microsoft-office/excel/macros-vba-excel/impossible-d-enregistrer-fichier-xlsm-d-autres-postes-mien/
Mais je n'arrive pas à adapter sa solution à mon problème. Pouvez vous m'aider svp?
D'avance merci pour votre précieuse aide!
Le Fils
A voir également:
- Pb enregistrer fichier.xlsm sur d'autres postes que le mien
- Audacity enregistrer son pc - Guide
- Comment enregistrer une conversation - Guide
- Comment enregistrer une musique sur youtube en mp3 - Guide
- Enregistrer son ecran - Guide
- Comment enregistrer un mail - Guide
1 réponse
Bonjour Elohim Jr.
Bien que manipulant de temps à autres VBA, c'est la première fois que je vois une instruction entre [ ] après le 'Private'.... (Oui je suis encore débutant...ou alors j'ai un bug à l'affichage... mais je suis quand même un débutant...)
1°/ Peux tu m'expliquer à quoi ça sert afin que je progresse?
2°/ J'ai vu que c'est un élément que tu as rajouté vs le code source... Ton pb ne pourrait-il pas venir e là?
Corialement
Bien que manipulant de temps à autres VBA, c'est la première fois que je vois une instruction entre [ ] après le 'Private'.... (Oui je suis encore débutant...ou alors j'ai un bug à l'affichage... mais je suis quand même un débutant...)
1°/ Peux tu m'expliquer à quoi ça sert afin que je progresse?
2°/ J'ai vu que c'est un élément que tu as rajouté vs le code source... Ton pb ne pourrait-il pas venir e là?
Corialement
Merci de t'être penché sur mon problème.
Le code que tu vois est tiré de cette page CCM: https://forums.commentcamarche.net/forum/affich-30129000-date-sous-excel-lie-avec-outlook
J'ai repris et l'ai adapté à mon fichier pour me permettre de créer les dates de fin de contrat de mes agents dans l'agenda Outlook (ce qui fonctionne très bien, soit dit en passant).
Je peux t'envoyer mon code, si tu veux, tel qu'il est dans mon fichier, dès que je serai de retour chez moi.
Il est effectivement possible que le problème vienne de là.
Comme je l'ai précisé ci-dessus, j'ai trouvé un problème similaire sur cette page https://www.developpez.net/forums/d1462305/logiciels/microsoft-office/excel/macros-vba-excel/impossible-d-enregistrer-fichier-xlsm-d-autres-postes-mien/
Mais je n'arrive pas à adapter sa solution à mon problème.
Merci encore.
Le Fils