effacer cellule mais pas formule

accoman

XLDnaute Junior
Bonjour à tous
j'ai fait cette macro en vue de réinitialiser un classeur en fin d'annee, en vue dans redemerer une

Sub effacerexercice()
'
' effacerexercice Macro
' Macro enregistrée le 08/10/2010 par pm
'

'

Dim marep As Long
marep = MsgBox("Avez vous sauvegardé l'exercice?", vbYesNo)

If marep = vbYes Then
Selection.ClearContents
Sheets("Registre Banque").Select
Range("A4:I65000").Select
Selection.ClearContents
Sheets("Registre Caisse").Select
Range("A4:I65000").Select
Selection.ClearContents
Sheets("Livre Recettes").Select
Range("A4:I65000").Select
Selection.ClearContents
Sheets("Livre Depenses").Select
Range("A4:I65000").Select
Selection.ClearContents
Sheets("Mouvements").Select
Range("A4:I65000").Select
Selection.ClearContents
Sheets("Feuil1").Select
Range("A4:I65000").Select
Selection.ClearContents
Sheets("Feuil2").Select
Range("A4:I65000").Select
Selection.ClearContents
Sheets("Sommaire").Select
Range("E12").Select

Else
MsgBox ("Sauvegardez avant")
End If
End Sub

le seul problème s'est que mes formules sont aussi effacé. Que faut t'il rajouter à cette macro afin de résoudre le problème
merci
amicalement
 

tototiti2008

XLDnaute Barbatruc
Re : effacer cellule mais pas formule

Bonjour accoman,

on ne peut pas effacer de cellules sans effacer les formules

Pour qu'une formule renvoie un résultat vide, il faut intégrer un SI dans la formule qui demande de ne rien afficher dans certaines conditions

Sinon, je pense que le premier

Code:
Selection.ClearContents

est certainement de trop

Et je pense aussi que sans un fichier exemple des données à réinitialiser en début d'année, tu n'auras pas beaucoup de réponses plus précises...

Edit : Rebonjour Staple ;)
 

Staple1600

XLDnaute Barbatruc
Re : effacer cellule mais pas formule

Re, bonjour tototiti2008 (ca balise dur aujourd'hui ;) )



Voici une façon de faire
Code:
Sub effacerexerciceBIS()
Dim s As Worksheet, marep&
marep = MsgBox("Avez vous sauvegardé l'exercice?", vbYesNo)
If marep = vbYes Then
For Each s In Worksheets
    If s.Name <> "Sommaire" Then
    s.Range("A4:I65000").SpecialCells(xlCellTypeConstants, 23).ClearContents
    End If
Next s
Else
MsgBox ("Sauvegardez avant")
End If
End Sub
 

accoman

XLDnaute Junior
Re : effacer cellule mais pas formule

re Bonjour
un grand merci a Totiti2008 et a Staple1600, pour leurs réponces
je dois mettre

For Each s In Worksheets
If s.Name <> "Sommaire" Then
s.Range("A4:I65000").SpecialCells(xlCellTypeConstants, 23).ClearContents
End If
Next s

pour toute les feuilles que je souhaite réinitialiser
exemple:

For Each s In Worksheets
If s.Name <> "Registre Banque" Then
s.Range("A4:I65000").SpecialCells(xlCellTypeConstants, 23).ClearContents
End If
Next s

For Each s In Worksheets
If s.Name <> "Registre Caisse" Then
s.Range("A4:I65000").SpecialCells(xlCellTypeConstants, 23).ClearContents
End If
Next s

etc..;

amicalement

si vous avez besoin du classeur je vous le ferais parvenir par lien web il est une passera pas en piece jointe

amicalement
 

accoman

XLDnaute Junior
Re : effacer cellule mais pas formule

re bonjour j'ai reusi a compresser et réduire le classeur
vous le trouverer ci joint

la feuille Param et sommaire ne doivent pas être réinitialiser
dans les registres et livres en colonne B il y a une formule que je ne souhaite pas voir effacé

sur la feuille sommaire en bas du tableau il y a un bouton pour une remise a 0 du classeur

amicalement
 

Pièces jointes

  • Compta_2010.zip
    22 bytes · Affichages: 140
  • Compta_2010.zip
    22 bytes · Affichages: 143
  • Compta_2010.zip
    22 bytes · Affichages: 137

tototiti2008

XLDnaute Barbatruc
Re : effacer cellule mais pas formule

Re,

je ne peux pas ouvrir les zip, mais ci-joint le code de Staple adapté pour épargner les feuilles Sommaire et Param

Code:
Sub effacerexerciceBIS()
Dim s As Worksheet, marep&
marep = MsgBox("Avez vous sauvegardé l'exercice?", vbYesNo)
If marep = vbYes Then
For Each s In Worksheets
    If s.Name <> "Sommaire" and s.Name <> "Param" Then
    s.Range("A4:I65000").SpecialCells(xlCellTypeConstants, 23).ClearContents
    End If
Next s
Else
MsgBox ("Sauvegardez avant")
End If
End Sub
 

accoman

XLDnaute Junior
Re : effacer cellule mais pas formule

Re a sut j'ai de nouveau perdu la moitier du classeur dans la compréssion

Cijoint.fr - Service gratuit de dépôt de fichiers

Si joint un lien pour accès au fichier sa serra plus simple en attendant je teste la derniere reponses
a+

après teste j'ai une erreur 1004 ( pas de cellules correspondantes)
et la ligne
s.Range("A4:I65000").SpecialCells(xlCellTypeConstants, 23).ClearContents et en jaune
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : effacer cellule mais pas formule

Bonsoir


Voila qui évitera le message d'erreur

VB:
Sub effacerexerciceTER()
Dim s As Worksheet, marep&
marep = MsgBox("Avez vous sauvegardé l'exercice?", vbYesNo)
If marep = vbYes Then
For Each s In Worksheets
    If s.Name <> "Sommaire" And s.Name <> "Param" Then 
    On Error Resume Next
   s.Range("A4:I65000").SpecialCells(xlCellTypeConstants, 23).ClearContents
    End If
Next s
Else
MsgBox ("Sauvegardez avant")
End If
End Sub

PS
: quand tu fais des tests de macros, fais les sur un fichier exemple allégé créé pour l'occasion (ici par exemple nous n'avons pas besoin des Userforms) et surtout pas sur ton fichier original.
Ainsi ton fichier sera beaucoup moins volumineux et tu pourras le joindre directement sur le forum.
 
