Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Sauvegarde d'une Feuil en un fichier

6 réponses
Avatar
Manu
Bonsoir,

Je suis sur un fichier Version 2007 avec plusieurs feuil.

Je souhaiterais que lorsque je cliquerai sur un bouton se trouvant dans la
Feuil "Facture" que la feuil Facture s'enregistre seul en un fichier
comportant comme nom de fichier le contenu de la cellule G4 (qui est du
texte) puis un espace puis le contenu de la cellule A13 (qui est une date)
et que ce fichier se range automatiquement dans le dossier "Factures" qui se
trouve dans C:\archive\Factures

Exemple pour le nom du fichier :
En G4 j'ai : titi
en A13 j'ai : 30/10/2014
Le fichier devrai s'appeler "titi 30-10-2014.xlsx"

Je sais que l'on ne peu pas mettre de "/" en nom de fichier alors il faut
certainement faire de ce style là quelque part : MaDate =
Format(Date,"dd-MM-YYYY")

Tout en sachant que dans ma Feuil d'origine où je cliquerai sur le bouton,
cette feuil est pleine de formule, je souhaiterais que le fichier résultant
de la macro soit coller en valeur afin de supprimer toutes les formules.

Merci pour votre aide

manu


---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com

6 réponses

Avatar
MichD
Bonjour,

Essaie quelque chose comme :
Tu peux remplacer "ActiveSheet" du début de la procédure
par Worksheets("NomDelaFeuille") si tu préfères

'------------------------------------------------
Sub test()
Dim Chemin As String

Application.ScreenUpdating = False
With ActiveSheet
'afin d'enregistrer le nouveau fichier
'dans le même répertoire que l'original
Chemin = .Parent.Path
.Copy
End With

If Chemin = "" Then
'le chemin que tu désires enregistrer le fichier
Chemin = "c:usersTon profilDocuments"
End If

With ActiveWorkbook
With ActiveSheet
.UsedRange.Value = .UsedRange.Value
End With

.SaveAs Filename:=Chemin & "" & ActiveSheet.Range("G4") & _
" " & Format(Date, "DD-MM-YYYY") & ".xlsx", _
FileFormat:Q
'Si tu veux fermer le nouveau fichier
.Close False
End With
Application.ScreenUpdating = True
End Sub
'------------------------------------------------
Avatar
Manu
Trop nickel Mich, comme dab, j'ai réussi à adapter et ca fonctionne nickel
!!!

Encore Merci (une fois de plus !)

Manu

"MichD" a écrit dans le message de groupe de discussion :
m2tr2v$st8$

Bonjour,

Essaie quelque chose comme :
Tu peux remplacer "ActiveSheet" du début de la procédure
par Worksheets("NomDelaFeuille") si tu préfères

'------------------------------------------------
Sub test()
Dim Chemin As String

Application.ScreenUpdating = False
With ActiveSheet
'afin d'enregistrer le nouveau fichier
'dans le même répertoire que l'original
Chemin = .Parent.Path
.Copy
End With

If Chemin = "" Then
'le chemin que tu désires enregistrer le fichier
Chemin = "c:usersTon profilDocuments"
End If

With ActiveWorkbook
With ActiveSheet
.UsedRange.Value = .UsedRange.Value
End With

.SaveAs Filename:=Chemin & "" & ActiveSheet.Range("G4") & _
" " & Format(Date, "DD-MM-YYYY") & ".xlsx", _
FileFormat:Q
'Si tu veux fermer le nouveau fichier
.Close False
End With
Application.ScreenUpdating = True
End Sub
'------------------------------------------------


---
Ce courrier électronique ne contient aucun virus ou logiciel malveillant parce que la protection avast! Antivirus est active.
http://www.avast.com
Avatar
jean-paul.bataille
Je ne comprends pas l'affectation .usedrange.value = .usedrange.value.

With ActiveWorkbook
With ActiveSheet
.UsedRange.Value = .UsedRange.Value
End With



NB : s'il y a un TCD sur la feuille cela bogue.

MERCI à tous les contributeurs pour cette "formation permanente"
Avatar
MichD
With ActiveSheet
.UsedRange.Value = .UsedRange.Value
End With

**** Ce petit bout de code remplace les formules qu'il y a dans toute la
feuille
par la valeur que retournent ces formules.

Effectivement, si la feuille contient un TDC sur la même feuille où
sont les
données sources du TDC, cela cause un problème. Si le TDC est sur
une feuille
indépendante des données, cela devrait aller. Attention, parce la
source des
données du TDC est encore liée à la feuille de données du classeur
source.
Avatar
jean-paul.bataille
Merci MichD pour cette information,
je m'en doutais un peu mais c'est la syntaxe qui m'étonne.

With ActiveWorkbook
With ActiveSheet
.UsedRange.Value = .UsedRange.Value
End With

Comment chaque ".UsedRange.Value" sait que ça correspond à "ActiveWorkB ook" ou à "ActiveSheet" ?
Avatar
MichD
Officiellement, il manque un point "." avant ActiveSheet

With ActiveWorkbook
With .ActiveSheet
.UsedRange.Value = .UsedRange.Value
End With
End With

Lorsque tu écris dans une procédure :

worksheets("Feuil1").copy

La feuille "Feuil1" est copiée par défaut dans un nouveau classeur n'ayant
qu'une feuille, celle que l'on vient de copier. De plus, c'est de nouveau
classeur qui devient le classeur "ACTIF". Par conséquent, ActiveSheet réfère
à la seule feuille du nouveau classeur puisqu'il n'y a qu'une.

Fais un test avec cette petite macro :
'----------------------------------------
Sub test()
With ThisWorkbook
With .ActiveSheet
.Copy
End With
End With
MsgBox ActiveSheet.Parent.Name
End Sub
'----------------------------------------

La macro copie la feuille active du classeur dans lequel la macro est écrite
et retourne le nom du nouveau classeur où la feuille a été copiée.