EFFACER CONTENU D'UNE FEUILLE

F

FRED

Guest
Bonsoir,

Pourriez vous me donner un truc pour effacer le contenu d'une feuille par le biais d'une macro bouton;

J'ai déjà crée le bouton (ce qu'il y a de plus simple) mais pour la macro je sèche.

Merci et bon Week end
 
R

Roland

Guest
Re Fred


Tu le mets dans le code VBA de ton Bouton

Si tu as mis un bouton de commande le code est attaché à la feuille (clik droit sur lon)
Private Sub CommandButton1_Click()
Cells.Select
Selection.Clear
End Sub

ou si tu as mis un bouton de formulaire le code est à mettre dans un module
Sub Macro1()
Cells.Select
Selection.Clear
End Sub
dans ce cas il te faut affecté cette macro Macro à ton bouton (clik droit sur le bouton)
 
@

@+Thierry

Guest
Bonsoir Roland, Fred, le Forum

Attention aux "Select" inutiles Roland

Et attention aussi si on veut simplement effacer le contenu des cellules et pas leur mise en forme respective :

Sub ClearOnlyContains()
Cells.ClearContents
End Sub

Sinon, our tout effacer :
Sub ClearAll()
Cells.Clear
End Sub

Bonne soirée
@+Thierry
 
F

FRED

Guest
Super merci,

Mais car quand on est novice et que l'on s'exprime mal, j'ai omis de préciser que ma feuille de calcul est un tableau avec des formules.

Là cela m'éfface complétement la feuille, alors que moi je voudrais que certaines cellules à effacer !?

Je sais j'aurais du commencer par là peut être.
Mais juste un exemple d'effacement de formules et je l'adapterai à ma feuille !

Désolé et merci encore.
 
F

FRED

Guest
Merci Thierry et Roland,

Comme le précise Thierry, je veux garder le format des cellules mais effacer le contenu sans effacer les formules !! Exigeant en plus !!

Alors comment adapter la forumle de thierry à celle de Roland ?!

Merci le forum
 
@

@+Thierry

Guest
Re Salut Fred, Roland, le Forum

Oui tu n'as pas été très clair dans tes explications Fred !

Bon alors deux méthodes bien distinctes :

Sub ClearCellWithoutFormula()
Dim Cell As Range

For Each Cell In ActiveSheet.UsedRange
If Not Cell.HasFormula Then
Cell.ClearContents
End If
Next
End Sub

Ce code effacera le contenu de toutes les cellules de ta feuilles sauf celles contenant une formule...

Mais comme tu parles de tableau, je pense que tu pourrais aussi définir la plage à nettoyer sans avoir à faire une boucle sur toutes les cellules comme la macro ci-dessus...

Sub PlageClearContents()

Range("B11:H16,B18:H18,B20:H23,J11:J23").ClearContents

End Sub

Dans ce dernier code il te faudra redéfinir les plages qui doivent être nettoyées...

Bon Travail
@+Thierry
 
F

FRED

Guest
Ok

Je comprends bien la distinction entre les deux méthodes, la deuxième méthode se rapproche plus de l'histoire de mon tableau, car effectivement j'ai des plages de cellules a effacer et d'autres pas (celles contenant du texte).

Alors comment mettre de la 1ère formule (celle qui garde les formules et qui efface le reste) totu en définissant ma zone de celulles à effacer ??
Genre en Colonne A j'ai mon texte et ensuite de B à E j'ai mes celulles avec mes chiffres, que je rentre manuellement à certains endroits et des chiffres qui se mettent par rapport aux résultats de formules.

Donc le mieux serait du mélange des deux méthodes mais là joker, je plane et en plsu faudrait que la macro d'adapte à un bouton click.

Pas "chiant" déjà le gars !
 
@

@+Thierry

Guest
Re Re Re Fred, Roland le Forum

Et bien il suffit d'écrire ceci :

Sub ClearCellWithoutFormula()
Dim Cell As Range

For Each Cell In Range("A11:H25")
If Not Cell.HasFormula Then
Cell.ClearContents
End If
Next
End Sub

