Combinaison de feuilles de travail de nombreux classeurs (Microsoft Excel)
David a plusieurs classeurs qui ont plusieurs feuilles de travail dans chacun d’eux. Il aimerait combiner une certaine feuille de calcul (une seule) de chacun de ces classeurs dans un nouveau classeur. Il sait comment faire cela manuellement en utilisant Déplacer ou Copier une feuille, mais il aimerait un moyen de le faire plus automatiquement, d’autant plus qu’il peut y avoir de nombreux classeurs qu’il doit «combiner» de cette manière.
Il existe différentes manières d’aborder ce problème, et toutes impliquent l’utilisation de macros. (Cela ne devrait pas être une surprise – les macros sont conçues pour exécuter rapidement des tâches manuelles fastidieuses.)
La macro suivante est de conception simple; il parcourt tous les classeurs actuellement ouverts et pour chaque classeur (sauf le classeur qui contient la macro) copiez la feuille nommée «Sheet1» de ce classeur dans le classeur contenant le code.
Sub CopySheets1() Dim wkb As Workbook Dim sWksName As String sWksName = "Sheet1" For Each wkb In Workbooks If wkb.Name <> ThisWorkbook.Name Then wkb.Worksheets(sWksName).Copy _ Before:=ThisWorkbook.Sheets(1) End If Next Set wkb = Nothing End Sub
Si vous souhaitez que la macro récupère une feuille de calcul différente de Sheet1, modifiez simplement la valeur de la variable sWksName pour refléter le nom de feuille de calcul souhaité. Si vous ne savez pas quel sera le nom de la feuille de calcul, mais que vous savez que la feuille de calcul à copier sera toujours la deuxième feuille de calcul de chaque classeur, vous pouvez utiliser cette variante sur la macro:
Sub CopySheets2() Dim wkb As Workbook Dim sWksName As String For Each wkb In Workbooks If wkb.Name <> ThisWorkbook.Name Then wkb.Worksheets(2).Copy _ Before:=ThisWorkbook.Sheets(1) End If Next Set wkb = Nothing End Sub
Le plus gros inconvénient des approches jusqu’à présent est peut-être que tous les classeurs doivent être ouverts. Cela n’est peut-être pas toujours faisable. Par exemple, vous pouvez avoir une centaine de classeurs différents dans un dossier et vous devez combiner une feuille de calcul à partir de chacun d’eux. Ouvrir une centaine de classeurs, bien que techniquement possible, n’est probablement pas pratique pour la plupart des gens. Dans ce cas, vous devez adopter une approche différente.
La macro suivante, CombineSheets, est de nature interactive. Il vous demande plusieurs informations, puis ajoute des feuilles de calcul au classeur en fonction de vos réponses. Il demande d’abord un chemin d’accès aux feuilles de calcul (n’incluez pas la barre oblique de fin), puis un modèle à utiliser pour les classeurs. Vous pouvez spécifier un modèle de classeur à l’aide des caractères génériques classiques astérisque () et point d’interrogation (?). Par exemple, un modèle de correspondrait à tous les classeurs, tandis qu’un modèle de Budget20 ??
renverrait uniquement les classeurs qui ont « Budget20 » au début et deux caractères quelconques après.
Sub CombineSheets() Dim sPath As String Dim sFname As String Dim wBk As Workbook Dim wSht As Variant Application.EnableEvents = False Application.ScreenUpdating = False sPath = InputBox("Enter a full path to workbooks") ChDir sPath sFname = InputBox("Enter a filename pattern") sFname = Dir(sPath & "\" & sFname & ".xl*", vbNormal) wSht = InputBox("Enter a worksheet name to copy") Do Until sFname = "" Set wBk = Workbooks.Open(sFname) Windows(sFname).Activate Sheets(wSht).Copy Before:=ThisWorkbook.Sheets(1) wBk.Close False sFname = Dir() Loop ActiveWorkbook.Save Application.EnableEvents = True Application.ScreenUpdating = True End Sub
Lorsque vous exécutez la macro, vous êtes également invité à indiquer le nom d’une feuille de calcul à copier à partir de chaque classeur correspondant. Fournissez un nom et si une telle feuille de calcul existe dans le classeur, elle est copiée au début du classeur actuel.
Si vous préférez ne pas créer votre propre macro pour combiner des feuilles de calcul, vous pouvez envisager le complément RDBMerge créé par Excel MVP Ron de Bruin.
Vous pouvez le trouver gratuitement, ici:
http://www.rondebruin.nl/win/addins/rdbmerge.htm
_Note: _
Si vous souhaitez savoir comment utiliser les macros décrites sur cette page (ou sur toute autre page des sites ExcelTips), j’ai préparé une page spéciale qui comprend des informations utiles.
lien: / excelribbon-ExcelTipsMacros [Cliquez ici pour ouvrir cette page spéciale dans un nouvel onglet de navigateur]
.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (7425) s’applique à Microsoft Excel 97, 2000, 2002 et 2003.