Excel - Une macro pour copier des lignes et des colonnes

Problème

Je travaille sur une macro pour copier d'un classeur (feuille) et coller sur un autre (classeur)

Office 2007 et Windows XP

Dans le premier classeur, j'ai toutes les données qui, selon les requêtes. est filtré. Comment dire en macro pour copier les enregistrements de 'résultats'? Ces enregistrements de résultats changent constamment.

J'enregistre une macro avec ces étapes:

  • 1. ouvrez output.xlsx (classeur cible)
  • 2. Ctrl + A (pour sélectionner toutes les données déjà présentes) et effacer (toutes)
  • 3. classeur source (input.xlsm) copie les enregistrements de résultat
  • 4. coller spécial dans le classeur cible
  • 5. Soucez le classeur et arrêtez l'enregistrement de la macro

Le reste de la macro fonctionne bien, le problème réside dans la définition de la plage d'enregistrements de résultats que vous pouvez qualifier de dynamiques.

Ci-dessous, la macro, mais son code généré automatiquement:

 Sub Macro1 () '' Macro21 Macro '' Workbooks.Open Nom du fichier: = _ "O: dataorderrefList-output.xltx" _, modifiable: = True Selection.CurrentRegion.Select Selection.Clear Range ("A1"). Sélectionnez Windows ( "ReferenceList.xlsm"). Activez Selection.CurrentRegion.Select Selection.Copy Windows ("refList-output.xltx"). Activez Selection.PasteSpecial Paste: = xlPasteColumnWidths, Opération: = xlNone, _ SkipBlanks: = False, Transpose: = False Selection.PasteSpecial Paste: = xlPasteFormats, Opération: = xlNone, _ SkipBlanks: = False, Transpose: = False Selection.PasteSpecial Paste: = xlPasteValues, Opération: = xlNone, SkipBlanks _: = False, Transpose: " A1 "). Sélectionnez Application.CutCopyMode = False ActiveWorkbook.Save Windows (" ReferenceList.xlsm "). Activez la plage (" Table_Query_from_MS_Access_Database [#Headers, [N ° de commande]] "). Sélectionnez End Sub 

Cela fonctionne bien, mais je dois aussi faire une sélection en fonction des résultats et autres formats.

Solution

J'ai essayé ma suggestion. Lorsque vous sélectionnez MERELY une sélection de données filtrée inclut également les cellules masquées (masquées en raison du filtrage), vous devez utiliser la propriété "specialcells" comme suggéré par moi. pouvez-vous modifier sur cette base.

Il existe également une disposition SANS activer les différentes fenêtres ou sélectionner différentes plages.

J'ai donner une alternative à la portion pastespecial de votre macro

 ThisWorkbook.Worksheets ("sheet1"). UsedRange.SpecialCells (xlCellTypeVisible) .Copy Workbooks ("book4"). Feuilles de travail ("sheet1"). Range ("A1"). PasteSpecial Paste: = xlPasteValues, Paste: = xlPasteCouleur de couleur : = xlPasteFormats _, coller: = xlPasteColumnWidths 

Si les deux livres sont des livres enregistrés, vous devez utiliser "book4.xls" ou "book4.xlsm" ". Ce classeur signifie que le module du classeur dans lequel la macro est parquée peut vous permettre de modifier la macro.

Remarque

Merci à venkat1926 pour cette astuce sur le forum.

Article Précédent Article Suivant

Les Meilleurs Conseils