Pb enregistrer fichier.xlsm sur d'autres postes que le mien
LeFils2Elohim
Messages postés
33
Statut
Membre
-
LeFils2Elohim Messages postés 33 Statut Membre -
LeFils2Elohim Messages postés 33 Statut Membre -
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
- Enregistrer son ecran - Guide
- Comment enregistrer une musique sur youtube en mp3 - 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