[RESOLU (ou presque] Macro : Set + .Close fait planter Excel

Odesta

XLDnaute Impliqué
Bonjour à tous

Voici l'une des premières question que je pose

Je n'arrive pas à trouver la réponse de moi même :

Dans le fichier joint

J'ai une feuille avec un event (enregistrement de la position de la cellule sélectionnée)

Dans une autre feuille j'ai un bouton qui enregistre et qui ferme le fichier

Si je n'effectue aucun changement dans la feuille 1, la macro associé au bouton de la feuille 2 fait bien son office
Alors que si je change la selection en feuille 1, la macro va faire cracher excel.


Merci d'avance pour votres aide et vos éventuelles poignée de cheveux arrachés qui rejoindrons peut-être les miens dans l'océan des problèmes incompréhensible d'excel.

A++

Olivier


EDIT : résolu par changement de type de la variable public
 

Pièces jointes

  • probleme_odesta.xls
    30 KB · Affichages: 111
Dernière édition:

GIBI

XLDnaute Impliqué
Re : Macro : Set + .Close fait planter Excel

Bonjour,

Je pebnse qu'après appel de save_close excel essai de revenir vers le sub appelant .. qui n'existe plus.
==> déplace le code

Code:
Private Sub CommandButton1_Click()
'Call save_close
ActiveWorkbook.Save
             
ActiveWorkbook.Close

End Sub
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Macro : Set + .Close fait planter Excel

Bonjour Odesta
Si je n'effectue aucun changement dans la feuille 1, la macro associé au bouton de la feuille 2 fait bien son office
Alors que si je change la selection en feuille 1, la macro va faire cracher excel.
Sans comprendre la finalité, dans le code de la feuille1:
patte de lapin étant un Range, patte de lapin = tarentule provoque l'erreur car tarentule n'est pas définie
en supprimant cette ligne , le clic sur le bouton de la feuille 2 ne provoque plus d'erreur
peut-être qu'en définissant "Tarentule" ???????????

à+
Philippe
 

Roland_M

XLDnaute Barbatruc
Re : Macro : Set + .Close fait planter Excel

bonjour,

Sub save_close()
Application.EnableEvents = False
ActiveWorkbook.Close SaveChanges:=True
End Sub


EDIT

OK aussi avec phlaurent55 !

RE EDIT

en faisant MsgBox Patte_de_lapin.Address
on bien l'adresse ! donc ce n'est pas Tarentule !
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Macro : Set + .Close fait planter Excel

Bonjour Odesta :), Gibi :), Philippe :), Roland :),

Oui, pas évident à expliquer
Peut-être simplement stocker l'adresse de Tarentule plutôt que l'objet, c'est cet objet qui semble poser problème
Mais même en mettant
Set Patte_de_lapin = Nothing en Before_close, ça plante toujours

pourtant, en stockant l'adresse

Code:
Public Patte_de_lapin As String


Private Sub Worksheet_SelectionChange(ByVal Tarentule As Range)

   Patte_de_lapin = Tarentule.Address
   
End Sub

ça ne plante plus... mais pas facile à expliquer
 

Odesta

XLDnaute Impliqué
Re : Macro : Set + .Close fait planter Excel

Bonjour à tous et, merci d'avoir regardé mon probleme :



@GIBI : non, ce n'est pas un problème de retour vers le code du bouton, ou alors c'est trop subtile pour moi

@phlaurent : oui, le problème vient bien du SET. Mais tarentule est défini par le "ByRef ... As ..."
De plus, définir Tarentule en public de résout pas le problème

@Roland_M : Helas, j'avais aussi testé le EnableEvent et le savechanges:=true


@Tototiti : Helas, tgroix fois hélas, j'ai aussi essayé le déchargement de ma patte_de_lapin pourtant porte bohneur, et le pb persiste

Merci en tout cas pour vos réponses et vos recherches


Olivier


EDIT : Pour Tototiti
 

phlaurent55

Nous a quittés en 2020
Repose en paix
Re : Macro : Set + .Close fait planter Excel

Re,

une patte de lapin est censée porter bonheur
....... et araignée du soir, espoir

mais avec cela on ne connait toujours pas l'utilité de ces deux gris-gris dans la procédure

à+
Philippe
 

Odesta

XLDnaute Impliqué
Re : Macro : Set + .Close fait planter Excel

Bon et bien super merci Tototiti, je n'avais pas pensé à changer le type de variable

Je vous remerci tous pour cette contribution

Maintenant, si quelqu'un pouvait me l'expliquer, j'en serais fort content.


Bonne journée à tous, ma collègue qui m'a posé ce problème (enfin en me filant un fichier complet que j'ai tailladé et modifié) passera un bon WE


Olivier
 

Roland_M

XLDnaute Barbatruc
Re : [RESOLU (ou presque] Macro : Set + .Close fait planter Excel

re

comme ceci ça ne plante plus !

Private Sub Worksheet_SelectionChange(ByVal Tarentule As Range)
Dim Patte_de_lapin As Range
Set Patte_de_lapin = Tarentule
End Sub

NE PAS OUBLIER que tu n'est pas dans un module ! Public est mal venu ! c'est Private !
 
Dernière édition:

Odesta

XLDnaute Impliqué
Re : [RESOLU (ou presque] Macro : Set + .Close fait planter Excel

Bonjour

OK pour le public, mais ce qui m'interresse c'est la porté de la Patte_de_Lapin, qui doit être utilisable dans d'autre macro

Je me repencherais sur le problème bientôt (pas le temps là)

Merci

Olivier
 

Odesta

XLDnaute Impliqué
Re : [RESOLU (ou presque] Macro : Set + .Close fait planter Excel

Bonjour
Merci pour vos aides :

Le but de ma question était d'empêcher le cliquer déplacer, action tellement destructrice de formules innocentes.
C'est une adaptation d'un code trouvé par une collègue, dont je n'ai pas la source.

Je l'ai modifier pour supprimer le "set".
Le but ici est de pouvoir étirer les cases, mais pas les déplacer.
L'option existante (sous 2003) permet de désactiver le déplacement, mais désactive aussi l'étirement (pourtant très utile pour éviter les courbatures).

Le code, à mettre dans une feuille :


Dim A As String
Dim B As Integer

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> A And Target.Count = B Then
Application.EnableEvents = False
Application.Undo
Application.EnableEvents = True
End If
End Sub

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
A = Target.Address
B = Target.Count
End Sub

Le programme marche car lorsque l'on étire ou déplace, le "Worksheet_Change" renvoie un range avant que le Worksheet_SelectionChange n'intervienne. Les plages sont donc différentes, ce qui permet d'appeler l'annuler.

J'ai ajouter au programme un '.count' :
lors d'un étiré, la plage change et je ne souhaite par l'annulation. Avec le '.count', je vérifie que la plage reste de même taille pour l'annuler. Car on ne peux pas étirer et déplacer en même temps.

Cordialement

Olivier
 

tototiti2008

XLDnaute Barbatruc
Re : [RESOLU (ou presque] Macro : Set + .Close fait planter Excel

Bonjour à tous,

Comme Roland l'a précisé, Public n'est pas autorisé dans le code d'une feuille ou de Thisworkbook, et pour étendre la portée de ta patte de lapin à tout le code il faut mettre le Public en haut d'un module classique.
Peut-être l'avais-tu compris mais je préfère préciser au cas où
Merci pour ton code qui empêche le glisser-déplacer, ça peut toujours servir ;)
 

Discussions similaires

Statistiques des forums

Discussions
312 211
Messages
2 086 296
Membres
103 171
dernier inscrit
clemm