Signaler

Copier coller valeurs pour plusieurs feuilles [Résolu]

Posez votre question Emy - Dernière réponse le 20 avril 2017 à 14:29 par Emy
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 
Utile
+0
plus moins
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

Donnez votre avis
Utile
+0
plus moins
Bonjour,

J'ai testé ton code, mais ça laisse les formules (pas de copier/coller valeurs à ce que je vois)
Donnez votre avis
Utile
+0
plus moins
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

Donnez votre avis
Utile
+0
plus moins
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 !
Donnez votre avis
Utile
+0
plus moins
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...
Donnez votre avis
Utile
+0
plus moins
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.
Donnez votre avis
Utile
+0
plus moins
Pour ceux qui auraient la même recherche :
http://excel-apps.blogspot.fr/2012/03/copier-coller-en-valeur-un-classeur.html?m=1
Donnez votre avis

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !