Les objets perdent leur nom......

Le
ThierryP
Bonjour le forum,

Je subis un phénomène étrange autant que mystérieux.=
.

J'ai cré un modèle Excel, avec un certain nombre de cases à =
cocher (CheckBox) et boutons Options (OptionButton), chaque objet étan=
t renommé de manière explicite.

Ce modèle a été installé sur plusieurs PC portables, to=
us bénéficiant de la même version d'Office (Famille et PME 2=
013, V15.0.4433.1508).

Sur un seul des PC, et pas de manière systématique, les noms sont=
perdus et les objets sont reommés en "Checkbox1", "OptionButton1" etc=


Evidemment, toutes les macros du projet sont très vexées, et la c=
ompilation du projet m'envoie gentiment bouler à chaque ouverture du f=
ichier.

Si quelqu'un a une idée, une piste, une suggestion. voire même=
une solution, je suis preneur !!!

Merci d'avance à tout le monde !

ThierryP
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Michd
Le #26453959
Bonjour.
D'abord, si tu utilises le même modèle pour plusieurs PC et que ces PC sont
en réseau, pourquoi ne pas utiliser un seul modèle que tu disposes dans un
répertoire dont tous les utilisateurs ont accès? C'est plus facile à
contrôler et à mettre à jour au besoin!
Est-ce possible qu'un utilisateur puisse modifier d'une quelconque manière
le modèle volontairement?
Quelle est la date de la dernière modification du modèle? Si cette date est
très récente, comment l'expliques-tu si personne n'ouvre le modèle? Tu crois
aux extra-terrestres? ;-)
Moi, je n'ai jamais encore vu un classeur Excel capable de modifier le nom
des objets tout seul...
MichD
ThierryP
Le #26453983
Le mercredi 29 novembre 2017 12:51:47 UTC+1, Michd a écrit :
Bonjour.
D'abord, si tu utilises le même modèle pour plusieurs PC et que ces PC sont
en réseau, pourquoi ne pas utiliser un seul modèle que tu dispo ses dans un
répertoire dont tous les utilisateurs ont accès? C'est plus fac ile à
contrôler et à mettre à jour au besoin!

Bonjour Denis,
Toujours présent à ce que je vois !!!
J'aurais préféré cette solution, mais ce modèle est des tiné à des techniciens itinérants, qui n'ont pas toujours ac cès à notre réseau. Donc, ils créent les documents sur leur PC et les transfèrent quand ils ont un accès (Wifi ou 4G).
Le modèle est protégé, mes utilisateurs ne connaissent pas V BA et ne sont pas des "bidouilleurs" en informatique ! Et le pire est que p our l'utilisateur qui me pose problème, ce "bug" n'est pas systém atique... Et je n'arrive ps à savoir quelle manip pourrait faire cet u tilisateur pour arriver à ce résultat; j'ai testé avec lui s ur son PC la création d'un document... et évidemment tout fonctio nnait nickel !
J'ai vérifié, le modèle est à la bonne date (pas de mod if ultérieure enregistrée).
Si il y des extra-terrestres, pourquoi m'en veulent-ils à moi personne llement ??!!!!
Je n'avais encore jamais vu non plus ce type de comportement, mais mon exp érience est loin d'être aussi vaste que la tienne :-))
Je suis prêt à t'envoyer le modèle et un exemple de fichier "modifié" pour que tu puisses te rendre compte par toi-même !
ThierryP
Est-ce possible qu'un utilisateur puisse modifier d'une quelconque mani ère
le modèle volontairement?
Quelle est la date de la dernière modification du modèle? Si ce tte date est
très récente, comment l'expliques-tu si personne n'ouvre le mod èle? Tu crois
aux extra-terrestres? ;-)
Moi, je n'ai jamais encore vu un classeur Excel capable de modifier le no m
des objets tout seul...
MichD
Jacquouille
Le #26453982
Bonjour Thierry,
Si tes techniciens itinérants ont accès à ton réseau via Wifi, ils
pourraient charger le modèle dont parle Denis...
Ce technicien, victime de Murphy, a-t-il retéléchargé le doc après sa
première mésaventure?
Partie humour:
- n'oubliez jamais Murphy !
- Si "elle s'est fait un bébé toute seule", pourquoi le doc il ne saurait
pas se modifier tout seul?
-))
Bon courage.
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"ThierryP" a écrit dans le message de groupe de discussion :

Le mercredi 29 novembre 2017 12:51:47 UTC+1, Michd a écrit :
Bonjour.
D'abord, si tu utilises le même modèle pour plusieurs PC et que ces PC
sont
en réseau, pourquoi ne pas utiliser un seul modèle que tu disposes dans un
répertoire dont tous les utilisateurs ont accès? C'est plus facile à
contrôler et à mettre à jour au besoin!

