Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 16/12/2011, 10h48   #1
Membre éprouvé
 
Avatar de Runsh63
 
Homme Duc
Nihiliste
Inscription : mars 2011
Messages : 396
Détails du profil
Informations personnelles :
Nom : Homme Duc
Âge : 31
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Nihiliste
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 396
Points : 420
Points : 420
Par défaut Copier /coller en valeur les données de deux feuilles qui viennent d'être déplacées

Bonjour,

Dans le cadre de mon travail, je suis amené à envoyer des fichiers de reporting à plusieurs équipes. J'ai donc une base Access liée à des fichiers Excel, lesquels fichiers Excel sont remplis de formules. Afin de ne pas casser ces liens, en fin de traitement, je souhaiterai automatiser la copie de deux onglets dans un nouveau classeur. Et dans ce nouveau classeur, copier et coller les cellules EN VALEUR.
J'arrive à copier mes deux onglets mais je n'arrive pas à lui faire coller en dur les valeurs. Pouvez-vous m'aider SVP ? Ci-dessous la fin de mon code :

Code :
1
2
3
4
5
6
7
8
'Copier les onglets "Expenses" et "Detail local accounts" dans un nouveau classeur
 
    Sheets(Array("Expenses", "Detail local accounts")).Copy
 
        With Sheets(Array("Expenses", "Detail local accounts"))
            .Cells.Copy
            .PasteSpecial Paste:=xlPasteValues
        End With
Je vous remercie par avance !
__________________
Cordialement,

Runsh
Runsh63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 11h10   #2
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour,

Essaie :

Code :
1
2
3
4
5
6
7
'Copier les onglets "Expenses" et "Detail local accounts" dans un nouveau classeur
    Dim Sh As Worksheet
    Sheets(Array("Expenses", "Detail local accounts")).Copy
    For Each Sh In Sheets
        .Cells.Copy
        .PasteSpecial Paste:=xlPasteValues
    Next Sh
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 11h29   #3
Membre éprouvé
 
Avatar de Runsh63
 
Homme Duc
Nihiliste
Inscription : mars 2011
Messages : 396
Détails du profil
Informations personnelles :
Nom : Homme Duc
Âge : 31
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Nihiliste
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 396
Points : 420
Points : 420
Bonjour DanielC,

Tout d'abord, merci pour ton code, l'embêtant c'est que comme tel, il bloque sur

Avec unvalid or unqualified reference

et si j'enlève les "." devant .Cells et .PasteSpecial, il me met :

Sub or Funtion not defined.

As-tu une idée de ce qu'il faut faire pour parer à cela ?

Merci de ton aide !
__________________
Cordialement,

Runsh
Runsh63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 11h47   #4
Membre Expert
 
Avatar de MarcelG
 
Homme Marcel GALANO
Développeur informatique
Inscription : juillet 2009
Messages : 644
Détails du profil
Informations personnelles :
Nom : Homme Marcel GALANO
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Finance

Informations forums :
Inscription : juillet 2009
Messages : 644
Points : 1 255
Points : 1 255
Par défaut COPIE

Bonjour à vous deux, Bonjour le Forum,

Tout d'abord, 3 remarques

1 - Si tu déclares ta variable SH comme feuille de calcul, alors il serait plus logique de balayer la collection des feuilles de calcul de ton classeur (hors graphiques)

2 - Utiliser la propriété Cells telle quelle est redondant. En effet, il n'est pas nécessaire d'actionner des millers de cellules si seulement un nombre restreint d'entre elles ne sont utilisées.

3 - Dans le code ci-dessus, il manque la méthode With

Tu peux donc coder ainsi

Code :
1
2
3
4
5
6
7
8
Public Sub ESSAI()
Dim Sh As Worksheet
For Each Sh In Worksheets
        With Sh.UsedRange
                .Value = .Value
        End With
Next Sh
End Sub
Reviens si nécessaire.
__________________

Bien Cordialement.

Marcel

Pas de messagerie personnelle pour vos questions, s'il vous plaît. La réponse peut servir aux autres membres. Merci.


MarcelG est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 12h19   #5
Expert Confirmé Sénior
 
Homme Daniel
aucune
Inscription : septembre 2011
Messages : 2 004
Détails du profil
Informations personnelles :
Nom : Homme Daniel
Localisation : France, Seine et Marne (Île de France)

Informations professionnelles :
Activité : aucune

Informations forums :
Inscription : septembre 2011
Messages : 2 004
Points : 4 037
Points : 4 037
Bonjour MarcelG,

Citation:
Dans le code ci-dessus, il manque la méthode With
Au temps pour moi.

En ce qui concerne le point 1, seules deux feuilles existent dans le classeur qui vient d'être créé. Comme Runsh63 veut faire des collages valeurs, on peut présumer qu'il s'agit de feuille de travail.
En ce qui concerne le point 2, il s'agit d'une fonction intégrée Excel. Elle est instantanée et ne requiert pas plus de temps de calcul qu'une copie partielle. Pour poursuivre ta logique, il faudrait même mettre :

Code :
With Sh.UsedRange.SpecialCells(xlCellTypeFormulas)
__________________
Cordialement.

Daniel

Citation:
La plus perdue de toutes les journées est celle où l'on n'a pas ri.
Chamfort
Daniel.C est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/12/2011, 12h22   #6
Membre éprouvé
 
Avatar de Runsh63
 
Homme Duc
Nihiliste
Inscription : mars 2011
Messages : 396
Détails du profil
Informations personnelles :
Nom : Homme Duc
Âge : 31
Localisation : France, Puy de Dôme (Auvergne)

Informations professionnelles :
Activité : Nihiliste
Secteur : Industrie

Informations forums :
Inscription : mars 2011
Messages : 396
Points : 420
Points : 420
Merci beaucoup à vous deux, ça marche parfaitement !

Bonne journée !
__________________
Cordialement,

Runsh
Runsh63 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h43.


 
 
 
 
Partenaires

Hébergement Web