Enregister un classeur en changeant toutes formules en valeur

Dessimoz

XLDnaute Nouveau
Bonjour, (et joyeuses fêtes en passant)

Je planche sur un problème et j'ai trouvé la solution, malheureusement je ne trouve pas comment organiser le tout :

L'objectif : en enregistrant un classeur Excel, je veux que toutes les cellules, de tous les onglets deviennent des valeurs (exit les formules et les liens).

manuellement, je vois ce que ça donne, on prend chaque onglet un après l'autre, on fait ctrl-A, copier - collage spécial - valeur.

Merci à celui ou ceux qui pourront m'aiguiller.

Salut.
Dessimoz
 

jeanpierre

Nous a quitté
Repose en paix
Re : Enregister un classeur en changeant toutes formules en valeur

Bonjour Dessimoz,

As-tu essayé ta manip. après avoir mis en route l'enregistreur de macro... ?

Il devrait te donner de bonnes indiquations.

Pratique et surtout un bon début vers le VBA, même si le code n'est pas toujours "très propre" il reste performant.

Bon Noël et bonne découverte.

Jean-Pierre
 

Dessimoz

XLDnaute Nouveau
Re : Enregister un classeur en changeant toutes formules en valeur

Salut Jean-Pierre,

Oui, j'ai essayé. En fait, ce qui me manque, c'est que le nombre d'onglet varie d'un classeur à l'autre, donc il faudrait faire la macro qui :

compte le nombre d'onglet du classeur, puis :
passe au classeur 1, ctrl-a, copier-collage spécial
passe au classeur 2, ..........
passe au classeur 3,. ..........

Moi, c'est au niveau de la définition du nombre de d'onglet puis de la répétition de l'opéaration qui me fait défaut.
 

Dessimoz

XLDnaute Nouveau
Re : Enregister un classeur en changeant toutes formules en valeur

Voilà, j'ai fais une petite macro... (bon c'est pas le bon code très propre mais bon)

Sub Macro2()
'
' Macro2 Macro
' Macro enregistrée le 24.12.2009 par Dessimoz
'
On Error Resume Next

Sheets(1).Select
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select

Sheets(2).Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select

Sheets(3).Select
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select

Sheets(4).Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select

Sheets(5).Select
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select

Sheets(6).Select
Cells.Select
Application.CutCopyMode = False
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select

Sheets(1).Activate
End Sub
 
G

Guest

Guest
Re : Enregister un classeur en changeant toutes formules en valeur

Bonjour,

Voici qui devrait le faire:

Code:
Sub CopierCollerValeurTouteFeuilles()
    Dim sh As Worksheet
    For Each sh In Worksheets
        sh.UsedRange.Copy
        sh.UsedRange(1).PasteSpecial xlValues
    Next
    Application.CutCopyMode = False
End Sub

A+
 

Dessimoz

XLDnaute Nouveau
Re : Enregister un classeur en changeant toutes formules en valeur

et voilà le code propre

Sub Macro3()
'
' Macro3 Macro
' Macro enregistrée le 24.12.2009 par Dessimoz

For Each Sheet In ActiveWorkbook.Sheets
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Range("A1").Select
Next Sheet

End Sub
 

Dessimoz

XLDnaute Nouveau
Re : Enregister un classeur en changeant toutes formules en valeur

Petit problème.

avec ce code :
Sub Macro3()
' Macro3 Macro
' Macro enregistrée le 24.12.2009 par Dessimoz
'Dim sheet As Worksheets

For Each sheet In ActiveWorkbook.Worksheets
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False
Next sheet
End Sub

ça ne fonctionne plus (pas) ! ça marche uniquement sur la page active !
 

jeanpierre

Nous a quitté
Repose en paix
Re : Enregister un classeur en changeant toutes formules en valeur

Re, Bonsoir Hasco,

Si ti veux des problèmes, continue à fusionner les cellules...

Est-ce bien raisonnable ? Il y a d'autres solutions pour la même apparence.

Bon noël.

Jean-Pierre
 

jeanpierre

Nous a quitté
Repose en paix
Re : Enregister un classeur en changeant toutes formules en valeur

Re,

Avec Excel <=2003, tu peux fusionner des cellules sans passer par la fusion en dur.

Selection de tes cellules et Menu Format/Cellule, onglet Alignement et Centré sur plusieurs colonnes.

Valable uniquement en ligne mais pas en colonnes.

Plus propre et plus accessible à une macro.

Jean-Pierre
 

Staple1600

XLDnaute Barbatruc
Re : Enregister un classeur en changeant toutes formules en valeur

Bonsoir à tous


Deux autres possibilités



Code:
     Sub suppress_formulesII()
Dim ws As Worksheet
'toutes les cellules ici sont pris en compte
For Each ws In Worksheets
With ws.UsedRange
    .Value = .Value
End With
Next
End Sub
Code:
     Sub suppress_formules()
Dim ws As Worksheet
'remplacement des formules par les valeurs
'dans les seules cellules contenant des formules
For Each ws In Worksheets
With ws.UsedRange.Cells.SpecialCells(xlCellTypeFormulas, 23)
    .Value = .Value
End With
Next
End Sub

Issues d'une de mes réponses dans ce fil
https://www.excel-downloads.com/threads/copie-valeur-de-tous-les-onglets-vba.104510/
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 853
Membres
103 975
dernier inscrit
denry