Copy paste values pour fichier entier xls

vinsvanden -  
Patrice33740 Messages postés 8930 Statut Membre -
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
A voir également:

1 réponse

Patrice33740 Messages postés 8930 Statut Membre 1 782
 
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
Patrice33740 Messages postés 8930 Statut Membre 1 782
 
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
vinsvanden
 
Bonjour,
Merci de votre réponse.
Je vais essayer cela.
0
vinsvanden
 
Merci Mr le PRO. :)
0
Patrice33740 Messages postés 8930 Statut Membre 1 782
 
De rien, au plaisir de te relire sur le forum

Patrice
0