Un pavé d'avertissement

bonjour au forum

j'ai cree un bouton qui efface toutes les données ,j'aimerais lorsque on appuie sur ce bouton un pavé nous demande la confimation par oui ou non

et j'ai un second souci j'ai crée un bouton associé à une macro pour proteger la feuille certaines parties des cellules sont verrouillees et d'autre non ,comme je ne suis pas un fortiche en excel j'ai crée sur chaque page un bouton de protection je voudrais savoir si on ne pourrait pas creer un seul bouton pour l'ensemble des pages surtout que sur toutes les pages ce sont les mêmes cellules qui sont verrouiller

je vous un fichier qui sera peut etre plus explicite (sur la 1ere page)

https://www.excel-pratique.com/~files/doc2/364eWboucherie00.zip

Bonjour dedemimi le forum,

L'alerte avant effacement

Sub effacement_total()
'
' effacement_total Macro
'

'
    Sheets(Array("janvier", "fevrier", "mars", "avril", "mai", "juin", "juillet", "aout", _
        "septembre", "octobre", "novembre", "decembre")).Select
    Sheets("janvier").Activate
    ActiveWindow.ScrollRow = 9
    ActiveWindow.ScrollRow = 8
    ActiveWindow.ScrollRow = 7
    ActiveWindow.ScrollRow = 6
    ActiveWindow.ScrollRow = 5
    ActiveWindow.ScrollRow = 4
    ActiveWindow.ScrollRow = 3
    ActiveWindow.ScrollRow = 2
    ActiveWindow.ScrollRow = 1
    Range("C3:F33").Select
 Rep = MsgBox("On efface ?", vbYesNo + vbCritical + vbDefaultButton2, "effacement")
 If Rep = vbYes Then
    Selection.ClearContents
    Range("C3").Select
    Sheets("janvier").Select
 End If
End Sub

Cdlt,

Bonjour,

j'ai cree un bouton qui efface toutes les données ,j'aimerais lorsque on appuie sur ce bouton un pavé nous demande la confimation par oui ou non

Mets ce code :

Sub effacement_total()
'Macro par Dan
' effacement_total Macro
Dim msg As String, title As String, style As String
Dim response As Integer
Application.ScreenUpdating = False
msg = "Voulez-vous supprimer cette feuille"
style = vbYesNo + vbCritical + vbDefaultButton2
title = "Effacement"
response = MsgBox(msg, style, title)
If response = vbYes Then
Application.DisplayAlerts = False
Sheets(Array("janvier", "fevrier", "mars", "avril", "mai", "juin", "juillet", "aout", _
        "septembre", "octobre", "novembre", "decembre")).Select
Range("C3:F33").ClearContents
Sheets("janvier").Activate
End If
End Sub

Les macros "imprimer..." mois peuvent être rempléces par une seule :

Sub imprimer()
    Activesheet.PrintOut Copies:=1, Collate:=True
    Range("B3").Select
End Sub

Amicalement

Dan

bonjour

merci nad et billanne c'est exactement ce qu'il me fallait, par contre le code pour imprimer je ne veux imprimer qu'une partie de la page

et pour mon autre souci j'espere qu'il y aura quelqu'un qui vienne a mon aide

merci encore de vos réponses

Re,

dedemimi a écrit :

par contre le code pour imprimer je ne veux imprimer qu'une partie de la page

Avec çà tu sélectionne la plage que tu veux imprimer tu as une aperçue et une demande de confirmation. C'est valable pour chaque onglet.

Sub Imprimer()
Dim N As Long
Dim I As Integer, Rep As Integer
    With ActiveSheet
            With ActiveSheet.PageSetup
                .PrintTitleRows = "$1:$9" 'On selectionne les colonnes ici de A à I
            End With
            ' apercu avant impréssion
            ActiveWindow.SelectedSheets.PrintPreview
            N = .Range("C50").End(xlUp).Row 'on cherche la derniere ligne vide
        .ResetAllPageBreaks 'efface sauts de pages existants
        .PageSetup.PrintArea = "A1:I" & N 'On imprime de A1 à I
        Rep = MsgBox("On imprime ?", vbYesNo + vbCritical + vbDefaultButton2, "Impression")
        If Rep = vbYes Then
        .PrintOut Copies:=1, Collate:=True
    Range("B3").Select
        End If
    End With
End Sub

Cdlt,

Re,

1. Dans toutes tes macros, enlève cette instrcution qui ne sert à rien

ActiveWindow.ScrollRow = ...

2. Pour choisir ta plage à imprimer, prends ce code :

Sub imprimer()
'Macro Dan
Dim plage As Range
Set plage = Application.InputBox("Choisissez vos la plage à imprimer", Type:=8)
ActiveSheet.PageSetup.PrintArea = plage.Address
End Sub

3. Pour protéger toutes tes feuilles, essaie ce code

Sub protection()
'Macro Dan
Dim sh As Worksheet
For Each sh In Sheets
sh.Protect
Next sh
End Sub

Amicalement

Dan

Salut le forum

Pour la protection, je préfère

Private Sub Workbook_Open()
'Macro Protection feuille
Dim Feuille As Worksheet
For Each Feuille In Sheets
Feuille.Protect UserInterfaceOnly:=True 'Permet au macro de travailler
Next Feuille
End Sub

Mytå

rebonjour

je m'excuse de répondre si tardivement j'ai du m'absenter quelque temps,je remercie myta et nad dan c'est parfait , par contre nad pour imprimer c'est extra choisir la partie a imprimer,mais comme je suis archi nul en excel quand il m'a selectionné la partie a imprimer je fais comment pour imprimer la partie selectionné ,désolé de poser des questions comme ça, pour vous c'est peut être evident mais pour ma part je suis nul

merci de vos réponses

Re,

soit tu clique sur l'icone Imprimante dans ta barre d'outils ou tu ajoutes l'instruction ci-après juste avant END SUB.

ActiveSheet.PrintOut 

Pour la protection, prends le code de Myta qui inclut l'instruction Userinterface.

Amicalement

Dan

merci de ta réponse,ça marche impeccable

rebonjour

nad le code pour imprimer marche impeccable ,le seul souci si on veut annuler la zone a imprimer (au lieu de dire ok si on appuie sur annuler ) il y a le pave de visual basic qui indique "erreur d'execution '424' objet requis

Salut le forum

En ajoutant une gestion d'erreur

Sub imprimer()
'Adaptation par Mytå
Dim MaPlage As Range

On Error Resume Next

  Set MaPlage = Application.InputBox("Choisissez vos la plage à imprimer", Type:=8)

' Clique sur bouton Annuler ...
  If Err.Number = 424 Then
    MsgBox "Impression Annuler"
  Exit Sub
Else
' Sinon la plage sélectionnée va être imprimée
  ActiveSheet.PageSetup.PrintArea = MaPlage.Address
  ActiveSheet.PrintOut
End If

End Sub

Mytå

merveilleux marche tres bien merci de vos réponses rapide

Rechercher des sujets similaires à "pave avertissement"