Empêcher quitter feuil avant de l’enregistrer

Bonjour toutes et tous

Je suis débutant VBA

je veut rectifier se macro pour Empêcher de quitter la feuil active

Si je n'était pas encor cliquer sur le bouton transfert

Private Sub Worksheet_Deactivate()
If ThisWorkbook.Saved = False Then

    MsgBox "Impossible de quitter avant d'enregistrer", vbCritical
    ThisWorkbook.Sheets(1).Activate
 End If
End Sub

Merci

6test-d9.xlsm (24.87 Ko)

Bonjour Dreamsodfa le forum

bah c'est trés simple tu le mets sur un événementiel

et là à la désactivation de la feuil1 ta macro se lance (plus besoin de bouton)

cela revient à la même chose que ta macro sans test sur l'enregistrement

a+

Papou

Private Sub Worksheet_Deactivate()
    Bouton5_Cliquer
End Sub
9dreamsodfa-v1.xlsm (26.37 Ko)

Bonjour

modification de ta macro Sub Bouton5_Cliquer()

évite les répétition

A voir

Sub CopyOnglet()
Dim Onglet As Object
Application.ScreenUpdating = False
Feuil1.Range("A7:C20").Copy
    For Each Onglet In ThisWorkbook.Sheets
        With Onglet
            Select Case .Name
                Case Feuil1.Name
                Case Else
                    .Range("A7").PasteSpecial Paste:=xlPasteAllUsingSourceTheme
            End Select
        End With
    Next Onglet
Application.CutCopyMode = False
Application.Goto [A1], True
ActiveWorkbook.Save
End Sub

A+

Maurice

Private Sub Worksheet_Deactivate()
    Bouton5_Cliquer
End Sub

bonjour ;

merci infiniment

vous pouvez me faire une rectification sur le code

je veux empêcher de quitter la feuil avant de cliquer sur le bouton

Avec un message d'alerte

merci

Re Dreamsodfa le forum

ton fichier en retour

comme je n'ai rien compris à te dernière demande puisque l'opération était faite en automatique avec ce que je t'avais mis???

je l'ai mis aussi au cas ou quelqu'un voudrais quitter sans avoir cliqué sur la croix de fermeture aussi'!!!

ouvre teste et tu me rediras

a+

Papou

7dreamsodfa-v2.xlsm (28.21 Ko)

Rebonjour paritec

C bien ça se que je chercher pour Empêcher quitter feuil.

Seulement un petit problème sur le macro bouton Transfert

Je veut pas que le macro Transfert les donner sur les nouvel feuil

alors est il possible de Spécifier sur ton macro les feuil ou je vais faire le Transfert

merci

Ré bonsoir

Oui c’est possible mais quelles sont les feuilles ???

Feuil1 a feuil4 c’est cela ????

A plus

Papou

Ré bonsoir

Oui c’est possible mais quelles sont les feuilles ???

Feuil1 a feuil4 c’est cela ????

A plus

Papou

oui de la Feuil2 a feuil6

merci

par exemple

Sheets("Feuil2", "Feuil3", "Feuil4", "Feuil5", "Feuil6")

re dreamsodfa le forum

voilà

a+

Papou

7dreamsodfa-v3.xlsm (28.97 Ko)

re dreamsodfa le forum

voilà

a+

Papou

re

Merci infiniment paritec pour l'aide

c bien ça se que je chercher

a+

Ré bonsoir paritec & tous le monde

je viens d'appliquer votre macro sur un autre exemple

Transféré les donner de la feuil data vers les autres feuil ("SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE", "JANVIER")

mais sa marche pas ?

Ou et il le problème

Merci

Sub Bouton5_Cliquer()
    Dim sh
    Application.ScreenUpdating = 0
    For Each sh In Array("SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE", "JANVIER")
.Range("B1") = [B7]
    .Range("B34") = [B8]
    .Range("B67") = [B9]
    .Range("B100") = [B10]
    .Range("B133") = [B11]
    .Range("B166") = [B12]
    .Range("B199") = [B13]
    .Range("B232") = [B14]
    Next sh
    MsgBox "Enregistré avec succès" & vbCrLf & "Cliquez sur OK pour fermer", Title:="Info"
    ActiveWorkbook.Save
End Sub

Bonjour Dreamsodfa le forum

moi j'aime lire

je viens d'appliquer votre macro sur un autre exemple

mais sa marche pas ?

Quand on modifie une macro n'importe comment, oui c'est vrai que cela ne fonctionnera pas, c'est normal.

est-ce que tu as recopié la macro que je t'ai donné?? Non tu as seulement copié une partie.

est-ce que tu as seulement essayé de comprendre ce que fait cette macro???

c'est certain que non.

Si cette macro doit pouvoir être lancée, même si tu es sur une autre feuille que la feuille Data, lors de la fermeture par exemple, tu ne peux pas utiliser [B7], mais sheets("Data").range("B7")

Car dans ce cas, cela signifie que tu te rapportes à la feuille active, qui ne sera pas obligatoirement la feuille Data!!!!

et alors le bouquet

For Each sh In Array("SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE", "JANVIER")
.Range("B1") = [B7]

Le "." devant le Range s'utilise avec with sheets(sh) , pour justement éviter de devoir à chaque ligne mettre sheets(sh)

mais dans ce que tu as modifié, bah elle doit être copiée ou la valeur de B7 ???

Tu penses que la macro va le deviner?? Il faut réfléchir un peu avant de faire les choses.

il faut:

For Each sh In Array("SEPTEMBRE", "OCTOBRE", "NOVEMBRE", "DECEMBRE", "JANVIER")
      with Sheets(sh)
            .Range("B1") =Sheets("Data").Range("B7")

et dans ce cas là, si la macro est lancée de n'importe ou dans le classeur, tu colleras bien les valeurs de Data dans les autres feuilles

a+

Papou

Rechercher des sujets similaires à "empecher quitter feuil enregistrer"