Tu pourrais même faire ceci :
For Each Cell In Range("B11:H16,B18:H18,B20:H23,J11:J23")

Pour l'affecter à un bouton, suivre les explication de Roland et voir son fichier.

Voilà je crois que tu devrais y arriver
Bonne nuit
@+Thierry
 
@

@+Thierry

Guest
Re !

En relisant : "car effectivement j'ai des plages de cellules a effacer et d'autres pas (celles contenant du texte)"

Je peux aussi te proposer ceci :

Sub ClearNumericCellWithoutFormula()
Dim Cell As Range

For Each Cell In ActiveSheet.UsedRange
If Not Cell.HasFormula And IsNumeric(Cell) Then
Cell.ClearContents
End If
Next
End Sub

Cette macro effacera le seulement contenu des cellules ayant une valeur numérique (pas celles ayant une formule ou contenant du Text)

...si çà peut te faire avancer

@+Thierry
 
F

FRED

Guest
Oui la macro précédente, celle ci :
Sub ClearCellWithoutFormula()
Dim Cell As Range

For Each Cell In Range("A11:H25")
If Not Cell.HasFormula Then
Cell.ClearContents
End If
Next
End Sub


Me plait bien. Je paramètre ce que je veux en cellules ou plage de celulles, ok.
Le Hic à présent c'est que cela efface bine les celulle qui contiennent du numérique, elle ne touche pas à celle qui ont des forumles, mais quand je voulais dire que cela ne devait pas effacer les formules, j'entendais effacer le résultats des formules mais pas les formules !!

Sinon c'est super cela efface bien els celulles désirées, sauf ce dernier petit os.
 
@

@+Thierry

Guest
Re Fred,

J'ai l'impression que l'on est pas sur la même longueur d'onde !! lol

Humm tu veux effacer le résultat des formules mais pas les formules... Là ce n'est plus VBA mais il faut savoir écrire tes formules avec des SI !

Admettons en Colonne "E" tu as une formule du style Total TTC et que la macro va nettoyer tout ce que tu as en colonne "D"

Donc ta formule doit s'écrire comme ceci : =SI(D10="";"";D10*20,6%+D10)

car si tu écris = D10*20,6%+D10 tu auras un 0... avec le SI ci-dessus tu n'auras rien...

Mais t'ai-je compris ?

@+Thierry
 
F

FRED

Guest
Ah pourtant depuis le début vous me comprenez super bien je trouve.

La méthode que tu m'avais donnée tout à l'heure me plaisait bien.
Il est vrai que je ne suis pas très explicite.
Je vais tenter de faire clair.

J'ai une plage de cellules de A1:A6 qui contient des formules (simple genre + et - avec des si et compagnie) et des chiffres que l'on entre manuellement.

J'ai la même chose de B1 à B16 mais pas forcément identique horizontalement. Par là je veux dire que tu n'aura pas forcément en A1 une formule et en B1 une autre formule. Cela peut être en A1 une formule et en B1 un chiffre à entrer manuellement.

Donc pour l'instant, ta dernière macro :

Sub ClearCellWithoutFormula()
Dim Cell As Range

For Each Cell In Range("A11:H25")
If Not Cell.HasFormula Then
Cell.ClearContents
End If
Next
End Sub

Efface bien les cellule ou il y a des chiffres rentrés manuellement, mais elle ne remet pas à zéro les celulles ou il y a des formules mais je n'ai pas encore testé sur l'ensemble du classeur, car logiquement ces formules sont alimentés en chiffres par eux entrés manuellement donc si je mets à zéro les cellules entrées manuellemetn je devrais avori les cellules à zéro aussi pour celles contenant des formules.

Oulà je ne sais pas si tu me suis là, mais moi j'ai du mal à l'heure ci mais je crois que je tiens le bon bout.

Merci encore, je te tiendrai au courant si cela marche en appliquant cela au classeur.
 

Discussions similaires

Réponses
9
Affichages
662
  • Résolu(e)
Microsoft 365 Formule SI
Réponses
8
Affichages
187

Statistiques des forums

Discussions
312 322
Messages
2 087 275
Membres
103 504
dernier inscrit
Marie28