Macro copie valeur enregistre classeurs ouver
mdbrot
-
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
pijaku Messages postés 13513 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
je souhaite créer une macro qui fasse les opérations suivantes dans Excel:
copier en valeur toutes les cellules de toutes feuilles de tous les classeurs ouverts sauf le classeur actif
enregistrer tous les classeurs ouvert sauf le classeur actif
fermer tous les classeurs ouvert sauf le classeur actif
aujourd'hui j'ai rassemblé ce code:
CopyValueSaveAll()
For Each Wk In Workbooks
Wk.Activate
If Wk.Name <> ActiveWorkbook.Name Then
For Each cell In ActiveSheet.UsedRange
cell.Value = cell.Value
Next
Wk.Save
Wk.Close savechanges:=False
End If
Next
End Sub
qui marche a moitié car il ne copie en valeur que le première feuille de chaque classeur
et d'autre part est extremement long
donc on peut partir sur un code totalement autre.
si vous pouviez m'aider...
merci
je souhaite créer une macro qui fasse les opérations suivantes dans Excel:
copier en valeur toutes les cellules de toutes feuilles de tous les classeurs ouverts sauf le classeur actif
enregistrer tous les classeurs ouvert sauf le classeur actif
fermer tous les classeurs ouvert sauf le classeur actif
aujourd'hui j'ai rassemblé ce code:
CopyValueSaveAll()
For Each Wk In Workbooks
Wk.Activate
If Wk.Name <> ActiveWorkbook.Name Then
For Each cell In ActiveSheet.UsedRange
cell.Value = cell.Value
Next
Wk.Save
Wk.Close savechanges:=False
End If
Next
End Sub
qui marche a moitié car il ne copie en valeur que le première feuille de chaque classeur
et d'autre part est extremement long
donc on peut partir sur un code totalement autre.
si vous pouviez m'aider...
merci
A voir également:
- Macro copie valeur enregistre classeurs ouver
- Copie cachée - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Super copie - Télécharger - Gestion de fichiers
- Copie écran samsung - Guide
- Copie disque dur - Guide
3 réponses
Salut,
Oui tu ne boucles pas sur les feuilles, donc pas de risque que cela fonctionne pour toutes les feuilles de chaque classeur ouvert...
Essaye ceci :
Oui tu ne boucles pas sur les feuilles, donc pas de risque que cela fonctionne pour toutes les feuilles de chaque classeur ouvert...
Essaye ceci :
Sub Boucle_classeurs_feuilles()
Dim Wb As Workbook
Dim Ws As Worksheet
Dim nom As String
nom = ActiveWorkBook.Name
For Each Wb In Application.Workbooks 'boucle sur tous les classeurs ouverts
If Wb.Name <> nom Then
For Each Ws In Wb.Worksheets 'boucle sur toutes les feuilles du classeur
Cells.Copy
Range("A1").Select
Selection.PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
Next Ws
Wb.Save
Wb.Close
End If
Next Wb
End Sub
merci bcp, je trouve ton code bien propre.
tout la procèdure de fermeture et d'enregistrement se passe bien,
cela dit la macro ne copie pas en valeur les feuilles des autres classeurs et par contre copie en valeur le classeur actif. l'inverse de ce que j'essaie de faire.
c'est peut etre moi qui m'y prends mal, j'ai testé cela tres sommairement sur 3 classeurs que j'ai ouvert et rempli de formules.
l'as tu testé de ton coté ?
tout la procèdure de fermeture et d'enregistrement se passe bien,
cela dit la macro ne copie pas en valeur les feuilles des autres classeurs et par contre copie en valeur le classeur actif. l'inverse de ce que j'essaie de faire.
c'est peut etre moi qui m'y prends mal, j'ai testé cela tres sommairement sur 3 classeurs que j'ai ouvert et rempli de formules.
l'as tu testé de ton coté ?
Salut,
N'ayant pas tout à fait saisi ce que tu voulais, je t'ai juste donné un exemple de boucle.
Voici un autre code à adapter à ta situation :
N'ayant pas tout à fait saisi ce que tu voulais, je t'ai juste donné un exemple de boucle.
Voici un autre code à adapter à ta situation :
Sub Boucle_classeurs_feuilles()
Dim Wb As Workbook
Dim Ws As Worksheet
Dim nom As String
nom = ActiveWorkbook.Name
For Each Wb In Application.Workbooks 'boucle sur tous les classeurs ouverts
If Wb.Name <> nom Then
Wb.Activate
For Each Ws In Wb.Worksheets 'boucle sur toutes les feuilles du classeur
'copie le "usedrange" de toutes les feuilles des autres classeurs
Ws.UsedRange.Copy
'colle dans la feuille1 du classeur "actif" à la suite dans la colonne A...
With Workbooks(nom)
.Sheets(1).Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
Application.CutCopyMode = False
End With
Next Ws
Wb.Save
Wb.Close
End If
Next Wb
End Sub