IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

novice VBA : copier plusieurs feuilles


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mars 2009
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 8
    Par défaut
    Bonjour,

    A partir d'un classeur "abc.xls" comportant 12 feuilles "nombre", "age", "sexe", ....
    je souhaiterai copier toujours la même ligne (B18 à GU18) pour la coller sur la ligne à partir de la cellule "B4"dans un nouveau classeur "gdfg.xls" qui a exactement les mêmes feuilles.

    --> Je ne trouve pas le code pour qu'il applique cette procédure à toutes les feuilles.

    Sachant que j'ai également un bon paquet de classeurs à traiter, je souhaiterais automatiser la procédure

    voici où j'en suis.. :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    Windows("TBE-REGIONFrance -DEFINITIVE-AN1999-3-9-2002.xls").Activate
        Sheets("recapitulatif").Select
        Range("B18:GU18").Select
        Selection.Copy
        Windows("Viticulture.xls").Activate
        Sheets("recapitulatif").Select
        Range("B4").Select
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
     
        Windows("TBE-REGIONFrance -DEFINITIVE-AN1999-3-9-2002.xls").Activate
        Sheets("recapitulatif").Select
        Range("B18:GU18").Select
        Selection.Copy
        Windows("Viticulture.xls").Activate
        Sheets("recapitulatif").Select
        Range("B4").Select
        Selection.PasteSpecial Paste:=xlPasteValuesAndNumberFormats, Operation:= _
        xlNone, SkipBlanks:=False, Transpose:=False
    Merci !!

    bon ben ce code marche même pas, il ne reconnait pas les feuilles...
    pfff

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 88
    Par défaut
    1 - il faut que tu utilises une boucle For...Next pour balayer toutes tes feuilles
    les noms des feuilles sont dans un tableau TabFeuille
    à chaque boucle, on utilise l'élément suivant du tableau comme nom de feuille

    1 bis - si tu as beaucoup de classeurs, tu pourras aussi utiliser une boucle for...next pour changer de classeur à chaque tour de boucle

    2 - tu n'as pas besoin de faire copy/paste. Tu peux simplement dire que les valeurs (value) de la plage B4:GU4 (range("B4:GU4")) de la feuille "nombre" (puis "age" puis...) du classeur résultat doivent être égales à value de range B18:GU18 de la feuille "nombre" du classeursource (j'essaye de décrire en presque français la ligne de code ci-dessous)
    mais cette méthode n'écrit que les valeurs, et pas les formats

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    Sub MaCopie()
    Dim Tabfeuille
    Dim NomFeuille As String
    Dim i As Integer
     
    Tabfeuille = Array("nombre", "age", "sexe")
     
    For i = 0 To UBound(Tabfeuille)
    NomFeuille = Tabfeuille(i)
     
    Workbooks("workbook2.xls").Sheets(NomFeuille).Range("B4:GU4").Value = Workbooks("workbook1.xls").Sheets(NomFeuille).Range("B18:GU18").Value
     
    Next i
     
    End Sub
    si tu veux quand même utiliser les copy/paste, il faut activer la feuille 1, copier, activer la feuille 2, coller
    évites les "select", applique directement à la "range" désignée l'action que tu désire (copy ou paste, selon)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Sub MaCopie()
    Dim Tabfeuille
    Dim NomFeuille As String
    Dim i As Integer
     
    Tabfeuille = Array("nombre", "age", "sexe")
     
    For i = 0 To UBound(Tabfeuille)
    NomFeuille = Tabfeuille(i)
    Debug.Print NomFeuille
     
    Workbooks("workbook1.xls").Sheets(NomFeuille).Activate
    Range("B18:GU18").Copy
     
    Workbooks("workbook2.xls").Sheets(NomFeuille).Activate
    ' avec ca tu colles les valeurs
    Range("B4:GU4").PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ' avec ca tu colles les formats
    Range("B4:GU4").PasteSpecial Paste:=xlFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
    ' avec ca tu désactive la selection de la zone copiée
    CutCopyMode = False
     
    Next i
     
    End Sub

  3. #3
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Par défaut
    Citation Envoyé par le petit nicolas
    si tu veux quand même utiliser les copy/paste, il faut activer la feuille 1, copier, activer la feuille 2, coller
    Hello Nicolas, l'activation n'est pas nécessaire. Tu peux tester
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        NoLig = 1
        NoLig2 = 2
        Workbooks("Classeur1").Worksheets("Feuil1").Rows(NoLig).Copy Workbooks("Classeur2").Worksheets("Feuil2").Rows(NoLig2)
    Juste parce qu'un Nicolas qui sait en vaut deux
    Bonne soirée

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Mai 2007
    Messages : 88
    Par défaut
    merci ouskel

    j'avais essayé sans activation, ca ne marchait pas, et je ne connaissais pas la syntaxe que tu écris.

    maintenant me v'la averti, déjà que tout seul j'avais du mal...

    à plus, bonne soirée à tous

Discussions similaires

  1. [XL-2007] Copier plusieurs feuilles d'un classeur
    Par Klode784 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 31/07/2017, 14h06
  2. Réponses: 11
    Dernier message: 12/09/2014, 15h02
  3. VBA Copier plusieurs cellules dans uen autre feuille
    Par Tm7555555 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/09/2013, 19h25
  4. [XL-2003] copier plusieur feuille sur une feuille
    Par bosk1000 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/07/2011, 16h37
  5. [XL-2003] Copier plusieurs feuilles dans une seule
    Par RussellD dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/09/2010, 15h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo