Copy paste values pour fichier entier xls

vinsvanden -  
Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'aimerais dans xls (fonction) et/ou VBA(macro) savoir comment on peut faire un copy-paste values de tout un fichier?

S'il faut faire feuille par feuille dans la macro qu'on créé, comment peut on savoir par une requète combien il y a de feuilles et quels sont les noms des feuilles?

Merci pour votre aide.

vins

1 réponse

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,
    Essaie ce code (il y a les réponses à tes questions) :
    Private Sub Elimine_les_formules()   
    ' Elimine les formules de calcul   
    '   
    Dim rngPlage As Range              'Plage des cellules utilisées   
    Dim adrCelluleInitiale As String   'Adresse de la cellule active initiale   
    Dim nomFeuilleInitiale As String   'Nom de la feuille de calcul active    
    Dim nomFeuille As String           'Nom de la feuille de calcul   
    Dim n°Feuille As Integer           'N° d'index de la feuille   
    Dim intModeDeCalcul As Integer     'Mode de calcul initial (manuel, auto, )   
    Dim flgMàjEcran As Boolean         'Etat initial de l'actualisation écran   
         
    'Enregistrer le contexte initial   
    nomFeuilleInitiale = ActiveSheet.Name   
    adrCelluleInitiale = ActiveCell.Address   
    
    'Arrêter l'actualisation automatique de l'écran et les calculs   
    flgMàjEcran = Application.ScreenUpdating   
    intModeDeCalcul = Application.Calculation   
    Application.ScreenUpdating = False   
    Application.Calculation = xlCalculationManual   
    
    'Explorer le classeur feuille à feuille   
    n°Feuille = 1   
    Do   
      'Eliminer les formules de la zone utilisée   
      nomFeuille = Sheets(n°Feuille).Name   
      Sheets(nomFeuille).Select   
      Application.StatusBar = "Suppression des formules dans " & nomFeuille   
      ' - définir la zone utilisée   
      Set rngPlage = Sheets(nomFeuille).UsedRange   
      ' - remplacer les formules par leurs valeurs   
      rngPlage.Copy   
      rngPlage.PasteSpecial Paste:=xlPasteValues   
      '- Feuille suivante   
      n°Feuille = n°Feuille + 1   
    Loop While n°Feuille <= Sheets.Count   
    
    'Restaurer le contexte initial   
    Sheets(nomFeuilleInitiale).Select   
    ActiveSheet.Range(adrCelluleInitiale).Select   
    Application.StatusBar = False   
    Application.ScreenUpdating = flgMàjEcran   
    Application.Calculation = intModeDeCalcul   
    
    End Sub


    Cordialement
    Patrice
    2
    1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      Ou beaucoup plus simple :
      Private Sub Elimine_formules()
      ' Elimine les formules de calcul
      '
      Dim rngOrigine As Range            'Plage sélectionnée initiale
        
      'Enregistrer le contexte initial
      Set rngOrigine = Selection
      
      'Explorer le classeur feuille à feuille
      For Each wsh In Worksheets
        'Remplacer les formules par leurs valeurs
        wsh.UsedRange.Copy
        wsh.UsedRange.PasteSpecial Paste:=xlPasteValues
      Next wsh
      
      'Restituer le contexte initial
      rngOrigine.Parent.Activate
      rngOrigine.Select
      
      End Sub
      0
    2. vinsvanden
       
      Bonjour,
      Merci de votre réponse.
      Je vais essayer cela.
      0
    3. vinsvanden
       
      Merci Mr le PRO. :)
      0
    4. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
       
      De rien, au plaisir de te relire sur le forum

      Patrice
      0