Dernière édition:

accoman

XLDnaute Junior
Re : effacer cellule mais pas formule

Bonjour à tous
Un grand merci a Staple1600 et tototiti2008 pour leurs aide sa marche nikel
Je suis d'accord avec toi Staple1600 . Il me reste encore beaucoup de chose à apprendre.
Merci encore pour votre aide et votre patience avec les news bit
amicalement
a+
 

kabamel

XLDnaute Occasionnel
Re : effacer cellule mais pas formule

Slt à tous,
Dans mon cas, je voudrais que si l'une des cellules de la plages "F4:L654" est remplis on nettoie tous sauf les formules sinon message : Les cellules sont vides. je vous mets le code que j'ai.
Code
Code:
Dim Cellule As Range
Set Cellule = Range("F4:L654")
For Each Cellule In Range("F4:L654")
    If Cellule = "" Then
        MsgBox ("Les cellules sont vides !")
        Exit Sub
    Else
        Dim marep
        marep = MsgBox("Etes - vous sûr d'effacer les contenues ?", vbYesNo)
        On Error Resume Next
            If marep = vbYes Then
                Sheets("Base N").Range("F4:L654").SpecialCells(xlCellTypeConstants, 23).ClearContents
                MsgBox ("Terminer !")
                Range("A2").Select
                Exit Sub
            Else
                Exit Sub
            End If
    End If
Next Cellule
Merci pour votre aide
 
Dernière édition:

DoubleZero

XLDnaute Barbatruc
Re : effacer cellule mais pas formule

Bonjour à toutes et à tous,

Comme ceci ?

Code:
Option Explicit
Sub Constantes_supprimer()
    Dim marep
    On Error GoTo fin
    With Sheets("Base N").Range("f4:l654").SpecialCells(xlCellTypeConstants, 23)
        If .Application.CountA([f4:l654]) = 0 Then
            GoTo fin
        Else
            Select Case MsgBox("Effacer les contenus ?", vbYesNo, "Décision...")
            Case vbYes
                .ClearContents
                MsgBox "Terminé !"
            Case vbNo
                Exit Sub
            End Select
        End If
        Exit Sub
    End With
fin:
    MsgBox ("Les cellules sont vides !")
End Sub

A bientôt :)
 

mutzik

XLDnaute Barbatruc
Re : effacer cellule mais pas formule

bonjour,

sinon, un bon truc pour simplifier ce genre d'effacement
toutes les feuilles qui doivent être éffacées en bloc (avec le même champ (range), tu les fait commencer par tbl_xxxxxx
tbl pour table et xxxxx pour le nom de la feuille
tu testes ensuite pour faire ton clearcontents que sur les feuilles dont le nom commence par 'tbl_'
et le tour et joué
 

kabamel

XLDnaute Occasionnel
Re : effacer cellule mais pas formule

Merci Doublezero pour ta reponse
je viens de vérifier quand les cellules sont vides quand on clique un message d'erreur apparait. comment palier à ça.
Je vous un fichier exemple
 

Pièces jointes

  • Nettoie.xlsm
    57.6 KB · Affichages: 77

Statistiques des forums

Discussions
312 345
Messages
2 087 485
Membres
103 557
dernier inscrit
gerard.messerlin68@orange