Copie d'une feuille vers une autre...

sapeur3873 Messages postés 2 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 19 septembre 2006 - 18 sept. 2006 à 20:22
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 - 19 sept. 2006 à 22:11
bonjour,
apres avoir recuperer un fichier excel, j'ai commencé a modifier la macro.
le principe, j'ai une feuille du classeur avec des données qui sont recupéré sur les autres feuilles, avec une macro VBA, j'enregistre cette feuille dans un autre classeur excel avec un nom qui change a chaque fois.
mon souci est que lorsque j'ouvre mon nouveau fichier excel une boite de dialogue me dit:
"le classeur que vous avez ouvert comporte des liens vers les un autre classeur"

en effet mes formules d'appels se retrouvent elles aussi dans ce nouveau fichier.

je voudrais en fait faire une copie de cette feuille complete mais sans les formules, juste avec mise en page, image et valeurs dans les cases...

je vous donne la simplissime formule utilisé pour le moment faute de mieux:

Feuil4.Copy
ActiveWorkbook.SaveAs Filename:="d:\travail\devis" & nodev & ".xls"
ActiveWorkbook.Close

cette action fonctionne mais copie aussi les formules...

merci de votre aide

3 réponses

us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
18 sept. 2006 à 21:54
Bonsoir,

As-tu regardé du côté des fonctions intégrées dans Excel ?

IL en existe une très pratique pour la copie du contenu d'une cellule sans sa formule sous jacente.
En clair, si tu avais dans une cellule :
=somme(A1:B1)
et que la cellule affiche donc un résultat (disons, 9 pour l'exemple)
alors on peut faire une copie de la valeur de la cellule (9) vers une autre (ou vers un autre classeur...)

Ceci se réalise grâce à coller spécial.Différentes possibilités sont offertes, dont le coller "Valeur" (donc sans formule)

JE pense que cela est une piste à explorer...

Amicalement,
Us.
0
sapeur3873 Messages postés 2 Date d'inscription samedi 2 octobre 2004 Statut Membre Dernière intervention 19 septembre 2006
19 sept. 2006 à 21:29
bonjour,

suite....

pour continuer, je ne copie pas une cellule mais une page complete d'un classeur.
les fonctions copy et paste que j'ai trouvé fonctionne cellule/cellule.
moi je ve garder la page et les valeur de cette page sans les appels aux autres feuilles du classeur 1

je m'explique:
soit 1 classeur avec 6 feuilles, la feuille 1 met en forme des données recuperer dans les 5 autres feuilles pour faire un devis
qd j'appui sur un bouton je veut que la feuille 1 soit enregistrer dans un nouveau classeur contenant la mise en page et les valeurs de la feuille1. le classeur est refermé automatiquement.

Feuil4.Copy
ActiveWorkbook.SaveAs Filename:="d:\travail\devis" & nodev & ".xls"
ActiveWorkbook.Close

le code utilisé focntionne mais copy les formules de la feuille 1
j'ai essayé les pastespecial, mais ca fonctionne pas ...

merci de votre aide
0
us_30 Messages postés 2065 Date d'inscription lundi 11 avril 2005 Statut Membre Dernière intervention 14 mars 2016 10
19 sept. 2006 à 22:11
Bonsoir,

JE me permet d'insister. La solution que je proposai de regarder est (me semble-t-il maintenant) tout à fait adapté.

Déjà, la copie ne fonctionne pas seulement cellule par cellule, mais plage par plage (comme toutes les fonctions d'Excel), et donc, pour une feuille entière.

Pour t'en convaincre, il suffit :
- de mettre en surbrillance une plage,
- faire Edition>Copier
- Puis Edition>Copie spéciale et choisir l'option valeur.

Une chose très pratique, c'est de mettre un bouton raccourcis de cette fonction, en allant dans Affichage personnalisé. (L'icône ressemble à un dossier avec un indice "12" dessus). Je personnalise toujours Excel avec cette fonction (trop pratique)...

=

Passons, ce point.


En terme de code VBA, ce qui réalise cela automatiquement est programmable ainsi :


Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=False


et on peux rajouter, la déseelection avec :

ActiveCell.Select
Application.CutCopyMode = False


Voilà, après exécution, il restera que les valeurs à la place des formules.

Ensuite, le reste du code que tu proposes...


Amicalement,
Us.
0