Autres Code VBA supression formule classeur Excel 2007

otarc

XLDnaute Junior
Bonjour,

Je voudrai un code VBA pour supprimer toutes les formules de toutes les feuilles de mon classeur excel, est-ce que cela est possible ?
Cependant, les valeurs doivent rester malgrè la disparition des formules.

En pratique excel, ça équivaut à copier+collage spécial valeur

Je vous remercie pour votre retour,

Bien cordialement
 
Solution
Bonjour,

Quelque chose comme ça peut-être :
VB:
Sub SansFormule()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.UsedRange.Value = ws.UsedRange.Value
    Next
End Sub

Cordialement

jmfmarques

XLDnaute Accro
Bonjour
quelque chose comme ceci ?
VB:
Dim sh As Worksheet, plage As Range
For Each sh In ActiveWorkbook.Worksheets
  On Error Resume Next ' -->> pour le cas où aucune formule
  Set plage = sh.Cells.SpecialCells(xlCellTypeFormulas)
  If Not plage Is Nothing Then plage.Value = plage.Value
  On Error GoTo 0
Next
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

Quelque chose comme ça peut-être :
VB:
Sub SansFormule()
    Dim ws As Worksheet
    For Each ws In ThisWorkbook.Worksheets
        ws.UsedRange.Value = ws.UsedRange.Value
    Next
End Sub

Cordialement
 

jmfmarques

XLDnaute Accro
Il ne m'est pas possible de ne pas réagir au choix ainsi fait.
La méthode retenue peut exposer (selon le classeur) à de graves insuffisances de mémoire.
Celle que j'ai proposée n'est d'ailleurs pas non plus totalement à l'abri de ce genre de mésaventure, mais énormément moins.
Ce ne sont pas toujours les codes les plus simples qui sont les moins risqués.
 

Hasco

XLDnaute Barbatruc
Repose en paix
Bonjour,

@jmfmarques :il y a toujours quelque chose à dire sur une méthode ou l'autre. La réponse faite était à la hauteur du peu d' informations données par le demandeur, qui aura tout loisir de choisir ce qu'il veut, d'apprendre, modifier et perfectionner.

Sur votre méthode je pourrais dire que 'ActiveWorkbook' , sans demande de confirmation, la rend dangereuse en cas de lancement inopportun.

Réagissez, réagissez, mais vos assertions, assénées comme vérités restent cependant très relatives.

Bonne continuation
 
Dernière édition:

jmfmarques

XLDnaute Accro
Désolé, Roblochon, mais il ne s'agit :
- ni de simples "assertions"
- ni de particularités exceptionnelles du classeur
Le code qui a été accepté tombera tout simplement en erreur (mémoire insuffisante), dès lors que le Usedrange est important.
Je viens d'en faire le test : sur ma machine et avec l'une des feuilles allant jusqu'à la colonne "XX" et la ligne 500000 (très loin d'être exceptionnel, hein ...)-->> sortie brutale en debug pour mémoire insuffisante. Cette insuffisance de mémoire pourra de surcroît intervenir à des niveaux de usedrange différents selon à la fois la machine et ce qu'il y reste de mémoire disponible au moment de l'opération
Ne pas en faire état serait, de ma part, manquer d'honnêteté, voire trahir.
Sur ce ...
 
Dernière édition:

Hasco

XLDnaute Barbatruc
Repose en paix
Re,

Oui, c'est vrai, vous avez raison j'ai oublié qui vous êtes et votre état de devin, que vous connaissiez tout des besoins et conditions particulières des demandeurs.

Bref, vous êtes le meilleur.

C'est pourquoi et sur ce ... je vous souhaite la bonne journée.
 

jmfmarques

XLDnaute Accro
A Roblochon
Je n'ai en général rien à faire des états d'âme.
Mon rôle a ici été d'alerter sur les conséquences du code adopté, dès lors que l'une des feuilles du classeur était volumineuse (et pas vraiment nécessairement très volumineuse, d'ailleurs).
Je ne veux pas être responsable, en me taisant, d'un plantage intervenant éventuellement plus tard (lorsque, ayant été abondée, l'une -il suffit d'une - des feuilles sera devenue importante en occupation de lignes et colonnes.
Je réitère donc tout ce que j'ai dit et prie pour que ce soit lu et compris par tout éventuel visiteur de la présente discussion.
Bonne journée.
 

jmfmarques

XLDnaute Accro
Ah bon?! Ce n'en est pas un ceci :
Absolument pas. C'est, comme d'ailleurs dit, une réaction nécessaire, à ce qui pourrait générer un bug dès que le usedrange de n'importe laquelle des feuilles devient important (du fait de données ajoutées) :)
Il importe à mon sens que tout lecteur de cette discussion sache tout du risque non négligeable couru

otarc, que j'ai pris la peine de contacter par MP m'ayant répondu que son classeur n'était composé que de six petites feuilles avec peu de données, le code adopté est sans danger pour lui.
Il en reste toutefois un de manière plus générale (et bien plus fréquente), raison pour laquelle j'insiste sur tout ce que j'ai dit plus haut. Et ce d'autant que, sans cette alerte, le prochain visiteur pourrait se laisser avoir ...
 
Dernière édition:

Discussions similaires

Réponses
22
Affichages
743
Réponses
8
Affichages
138
Réponses
4
Affichages
180

Statistiques des forums

Discussions
312 104
Messages
2 085 330
Membres
102 862
dernier inscrit
Emma35400