Copier coller valeurs pour plusieurs feuilles [Résolu]

Emy - 19 avril 2017 à 11:14 - Dernière réponse :  Emy
- 20 avril 2017 à 14:29
Bonjour,

J'ai trouvé un code qui permet sur le classeur de copier/coller en valeurs toutes les feuilles du classeur.

Sur un fichier il fonctionner parfaitement mais sur un autre me dit que "la sélection de l'objet Worksheet a échoué".
Pouvez-vous éclairer ma lanterne ?

Merci

CODE :
Dim Feuille As Worksheet, mémo As Boolean, feuilleRef As Worksheet

Application.ScreenUpdating = False

Set feuilleRef = ActiveSheet

For Each Feuille In Worksheets
Feuille.Select
Cells.Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Range("A1").Select

Next Feuille
feuilleRef.Activate

Application.CutCopyMode = False
Application.ScreenUpdating = True
Afficher la suite 

7 réponses

Répondre au sujet
ThauTheme 4338 Messages postés mardi 21 octobre 2014Date d'inscription 6 septembre 2017 Dernière intervention - 19 avril 2017 à 12:34
0
Utile
Bonjour Emy, bonjour le forum,

Ton code est incomplet. D'abord il te faut retirer l'onglet destination de la boucle. Ensuite, si tu colles toujours en A1, tu effaces les données de la feuille précédente et par conséquent, au final, tu n'auras que le dernier onglet copié... Essaie comme ça :

Sub Macro1()
Dim OD As Worksheet
Dim O As Worksheet
Dim DEST As Range

Application.ScreenUpdating = False
Set OD = Worksheets("Feuil1") 'ou Set OD=ActiveSheet (à adapter à ton cas)
For Each O In Worksheets
    If Not O.Name = OD.Name Then
        Set DEST = IIf(OD.Range("A1").Value = "", OD.Range("A1"), OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0))
        O.UsedRange.Copy DEST
    End If
Next O
OD.Select
Application.ScreenUpdating = True
End Sub

Commenter la réponse de ThauTheme
0
Utile
Bonjour,

J'ai testé ton code, mais ça laisse les formules (pas de copier/coller valeurs à ce que je vois)
Commenter la réponse de Emy
ThauTheme 4338 Messages postés mardi 21 octobre 2014Date d'inscription 6 septembre 2017 Dernière intervention - 19 avril 2017 à 15:32
0
Utile
Re,

Oui désolé. La modif :

Sub Macro1()
Dim OD As Worksheet
Dim O As Worksheet
Dim DEST As Range

Application.ScreenUpdating = False
Set OD = Worksheets("Feuil1") 'ou Set OD=ActiveSheet (à adapter à ton cas)
For Each O In Worksheets
    If Not O.Name = OD.Name Then
        Set DEST = IIf(OD.Range("A1").Value = "", OD.Range("A1"), OD.Cells(Application.Rows.Count, "A").End(xlUp).Offset(1, 0))
        O.UsedRange.Copy
        DEST.PasteSpecial (xlPasteValues)
    End If
Next O
OD.Select
Application.ScreenUpdating = True
End Sub

Commenter la réponse de ThauTheme
0
Utile
Bonjour et merci pour tes réponses, mais cela ne fonctionne toujours pas.
Pour essayer d'expliquer, je veux créer une copie d'un classeur en écrasant les formules.
J'ai l'ai fait sur d'autres avec une partie du code mis dans le sujet, les actions sont :
Open (Le classeur a copier)
Save as (Copie)
CODE ci-dessus
Save
Close

Désolé mais étant novice en VBA des fois je me perds !
Commenter la réponse de Emy
ThauTheme 4338 Messages postés mardi 21 octobre 2014Date d'inscription 6 septembre 2017 Dernière intervention - 20 avril 2017 à 08:44
0
Utile
Bonjour Emy, bonjour le forum,

"Ne fonctionne pas" ne signifie rien !... mais comme tu sembles peu enclin à donner des explications je ne vais pas me prendre la tête pour toi...
Commenter la réponse de ThauTheme
0
Utile
Comme je l'ai indiqué je suis novice, ce qui te semble être de la "mauvaise volonté" et en réalité un manque de connaissance.

Merci quand-même pour ton temps.
Commenter la réponse de Emy
0
Utile
Pour ceux qui auraient la même recherche :
http://excel-apps.blogspot.fr/2012/03/copier-coller-en-valeur-un-classeur.html?m=1
Commenter la réponse de Emy