Fermer une boucle VBA à la fermeture d'Excel - Forum VB / VBA

Fermer une boucle VBA à la fermeture d'Excel Fermer un message lors d'une fermeture d'un fichier en VBA ✓ - Forum - VB / VBA Fermer un classeur vba ✓ - Forum - VB / VBA Sortir d'une boucle vba ✓ - Forum - Excel Label et boucle VBA ✓ - Forum - VB / VBA Boucle VBA et incrementation ✓ - Forum - VB / VBA

Bonjour,

J'aimerais obtenir votre aide en programmation VBA.
Je replace le contexte, j'ai crée plusieurs macros qui me permettent de :
- dès que je clique sur un rectangle 1, une série de formes s'affichent
- dès que je clique une nouvelle fois sur ce rectangle 1, la série de formes disparait
Une boucle est ainsi créée, jusqu'ici pas de souci.
Le problème est que, si je ne reclique pas sur le rectangle 1 avant de fermer/d'enregistrer le fichier excel, les formes sont toujours présentes lorsque je ré-ouvre mon fichier. Ainsi quand je clique sur le rectangle 1, les formes apparaissent sur les formes déjà apparentes.
J'aimerais ainsi pouvoir fermer la boucle (que les formes ne soient plus apparentes) automatiquement à la fermeture/sauvegarde de mon fichier excel (d'autres personnes que moi vont utiliser ce fichier et c'est pourquoi j'ai besoin d'une automatisation). En espérant avoir été clair ! Je précise que je débute vraiment en VBA et que je ne connais pas le langage.
Pourriez-vous m'aider ? :D Merci pour vos réponses !


Forum

Fermer une boucle VBA à la fermeture d'Excel Fermer un message lors d'une fermeture d'un fichier en VBA ✓ - Forum - VB / VBA Fermer un classeur vba ✓ - Forum - VB / VBA Sortir d'une boucle vba ✓ - Forum - Excel Label et boucle VBA ✓ - Forum - VB / VBA Boucle VBA et incrementation ✓ - Forum - VB / VBA

Web: www.shapebootstrap.net

9 réponses

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,
Tu peux toujours essayer de lancer ta macro depuis un
 Private Sub Workbook_BeforeClose(Cancel as Boolean) 

L'autre solution serait de stocker une variable (dans une cellule cachée par exemple) l'état de ton "rectangle".
Si il est ouvert ( la cellule vaut 1 par exemple), lorsque tu ouvres le classeur... ça le referme automatiquement.
Dans ce cas, ce controle est à mettre dans le
Private Sub Workbook_Open()

Ou encore mieux... un mixte des deux.
Comme ça tu es sûr que c'est correctement géré .... même si le classeur se ferme par erreur ou que le processus plante...


Cordialement, 
Jordane                                                                 

Reply
réponses:
  • auteur

    Bonjour Jordane,
    La solution du beforeclose me semble abordable :


    Voici où j'ai mis le "Private Sub Workbook_BeforeClose(Cancel as Boolean)" mais ça ne fonctionne pas, les formes restent là quand je ré-ouvre le fichier. Pourtant je l'ai mis dans le même module que ma macro. Une suggestion ?

    Pour le stockage de la variable, je suis encore trop débutant pour comprendre ou surtout pour savoir comment faire mais merci.

  • auteur

    Déjà... pour poster ton code sur le forum il faut le coller directement et pas nous en mettre une capture écran.
    Voir ici comment faire : http://codes-sources.commentcamarche.net/faq/10686-le-nouveau-codes-sources-comment-ca-marche#balises-code

    Ensuite... il ne suffit pas de mettre les variables à true ou false....
    Il faut appeler le code qui retire tes rectangles...
    Mais sans avoir ton code entier (et collé correctement)... impossible de t'en dire plus.

  • auteur

    J'ai aussi essayer un "Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)" mais ca ne fonctionne pas non plus, après la sauvegarde les formes n'ont pas disparues. Je pense que je ne mets pas ce qu'il faut entre le private sub et le end sub ou que je ne le mets pas au bon endroit, ou même peut être les deux ?

  • auteur

    Ah je ne savais pas !.. Voilà ma macro, j'espère que le format convient...

    Public Clic1 As Boolean Public Clic2 As Boolean Private Sub Workbook_Open() Clic1 = False Clic2 = False End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Clic1 = False Clic2 = False End Sub  Sub RectCLA()  If Clic1 = False Then  ActiveSheet.Shapes.AddShape(msoShapeOval, 132, 588, 32.5, 32.5). Select         Selection.ShapeRange.Height = 36.2834645669         Selection.ShapeRange.Width = 36.2834645669         Selection.Name = "rond_CLA"         Selection.OnAction = "touscla"  Clic1 = True Clic2 = False Exit Sub  ElseIf Clic2 = False Then  ActiveSheet.Shapes.Range(Array("trait_CLA")).Select Selection.Delete  Clic1 = False Clic2 = True Exit Sub  End If End Sub

  • auteur

    Donc un truc du genre

       '----------------------------------------------- ' se code se trouve dans l'objet thisWorkbook '----------------------------------------------- Private Sub Workbook_Open()     Clic1 = False     Clic2 = False End Sub Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)     Call clear_trait_CLA End Sub  


     '----------------------------------------------- 'Cette partie du code se situe dans un MODULE '----------------------------------------------- Public Clic1 As Boolean Public Clic2 As Boolean Sub clear_trait_CLA()     If Clic2 = False Then         ActiveSheet.Shapes.Range(Array("trait_CLA")).Select         Selection.Delete         Clic1 = False         Clic2 = True     End If End Sub  Sub RectCLA()     If Clic1 = False Then         ActiveSheet.Shapes.AddShape(msoShapeOval, 132, 588, 32.5, 32.5).Select         Selection.ShapeRange.Height = 36.2834645669         Selection.ShapeRange.Width = 36.2834645669         Selection.Name = "rond_CLA"         Selection.OnAction = "touscla"         Clic1 = True         Clic2 = False     Else         Call clear_trait_CLA     End If End Sub 

Marsh

NOVEMBER 9, 2013 AT 9:15 PM

Bonjour,

Une autre solution est de commencer par nettoyer la feuille avant d'ajouter les nouvelles formes, c'est à dire supprimer les anciennes formes.

Ici, un excellent cours VBA gratuit pour débutant :
ftp://ftp-developpez.com/bidou/Cours/VBA/formationVBA.pdf

Cordialement
Patrice

Reply
réponses:
  • auteur

    Bonjour,
    Cette solution pourrait aussi être une piste mais mon anti-virus bloque votre fichier pdf !

  • auteur

    Changes d'antivirus !

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed