Copie sans macros et sans fonctions excel

kwakos

XLDnaute Occasionnel
Coucou le forum !!!!

Comment va ? Moi bcp mieux, j'ai dormi !!! :p

Bon et bien de retour dans le monde des gens réveillés, je me pose une ultime question...
Mon classeur jour qui contient 5 feuilles et des tonnes de macros :D, je voudrais en faire une sauvegarde journalière dans un nouveau classeur daté du jour qui ne contient plus que 2 feuilles mais sans les fonctions excel...
Je m'explique:
De mon classeur CAISSE, je veux sauvegarder dans SAFE (feuil1, feuil3), mais dans CAISSE certaines cellules de la feuil1 dependent de la feuil2("config")(que je ne veux pas sauvegarder). Je fais donc un copier/coller pour ne pas me retrouver avec une tonne de macro dans SAFE. Jusque là tout va bien, maintenant dans SAFE qd je regarde mes cellules de calculs, je me retrouve avec des formules types : ='[21 novembre 2008.xls]calcul'!AG7 (où 21 novembre 2008.xls est le fichier temporaire de CAISSE avant sauvegarde)...

En gros : je voudrais que mon classeur SAFE n'ai que le résultats des calculs et non les fonctions de calcul du classeur temporaire...

J'utilise pour l'instant...

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim destination As Workbook
Workbooks.Open (ThisWorkbook.Path & "\CLIENTS.xls")
Set destination = ActiveWorkbook
ThisWorkbook.Sheets("Clients").Range("A5:G5000").Copy destination.Sheets("Clients").Range("A5")
destination.Close SaveChanges:=True
Dim destination2 As Workbook
Workbooks.Open (ThisWorkbook.Path & "\SAFE.xls")
Set destination2 = ActiveWorkbook
ThisWorkbook.Sheets("Journee").Range("A2:Q180").Copy destination2.Sheets("Journee").Range("A2")
ThisWorkbook.Sheets("Compte Rendu").Range("A7:Q50").Copy destination2.Sheets("Compte Rendu").Range("A7")
destination2.Close
End Sub

Merci a tous ceux qui auront eu le courage de ma lire et de m'éclairer... :eek:
 

tototiti2008

XLDnaute Barbatruc
Re : Copie sans macros et sans fonctions excel

Bonjour kwakos,

à tester :

remplacer

Code:
ThisWorkbook.Sheets("Compte Rendu").Range("A7:Q50").Copy destination2.Sheets("Compte Rendu").Range("A7")

par

Code:
ThisWorkbook.Sheets("Compte Rendu").Range("A7:Q50").Copy
destination2.activate
destination2.Sheets("Compte Rendu").Range("A7").pastespecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
destination2.Sheets("Compte Rendu").Range("A7").pastespecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
thisworkbook.activate
application.cutcopymode = false
 

kwakos

XLDnaute Occasionnel
Re : Copie sans macros et sans fonctions excel

Bonjour kwakos,

à tester :

remplacer

Code:
ThisWorkbook.Sheets("Compte Rendu").Range("A7:Q50").Copy destination2.Sheets("Compte Rendu").Range("A7")

par

Code:
ThisWorkbook.Sheets("Compte Rendu").Range("A7:Q50").Copy
destination2.activate
[COLOR="Orange"]destination2.Sheets("Compte Rendu").Range("A7").pastespecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False[/COLOR]
destination2.Sheets("Compte Rendu").Range("A7").pastespecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
thisworkbook.activate
application.cutcopymode = false

Re forum,
Salut tototiti2008,

Merci de t'etre penché sur mon problème, malheureusement je t'ai surligné là où ça bug.... une idée ???

Encore merci

kwakos
 

Gael

XLDnaute Barbatruc
Re : Copie sans macros et sans fonctions excel

Bonsoir Kwakos, bonsoir Tototiti2008,

Avec un peu la même idée, j'aurai fait un copier/coller valeurs de chaque feuille:

Code:
ThisWorkbook.Sheets("Journee").Range("A2:Q180").Co py destination2.Sheets("Journee").Range("A2")
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False
ThisWorkbook.Sheets("Compte Rendu").Range("A7:Q50").Copy destination2.Sheets("Compte Rendu").Range("A7")
    Cells.Select
    Selection.Copy
    Selection.PasteSpecial Paste:=xlPasteValues
    Application.CutCopyMode = False

@+

Gael
 

tototiti2008

XLDnaute Barbatruc
Re : Copie sans macros et sans fonctions excel

Bonjour Gael,
Re,

dans

destination2.Sheets("Compte Rendu").Range("A7").pastespecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

il faut absolument un espace après SkipBlanks _
 

kwakos

XLDnaute Occasionnel
Re : Copie sans macros et sans fonctions excel

Le forum,

Tototiti2008, oui j'ai bien mis l'espace....
Gael, ton code me copie toujours les fonctions de calcul et non le texte affiché...

Oops, je vous embête hein ? :(

En tout cas merci pour vos pistes, je rentre chez moi et me remet à étudier ça...

a plus
 

kwakos

XLDnaute Occasionnel
Re : Copie sans macros et sans fonctions excel

Le forum,
Tototiti2008,
Gael,
Alex67800,

Ooooouh, de plus en plus de XLDnautes se penchent sur mon problème...
Malheureusement, Alex67800 cela ne marche pas plus... J'ai toujours les cellules avec fonctions de calcul plutot que les chiffres...

Merci à tous de votre aide

a tout de suite ;)

kwakos
 

Staple1600

XLDnaute Barbatruc
Re : Copie sans macros et sans fonctions excel

Bonsoir


A essayer (et adapter à tes souhaits)

Code:
Sub SaveWithoutCodeONLY_VALUES()
'source:turtle44 | 180108
Dim WS As Worksheet
Dim i As Integer
Dim j As Long
Dim sarrWS() As String
ReDim sarrWS(1 To ThisWorkbook.Worksheets.Count)
i = 0
    For Each WS In ThisWorkbook.Worksheets
        i = i + 1
        sarrWS(i) = WS.Name
    Next WS
    For j = 1 To UBound(sarrWS)
    'modifs valeurs seules
        With Worksheets(sarrWS(j))
            With .UsedRange.Cells.SpecialCells(xlCellTypeFormulas)
            .Value = .Value
            End With
        End With
    Next
ThisWorkbook.Worksheets(sarrWS()).Copy
End Sub
 

kwakos

XLDnaute Occasionnel
Re : Copie sans macros et sans fonctions excel

Bonsoir


A essayer (et adapter à tes souhaits)

Code:
Sub SaveWithoutCodeONLY_VALUES()
'source:turtle44 | 180108
Dim WS As Worksheet
Dim i As Integer
Dim j As Long
Dim sarrWS() As String
ReDim sarrWS(1 To ThisWorkbook.Worksheets.Count)
i = 0
    For Each WS In ThisWorkbook.Worksheets
        i = i + 1
        sarrWS(i) = WS.Name
    Next WS
    For j = 1 To UBound(sarrWS)
    'modifs valeurs seules
        With Worksheets(sarrWS(j))
            With .UsedRange.Cells.SpecialCells(xlCellTypeFormulas)
            .Value = .Value
            End With
        End With
    Next
ThisWorkbook.Worksheets(sarrWS()).Copy
End Sub

....

:eek::eek::eek::eek::eek:

:D

Bon alors là je dois admettre que j'ai rien compris à cette formule, mais ayant une confiance sans faille en Staple1600, je vais copier bêtement tout ça :p

Je vous tiens au courant

a+
 

kwakos

XLDnaute Occasionnel
Re : Copie sans macros et sans fonctions excel

Tototiti, Gael, Alex, Staple, le forum....

Une nouvelle journée commence et je me relance à corps perdu dans mes classeurs excel...
J'ai testé sur ma feuille ton code Staple, mais ça coince chez moi...

Sub SaveWithoutCodeONLY_VALUES()
'source:turtle44 | 180108
Dim WS As Worksheet
Dim i As Integer
Dim j As Long
Dim sarrWS() As String
ReDim sarrWS(1 To ThisWorkbook.Worksheets.Count)
i = 0
For Each WS In ThisWorkbook.Worksheets
i = i + 1
sarrWS(i) = WS.Name
Next WS
For j = 1 To UBound(sarrWS)
'modifs valeurs seules
With Worksheets(sarrWS(j))
With .UsedRange.Cells.SpecialCells(xlCellTypeFormulas)
.Value = .Value
End With
End With
Next
ThisWorkbook.Worksheets(sarrWS()).Copy
End Sub


Qu'est-ce qui s'passe-t-il donc que c'est qui va pas bien ou quoi ?

Hihi bon je me penche sur la question

a+

kwakos
 

kwakos

XLDnaute Occasionnel
Re : Copie sans macros et sans fonctions excel

Re tout le monde

En fait le problème semble venir du fait que j'ai une cellule sélectionnée dans la feuille. En effet Staple1600, sur ta feuille Test, si tu sélectionne une cellule avant de cliquer sur le bouton2, cela bug au même endroit que pour moi...

On approche, on approche.... :)

kwakos
 

Staple1600

XLDnaute Barbatruc
Re : Copie sans macros et sans fonctions excel

Re


Quand je parlais du petit hic, c'est que la recopie de la feuille, il y a les boutons qui lancent les macros.

Donc il faut rajouter le code pour les supprimer.

Autre possibilité de bug: s'il y a un graphique, il n'est pas recopié

EDITION: Il faut cocher (dans VBE) , dans le menu Outils/Références
Microsoft Visual Basic for Applications Extensibility 5.3

Code:
Sub SaveWithoutCodeONLY_VALUES()
'source:turtle44 | 180108
Dim VBProj As VBIDE.VBProject
Dim VBComp As VBIDE.VBComponent
Dim CodeMod As VBIDE.CodeModule
Dim WS As Worksheet, obj As OLEObject, i%, j&
Dim sarrWS() As String
ReDim sarrWS(1 To ThisWorkbook.Worksheets.Count)
i = 0
    For Each WS In ThisWorkbook.Worksheets
        i = i + 1
        sarrWS(i) = WS.Name
    Next WS
    For j = 1 To UBound(sarrWS)
    'modifs valeurs seules
        With Worksheets(sarrWS(j))
            With .UsedRange
            .Value = .Value
            End With
        End With
    Next
ThisWorkbook.Worksheets(sarrWS()).Copy
'suppression commandbutton
ActiveSheet.OLEObjects.Delete
On Error GoTo 0
'suppression du code VBA
Set VBProj = ActiveWorkbook.VBProject
For Each VBComp In VBProj.VBComponents
If VBComp.Type = vbext_ct_Document Then
Set CodeMod = VBComp.CodeModule
    With CodeMod
        .DeleteLines 1, .CountOfLines
    End With
        Else
    VBProj.VBComponents.Remove VBComp
        End If
Next VBComp
End Sub
 
Dernière édition:

alex67800

XLDnaute Impliqué
Re : Copie sans macros et sans fonctions excel

Bonjour le forum,
En effectuant des recherches un peu partout j'ai trouvé ceci:

Avec enregister sous:
Ou faire un copier/coller par dessus:

Sub copyShAsWbk()
Dim i As Integer
Application.ScreenUpdating = False
ActiveWorkbook.SaveAs "c:\test.xls"
For i = 1 To ActiveWorkbook.Sheets.Count
Sheets(i).Cells.Copy
Sheets(i).[A1].PasteSpecial xlValues
Next i
ActiveWorkbook.Save
End Sub

Je ne l'ai pas testé. Lol j'ai juste élargit le champ des recherche.

A tester donc.

P.S:
Encore un autre début de piste:

' Sélectionne les feuilles et les copie dans un nouveau classeur
Sheets(Arr).Copy
' Déprotéger toutes les feuilles du nouveau classeur
Application.ScreenUpdating = False
For i = 1 To Sheets.Count
Sheets(i).Activate
Range("A1").Select
ActiveSheet.Unprotect
Next i
Sheets(1).Activate
Range("A1").Select
Application.ScreenUpdating = True
' Elimine les formules et ne conserve que les valeurs
With ActiveWorkbook
For i = 1 To .Sheets.Count
.Sheets(i).UsedRange.Value = .Sheets(i).UsedRange.Value
Next i
End With
 

Discussions similaires

Statistiques des forums

Discussions
312 570
Messages
2 089 768
Membres
104 271
dernier inscrit
acuponctus