Excel 2013 Macro de copie d'une feuille vers d'autres feuilles

Résolu
Lodhoss2 Messages postés 29 Statut Membre -  
Lodhoss2 Messages postés 29 Statut Membre -
Bonjour à tous,

Tout d'abord je tiens à préciser que j'y connais rien en dev/VB ... et quand je veux faire des macros, j'utilise le bouton "Enregistrer" et "stop" ^^.

J'ai créé une feuille avec quelques formules + mise en forme (feuille 1) et je voudrais, pour chaque nouvelle feuille créée pourvoir copier une partie des lignes de la première feuille vers la nouvelle feuille mais quand j'exécute la macro sur une nouvelle feuille (feuille 3,4,5,...) après avoir enregistrer ma macro à l'aide du bouton "enregistrer macro" (sur la feuille 2) , le problème est que la destination sera toujours la feuille 2 que je me serais servie pour faire l'enregistrement et ma feuille 3 sera toujours vierge (ce qui ne me parait pas plutôt normale).

Y aurait il une astuce pour que la destination soit la feuille que j'ai sélectionnée et pas celle qui ma servie à la création de ma macro?

Merci d'avance!!!

3 réponses

  1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
     
    Bonjour

    Où se trouve ta macro ?
    Si elle est dans le Worksheet d'une feuille elle ne s'applique qu'à cette feuille
    Par contre si elle dans un Module elle peut être appelée de n'importe quelle feuille et appliquée à cette feuille avec Activesheet au lieu du nom de la feuille

    Ce serait plus simple si tu copiais ici l'intégralité de la macro que tu as enregistré

    Cdlmnt
    0
  2. Lodhoss2 Messages postés 29 Statut Membre 1
     
    Merci pour votre réponse rapide!

    Alors je ne sais pas où ce trouve ma macro, ni comment le voir...
    Voici les 2 macros concernées:

    Sub CopieCases()
    '
    ' CopieCases Macro
    '

    '
    Range("A1").Select
    Sheets("Octobre 2014").Select
    Rows("4:10").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Novembre 2014").Select
    Rows("4:10").Select
    ActiveSheet.Paste
    Rows("12:18").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=9
    Rows("20:26").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=9
    Rows("28:34").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=12
    Rows("36:42").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=3
    Rows("44:50").Select
    ActiveSheet.Paste
    ActiveWindow.SmallScroll Down:=-48
    Columns("B:B").EntireColumn.AutoFit
    Columns("L:L").EntireColumn.AutoFit
    End Sub

    Sub MiseEnPage()
    '
    ' MiseEnPage Macro
    '

    '
    Sheets("Octobre 2014").Select
    Range("B3:I10").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Novembre 2014").Select
    Range("B3:I10").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    Range("B11:I18").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=9
    Range("B19:I26").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=9
    Range("B27:I34").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=9
    Range("B35:I42").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    ActiveWindow.SmallScroll Down:=6
    Range("B43:I50").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
    SkipBlanks:=False, Transpose:=False
    End Sub
    0
    1. via55 Messages postés 14393 Date d'inscription   Statut Membre Dernière intervention   2 759
       
      Pour rendre les macros applicables à n'importe quelle feuille :
      1) ALT F11 pour ouvri editeur VBA
      2) Onglet Insertion Module
      3)Copier et coller les macros dans la page blanche du module en modifiant les noms s'il existent déjà ailleurs, mettre par exemple Sub CopieCases2()
      4) En début de chaque macro (juste après le Sub) ajouter la ligne suivante :
      nom=activesheet.name
      5) Remplacer dans chaque macro Sheets("Novembre 2014").Select par sheets(nom).select

      Il ne reste plus appeler la macro depuis la feuille de destination

      Cdlmnt
      0
  3. Lodhoss2 Messages postés 29 Statut Membre 1
     
    Merci Beaucoup!

    Ça fonctionne nickel!

    Je vais me garder ça dans un coin pour les prochaines fois!

    Merci encore!
    Cdlmmt
    0