Bonjour Denis,
Toujours présent à ce que je vois !!!
J'aurais préféré cette solution, mais ce modèle est destiné à des
techniciens itinérants, qui n'ont pas toujours accès à notre réseau. Donc,
ils créent les documents sur leur PC et les transfèrent quand ils ont un
accès (Wifi ou 4G).
Le modèle est protégé, mes utilisateurs ne connaissent pas VBA et ne sont
pas des "bidouilleurs" en informatique ! Et le pire est que pour
l'utilisateur qui me pose problème, ce "bug" n'est pas systématique... Et je
n'arrive ps à savoir quelle manip pourrait faire cet utilisateur pour
arriver à ce résultat; j'ai testé avec lui sur son PC la création d'un
document... et évidemment tout fonctionnait nickel !
J'ai vérifié, le modèle est à la bonne date (pas de modif ultérieure
enregistrée).
Si il y des extra-terrestres, pourquoi m'en veulent-ils à moi
personnellement ??!!!!
Je n'avais encore jamais vu non plus ce type de comportement, mais mon
expérience est loin d'être aussi vaste que la tienne :-))
Je suis prêt à t'envoyer le modèle et un exemple de fichier "modifié" pour
que tu puisses te rendre compte par toi-même !
ThierryP
Est-ce possible qu'un utilisateur puisse modifier d'une quelconque manière
le modèle volontairement?
Quelle est la date de la dernière modification du modèle? Si cette date
est
très récente, comment l'expliques-tu si personne n'ouvre le modèle? Tu
crois
aux extra-terrestres? ;-)
Moi, je n'ai jamais encore vu un classeur Excel capable de modifier le nom
des objets tout seul...
MichD
Michd
Le #26454010
Si tu as créé plusieurs classeurs avec le modèle sur l'ordinateur de
l'usager et que tous ces fichiers sont corrects, il y a peu de chance que je
trouve un problème aux fichiers que désires m'envoyer. Toi, as-tu pu
observer le phénomène en faisant toi-même les manoeuvres? Dans le cas où la
réponse est négative, demande à l'usager comment il crée un nouveau fichier.
Utilise-t-il toujours la même méthode? Lorsqu'il travaille avec l'un de ces
classeurs, est-ce que d'autres fichiers sont d'ouverts. Pourquoi ne pas lui
demander de te faire un rapport quand la chose se produit en décrivant les
circonstances de l'événement. (nombre de classeurs ouverts, le nom des
autres applications ouvertes, etc...
Tu peux toujours envoyer les 2 fichiers à mon adresse "MichDenis" et "@"
et "Hotmail.com". Cependant, je serais très surpris de pouvoir reproduire le
problème sur mon ordinateur! Je regarderai cela plus tard aujourd'hui.
MichD
ThierryP
Le #26454212
Bonjour Jacques,
Merci de te pencher sur mon souci !
Dans la mesure où le modèle est le même pour tout le monde, et que ce bug n'est pas systématique et ne se produit que sur un PC, j e ne pense pas que le fait de le télécharger à chaque fois r ésolve le problème..... mais je peux essayer pour cet utilisateur spécifique !
ThierryP
Michd
Le #26454229
Avant d'envoyer les fichiers, n'oublie pas d'enlever tous les mots de passe
s'il y en a!
MichD
Michd
Le #26454577
J'ai trouvé un fil de discussion (en anglais) sur la problématique que tu
éprouves. Il semble que la chose existe et par conséquent, tu n'es pas le
seul à éprouver cette difficulté. Selon le site, ton code ne serait pas en
jeu. Voici l'adresse de ce fil. Cette problématique a été relevée seulement
pour les boutons émanant de la barre d'outils "Contrôle" et non pas pour les
boutons de la barre "Formulaire". Peut-être que les suggestions faites
résoudront ton problème.
https://stackoverflow.com/questions/31201980/spurious-change-in-code-name-of-activex-control-command-button
MichD
Jacquouille
Le #26454580
Salut Denis,
A propos de boutons .....
j'ai cette macro qui me trie (alphabétiquement) admirablement bien les
feuilles d'un dossier.
A partir du moment où je crée un bouton et que je recopie le texte de al
macro dans le code du commandbutton, ben... ça merde.
Erreur d'exécution 9. l'indice n'appartient pas à la sélection.
Moi pas comprendre pourquoi....
Il me liste le nom des feuilles en col A de la feuille "liste".
Du coup, j'ai supprimé le bouton.
---------
Sub TriDesFeuilles()
Dim Sh As Worksheet
Application.ScreenUpdating = False
Sheets.Add.Name = "temp"
For Each Sh In Sheets
If Sh.Name <> "temp" Then
Ctr = Ctr + 1
Cells(Ctr, 1) = Sh.Name
End If
Next Sh
[A:A].Sort Key1:=[A1]
With Sheets("temp")
For i = 1 To Sheets.Count - 1
Sheets(.Cells(i, 1).Value).Move after:=Sheets(i)
Next i
End With
Application.DisplayAlerts = False
Sheets("temp").Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
-------------------------
Jacques.
.
"Michd" a écrit dans le message de groupe de discussion :
p03dfr$8pa$
J'ai trouvé un fil de discussion (en anglais) sur la problématique que tu
éprouves. Il semble que la chose existe et par conséquent, tu n'es pas le
seul à éprouver cette difficulté. Selon le site, ton code ne serait pas en
jeu. Voici l'adresse de ce fil. Cette problématique a été relevée seulement
pour les boutons émanant de la barre d'outils "Contrôle" et non pas pour les
boutons de la barre "Formulaire". Peut-être que les suggestions faites
résoudront ton problème.
https://stackoverflow.com/questions/31201980/spurious-change-in-code-name-of-activex-control-command-button
MichD
Michd
Le #26454583
Bonjour Jacquouille,
Quand tu places le code dans le module du feuille, tu dois obligatoirement
t'assurer que les objets sont bien référencés à la bonne feuille. Dans cet
exemple, si tu n'écris pas que le nom des feuilles est inscrit dans la
feuille Worksheets("Temp"), les noms seront inscrits dans la feuille où est
le bouton de commande. Par conséquent, la feuille "Temp" sera vide. Lorsque
la procédure exécute par la suite la ligne de code suivant "Sheets(.Cells(i,
1).Value).Move after:=Sheets(i)", elle plante, car les cellules de la
feuille temp sont vides et qu'il n'y pas de feuilles portant ce nom.
Quand tu écris du code dans une feuille, à moins de faire la bonne référence
à la feuille où sont les objets et les cellules, ces derniers appartiennent
à la feuille du module du même nom.
'------------------------------------------------------------
For Each Sh In Sheets
If Sh.Name <> "temp" Then
Ctr = Ctr + 1
With Worksheets("temp")
.Cells(Ctr, 1) = Sh.Name
End With
End If
Next
'------------------------------------------------------------
Voici le code corrigé :
'------------------------------------------------------------
Sub TriDesFeuilles()
Dim N As String
Dim Sh As Worksheet
Application.ScreenUpdating = False
Sheets.Add.Name = "temp"
For Each Sh In Sheets
If Sh.Name <> "temp" Then
Ctr = Ctr + 1
With Worksheets("temp")
.Cells(Ctr, 1) = Sh.Name
End With
End If
Next Sh
[A:A].Sort Key1:=[A1]
With Sheets("temp")
For i = 1 To Sheets.Count - 1
N = Worksheets("temp").Cells(i, 1)
Sheets(N).Move after:=Sheets(i)
Next i
End With
Application.DisplayAlerts = False
Sheets("temp").Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
'------------------------------------------------------------
MichD
Jacquouille
Le #26454628
Merci Denis,
j'avais oublié ce .feuil (l'âge).
Bonne soirée
Jacques
" Le vin est au repas ce que le parfum est à la femme."
.
"Michd" a écrit dans le message de groupe de discussion :
p03j3u$ib5$
Bonjour Jacquouille,
Quand tu places le code dans le module du feuille, tu dois obligatoirement
t'assurer que les objets sont bien référencés à la bonne feuille. Dans cet
exemple, si tu n'écris pas que le nom des feuilles est inscrit dans la
feuille Worksheets("Temp"), les noms seront inscrits dans la feuille où est
le bouton de commande. Par conséquent, la feuille "Temp" sera vide. Lorsque
la procédure exécute par la suite la ligne de code suivant "Sheets(.Cells(i,
1).Value).Move after:=Sheets(i)", elle plante, car les cellules de la
feuille temp sont vides et qu'il n'y pas de feuilles portant ce nom.
Quand tu écris du code dans une feuille, à moins de faire la bonne référence
à la feuille où sont les objets et les cellules, ces derniers appartiennent
à la feuille du module du même nom.
'------------------------------------------------------------
For Each Sh In Sheets
If Sh.Name <> "temp" Then
Ctr = Ctr + 1
With Worksheets("temp")
.Cells(Ctr, 1) = Sh.Name
End With
End If
Next
'------------------------------------------------------------
Voici le code corrigé :
'------------------------------------------------------------
Sub TriDesFeuilles()
Dim N As String
Dim Sh As Worksheet
Application.ScreenUpdating = False
Sheets.Add.Name = "temp"
For Each Sh In Sheets
If Sh.Name <> "temp" Then
Ctr = Ctr + 1
With Worksheets("temp")
.Cells(Ctr, 1) = Sh.Name
End With
End If
Next Sh
[A:A].Sort Key1:=[A1]
With Sheets("temp")
For i = 1 To Sheets.Count - 1
N = Worksheets("temp").Cells(i, 1)
Sheets(N).Move after:=Sheets(i)
Next i
End With
Application.DisplayAlerts = False
Sheets("temp").Delete
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
'------------------------------------------------------------
MichD
Publicité
Poster une réponse
Anonyme