Copier coller valeurs pour plusieurs feuilles

Résolu
Emy -  
 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

7 réponses

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    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
  2. Emy
     
    Bonjour,

    J'ai testé ton code, mais ça laisse les formules (pas de copier/coller valeurs à ce que je vois)
    0
  3. ThauTheme Messages postés 1564 Statut Membre 160
     
    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
  4. Emy
     
    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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. ThauTheme Messages postés 1564 Statut Membre 160
     
    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
  7. Emy
     
    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
  8. Emy
     
    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