VBA - Problème bizarre

Bonjour,

J'ai deux fichiers en apparence identiques : Vacation 2011 et Vacation 2012.

Avec Vacation 2011, si je clique sur le bouton "Décompte pour une autre année", un code de base appelle plusieurs codes de suite (avec plusieurs fenêtres qui s'ouvrent) et j'ai finalement un nouveau fichier qui est préparé.

Avec Vacation 2012, j'ai placé en plus une formule dans la cellule D4 de la feuille "Récapitulation" - la seule chose selon moi qui diffère parmi ces deux fichiers - et lorsque je clique sur le bouton "Décompte pour une autre année", le code bloque chez moi - sur Excel 2007 - à la ligne ActiveWorkbook.Names("Liste_Validation_Dicastères").RefersToR1C1 = "=OFFSET(Base!R4C3,,,COUNTA(Base!R4C3:R41C3),1)" (ligne qui fait partie du code CommandButton1_Click appelé en cours de route).

Il y a une autre bizarrerie : ce fichier Vacation 2012 bloque chez moi, mais pas sur deux autres PC (un tout grand merci à Michel qui a bien voulu faire des essais), dont l'un équipé de Excel 2003.

Pouvez-vous aussi voir si ce code bloque également chez vous et si vous savez comment je pourrais continuer de placer des formules sur la feuille "Récapitulation" sans que ça gêne le déroulement de mes macros ?

A vous relire.

11vacations-2011.zip (58.46 Ko)
23vacations-2012.zip (62.86 Ko)

Salut le forum

Aucun problème, testé sous Excel 2003(Sp3) et Excel 2007(Sp3).

Ça me rappelle, tes mésaventures avec l'envoi de E-mail . . .

Mytå

Salut Mytå et merci pour ta réponse,

Effectivement qu'il semble que ça fonctionne sur la plupart des PC, mais vraiment pas sur l'un des deux miens

Par ta réponse, veux-tu dire que je devrais activer des options spéciales sur mon PC ?

Bonnes salutations.

Re,

Vraiment personne ne peut m'aider ?

A vous relire.

Bonjour

J'ai fait l'essai aussi et bien sur no problémo

Yvouille a écrit :

Pouvez-vous aussi voir si ce code bloque également chez vous et si vous savez comment je pourrais continuer de placer des formules sur la feuille "Récapitulation" sans que ça gêne le déroulement de mes macros ?

J'ai dé-commenté la formule (macro avec le nom inteeeeeeeerminable) et incroyable, cela fonctionne

Si cela peut faire avancer le sujet

Salut Banzai,

Merci pour ta réponse, mais le problème ne se situe pas du tout là. J’ai bien un code Au_nom_sans_fin, mais il n’est pas du tout concerné par mon problème actuel ; ce code n’est pas du tout appelé lors du lancement du code qui crée mon problème.

Mon problème vient vraiment que sur un ordinateur bien précis, mon autre code – celui afin de créer un nouveau décompte – bloque apparemment en fonction qu’il y a une formule pré-inscrite ou non dans mon fichier de base (d’où mes deux exemples avec ou sans cette formule pré-inscrite dans la cellule D4 de la feuille «Récapitulation» de mes deux fichiers exemples. Je sais bien que cela paraît totalement irréaliste, mais je ne vois absolument pas ce qui change d’autre dans mes deux fichiers.

Et je te jure que si j’essaie de lancer le code relié au bouton «Décompte pour une autre année» sur ce PC bien précis, ça bloque sur la ligne ActiveWorkbook.Names("Liste_Validation_Dicastères").RefersToR1C1 = "=OFFSET(Base!R4C3,,,COUNTA(Base!R4C3:R41C3),1)" (comme déjà expliqué, cette ligne fait partie d’un code «CommandButton1_Click» appelé en cours de route).

Comme ce code bloque sur un seul et unique PC pour l’instant, j’aurais été intéressé de savoir tout d’abord si d’autres membres avaient constaté également ce problème et, deuxièmement, j’aurais été intéressé de savoir ce que sous entendait Mytå ; est-ce qu’il manquerait une option quelconque sur mon PC ????

J'ai maintenant encore fait des essais sur un troisième ordinateur personnel ça passe tout comme sur mon ordinateur "Numéro 2" et tout comme chez vous.

A vous relire.

Bonsoir

Un truc que je ne comprends pas

Yvouille a écrit :

J’ai bien un code Au_nom_sans_fin, mais il n’est pas du tout concerné par mon problème actuel ; ce code n’est pas du tout appelé lors du lancement du code qui crée mon problème.

Lors de l'appui sur le bouton Décompte pour une autre année (entre 2011 et 2099) appel de la macro Préparer_un_fichier_vierge et dans cette macro juste avant le End Sub il y a bien Call Préparation_feuille_récapitulation_à_chaque_modification dans laquelle il y a

.Range("D4").FormulaR1C1 = "=ROUND(SUMIF(Saisie!R4C4:R65000C4,RC[-1],Saisie!R4C[2]:R65000C[2])*Base!R2C5*2,1)/2"

formule commentée dans le code, c'est de celle-ci que je parlais qui intéresse la page Récapitulation

Ma réponse du post précédent concernée seulement la partie

Yvouille a écrit :

comment je pourrais continuer de placer des formules sur la feuille "Récapitulation" sans que ça gêne le déroulement de mes macros ?

En indiquant que même avec une formule dans la page cela ne gênait pas

J'ai surement mal compris (mal interprété ta demande), mais c'est juste ce que j'ai constaté

Re le forum

Yvouille, je ne sais pas si il manque des options dans ton Excel mais tu avais

un problème avec l'envoi de Mail alors que la macro fonctionnait pour les autres.

Mytå

Bonjour,

Merci Mytå pour ta précision ; je comprends mieux ton intervention maintenant.

Désolé Banzai pour mon erreur. J'ai effectivement modifié mon code à plusieurs reprises afin d'essayer toutes sortes de solutions - notamment en activant ou non le passage Call Préparation_feuille_récapitulation_à_chaque_modification et comme ce n'est pas le passage qui crée problème, je t'ai répondu de travers, t'indiquant que ce passage avait été désactivé alors qu'il ne l'était pas dans le fichier présenté.

Je n'espère plus vraiment recevoir de l'aide sur ce fil, mais j'aimerais juste une dernière fois expliquer mon problème afin de ne pas passer pour un fou ou pour un con.

Je précise encore une fois que j'ai fait personnellement des essais avec 3 ordinateurs différents dont seul le plus récent me crée des problèmes.

L'idée de mon travail est d'utiliser le fichier de l'année en cours afin de créer un fichier pour l'année à venir.

J'ai encore avancé avec mon projet - sur mon vieil ordinateur protable - et mon code actuel place beaucoup plus de formules sur la feuille "Récapitulation" - lors de la création d'un nouveau fichier pour une nouvelle année - que les fichiers présentés précédemment.

Avec mon "ordinateur-assez-moderne-mais-qui-me-cause-des-soucis", si j'utilise un fichier quelconque afin de créer un nouveau fichier - mais que le fichier de base ne comporte pas de formules dans la plage D4:K??? de la feuille "Récapitulation" - mon code passe comme une lettre à la poste et le fichier pour l'année à venir est préparé merveilleusement avec toutes les nouvelles formules nécessaires sur la nouvelle feuille "Récapitulation". Ci-dessous, mon fichier de base "Vacation 2011" sans formules sur la feuille "Récapitulation" ; la cellule D4 est par exemple vide :

vacation 2011 sans formules sur la feuille recapitulation

Si j'utilise par contre un fichier quelconque afin de créer un nouveau fichier - et que le fichier de base comporte des formules dans la plage D4:K??? de la feuille "Récapitulation", comme sur l'image ci-dessous, par exemple la cellule D4 du même fichier "Vacation 2011" contient une formule - mon code bloque sur la ligne marquée en jaune sur la deuxième image ci-dessous :.

vacation 2011 avec formules sur la feuille recapitulation la redefinition de la nouvelle liste

Je peux donc dire que oui, j'ai un problème sur l'un de mes PC que personnes d'autres au monde ne semble avoir.

J'ai encore essayé de placer la ligne Sheets("Récapitulation").Range("D4:Q60000").ClearContents en tout début de procédure - visible dans le fichier ci-joint - mais ça ne change rien.

La dernière idée que je vais encore essayer est de placer une feuille masquée "Modèle Récapitulation" sans formules et - lors de la création d'un nouveau fichier - je vais simplement effacer l'ancienne feuille "Récapitulation" et appeler la feuille masquée afin d'en créer une copie qui, je l'espère, sera utilisable.

Merci encore une fois d'avoir essayé de m'aider et à la prochaine.

6vacations-2011.zip (73.38 Ko)

Bonjour

Un essai que tu pourrais faire

Supprimer le nom

Ensuite le recréer

Ta fin de code serait à modifier comme ceci

    Sheets("Base").Activate
    On Error Resume Next      ' Au cas où il n'y est pas présent
    ActiveWorkbook.Names("Liste_Validation_Dicastères").Delete
    On Error GoTo 0
    ActiveWorkbook.Names.Add Name:="Liste_Validation_Dicastères", RefersTo:="=OFFSET(Base!R4C3,,,COUNTA(Base!R4C3:R41C3),1)"

Sans garantie aucune

J'ai remarqué que le code plantait si le nom n'était pas définit déjà

Salut Banzai,

Merci infiniment de continuer de t'occuper de ce sujet.

J'ai effectué un essai tel que tu le proposes, mais ça bloque au même endroit :

capture 19 12

Je ne sais plus qu'espérer.

J'ai tenté mon autre idée, mais j'ai un nouveau problème qui est apparu. Si tu veux bien m'aider également sur ce coup-là, je te laisse découvrir mon prochain fil, d'ici quelques minutes

Cordialement

Bonsoir

Désolé qu'il n'y ait pas (encore) de solution

Mais difficile de faire des tests quand le programme fonctionne normalement

Quelqu'un finira bien par trouver et dira « Bon Dieu ! Mais c'est... Bien sûr ! »

Bonne nuit

Merci à Banzai pour son dernier message.

J'ai entre-temps eu d'autres problèmes avec ce fichier au sujet des feuilles à masquer et ai lancé un autre fil depuis lors résolu https://forum.excel-pratique.com/excel/probleme-de-masquage-ou-d-affichage-de-feuilles-t27391.html#p155923

Selon les conseils reçus sur cet autre fil, j'ai placé des lignes Application.ScreenUpdating = True partout où il y avait des lignes Application.ScreenUpdating = False, de manière à ce que ces autres problèmes disparaissent..

Je place donc ci-joint un fichier ainsi actualisé.

7vacations-2018.zip (73.24 Ko)

J'attends encore quelques temps - avant de tenter malgré tout mon idée de placer une feuille "Récapitulation" cachée, sans formules, tel que décrit un ou deux messages plus vite - afin de voir si vraiment personne n'a d'idée afin de résoudre ce problème de blocage sur la ligne

ActiveWorkbook.Names("Liste_Validation_Dicastères").RefersToR1C1 = "=OFFSET(Base!R4C3,,,COUNTA(Base!R4C3:R41C3),1)".

A vous relire ????

Bonsoir Yvouille, Banzai64

après avoir parcouru ton fichier, je relève des anomalies aux niveaux des unprotect et protect des feuilles

en effet, lors de la macro 'Préparer_un_fichier_vierge' à la ligne de code 39, tu enlève la protection de la feuille Base

puis tu charge les user 1 et 3

mais dans le code de l'initialise de l'user 1, tu enlève la protection de la feuille Base puis tu protège la feuille Base puis tu continu le code de la macro et tu fais référence à cette feuille pour déterminer le nom à définir sur une feuille protègée

de même attention aux

exit sub 

et les

application.screenupdating=true

Bonjour Yvouille

Assez bizarre ton souci car cela passe chez moi.

Sinon, modifie ton code comme suit

Private Sub CommandButton1_Click()
'Report sur la feuille "Base" des dicastères modifiés dans le UserForm
Dim i As Long, fin As Long
Dim j as byte
Dim Plage As Range
..........  
..........

Unload Me
    'redéfinir la liste pour la liste déroulante
With Sheets("Base")
    .Activate
    Set Plage = .Range("C4:C" & .Range("C" & Rows.Count).End(xlUp).Row)
    ActiveWorkbook.Names.Add Name:="Liste_Validation_Dicastères", RefersToR1C1:=Plage
    .Range("A1").Select
    End With
    Application.ScreenUpdating = True
End Sub

Dis nous si cela bloque encore

Amicalement

Salut Bob,

Je te remercie pour ton aide. J'ai tout d'abord placé des "Unprotect" un peu partout où ça a eu bloqué une fois et ensuite des "Protect" en fin de chaque code, de manière à ce que les différentes feuilles soient protégées, quelles que soient les sorties de macro (Exit Sub ou End Sub). De plus, j'ai placé des "application.screenupdating=true" à chaque fois qu'il y avait des " application.screenupdating=false" car c'est ce que j'avais compris que tu me conseillais. Dans tous les cas, tous ces codes passent sur certains PC, mais toujours pas sur mon PC à la maison.

Salut Dan,

Merci à toi également pour ton intervention. J'ai essayé l'un de tes codes - celui reçu en privé - dans le fichier "Vacation 2019" ci-joint et étrangement ça bloque maintenant sur une autre partie du code, sur la ligne "Range("B4:C4, E4").Locked = False", c'est à dire après que la nouvelle liste devrait être créée. Dans ce fichier "Vacation 2019" ou dans les fichiers créés à partir de celui-là, j'ai sous "Gestionnaire des noms", des noms "Liste_validation_dicastères" que je n'arrive pas à effacer.

Avec le nouveau fichier "Vacation 2057" également joint, j'ai encore essayé d'effacer la feuille "Récapitulation" - celle qui semblait créer des problèmes avec ses formules - en tout début de code, avant de réactualisé la liste. Mais ça ne change rien : sur mon PC à la maison (je n'ai pas pu essayer ce soir sur un autre PC), avec mon nouveau fichier "Vacation 2057", ça bloque toujours sur la ligne ActiveWorkbook.Names("Liste_Validation_Dicastères").RefersToR1C1 = "=OFFSET(Base!R4C3,,,COUNTA(Base!R4C3:R41C3),1)"

Si j'ouvre alors le débogueur et que je clique sur F5, ma macro se termine normalement et tout semble en ordre (la liste semble correcte, la feuille Récapitulation comporte toutes les informations nécessaires, etc.).

Le problème ne semblerait donc pas vraiment venir des formules préinscrites sur la feuille "Récapitulation", comme je le pensais tout d'abord, bien que selon que les formules étaient effacées manuellement ou non avant de lacer la macro, ça bloquait ou non.

A DEVENIR FOU !!!!!!

8vacations-2019.zip (66.57 Ko)
9vacations-2057.zip (75.79 Ko)

Bonjour

J'ai relu les messages de ce post et je n'ai pas trouvé (mal lu peut-être) si il y a un message d'erreur lorsque l'ordinateur se bloque

Dans la barre de titre de l'éditeur y a t-il une information quelconque qui pourrait orienter les recherches ?

Re

étrangement ça bloque maintenant sur une autre partie du code, sur la ligne "Range("B4:C4, E4").Locked = False",

Essaie comme ceci :

With Worksheets("Saisie")
    .Activate
    .Unprotect
    .Range("B4:C4").Locked = False
    .Range("E4").Locked False
    .Range("B4:C4 , E4").Interior.ColorIndex = 20
    '.Range("B4").Activate 'désactivé
    .Protect
End With

de mon coté j'ai eu un blocage à cette ligne

Range("D2") = Année_référence

Modifies la partie de code comme suit :

With Sheets("Base")
    .Unprotect
    .Range("D2") = Année_référence
End With

D'une manière plus générale, attention car tu navigues dans les macros avec d'une part les FLAG et de l'autre la suspension des macros dans tes feuille (enableevents). Cela peut te causer des soucis

A te relire

Salut Banzai,

Merci pour ta réponse. Lorsque ça bloque dans les fichiers tels que proposés par Dan - mon dernier fichier Vacation 2019 par exemple - j'ai le message suivant

capture message d erreur fichier vacation 2019

alors que si ça boque sur mes anciens fichiers, c'est à dire sur la ligne ActiveWorkbook.Names("Liste_Validation_Dicastères").RefersToR1C1 = "=OFFSET(Base!R4C3,,,COUNTA(Base!R4C3:R41C3),1)", j'ai le message

capture message d erreur fichier vacation 2057

Salut Dan,

Merci à toi aussi. J'ai essayé de remplacer le 1er code que tu me proposes. Ca passe alors sur la ligne .Range("B4:C4").Locked = False mais ça bloque suivante .Range("E4").Locked False. Si j'essaie de supprimer tout le passage proposé With Worksheets("Saisie") ............End With, ça bloque plus loin.

Tu me dis de faire attention avec les FLAG et autres enableevents, mais comme je l'ai déjà expliqué avec les protect-unprotect et application.screenupdating, je les ai placés - ou on m'a conseillé de les placer - en fonction de l'évolution du code, au fur et à mesure des problèmes qui se présentaient.

Et tout ça pour un problème qui n'apparait que sur un PC sur trois Malheureusement, comme c'est un travail qui devrait être utilisé sur plusieurs PC par le suite, je ne voudrais pas prendre le risque qu'il se reproduise ailleurs.

Cordialement

Salut Yvouille

mais ça bloque suivante .Range("E4").Locked False

Hum... normal il manque le signal =...

 .Range("E4").Locked = False

Juste une question, quelle est la version d'excel présente sur chaque PC et aussi sur quelle feuille te trouves-tu lorsque cela bloque.

Amicalement

Rechercher des sujets similaires à "vba probleme bizarre"