Copier coller valeurs pour plusieurs feuilles

Résolu/Fermé
Emy - 19 avril 2017 à 11:14
 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
A voir également:

7 réponses

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
19 avril 2017 à 12:34
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

0
Bonjour,

J'ai testé ton code, mais ça laisse les formules (pas de copier/coller valeurs à ce que je vois)
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
19 avril 2017 à 15:32
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

0
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 !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
20 avril 2017 à 08:44
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...
0
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.
0
Pour ceux qui auraient la même recherche :
http://excel-apps.blogspot.fr/2012/03/copier-coller-en-valeur-un-classeur.html?m=1
0