Copier/coller Excel VBA

Bonjour à tous voici mon premier post sur ce site

je cherche à copier coller des cellules sous excel 2007 (je pense qu'il faut utiliser du VBA

jai un classeur de 300 feuilles +1

la première feuille récapitules les 300 autres je nest que celle la pour linstant les autre etant quasi vierge

chaque ligne reprend une des 300 feuilles nomées de 0001 à 0300
au debut de chaque ligne (colonne A) est inscrit les numéro de la page qu'elle récapitule.

exemples de copier que je voudrais reproduire 300 fois :
la ligne numérotée 0001 de la feuille nommée "stock" : copier la cellule de la colonne I en B2 de la feuille "0001" ; copier la cellule J en G2 de la feuille 0001 ; copier la cellule K en E2 de la feuille 0001 ; copier la cellule L en J2 de la feuille 0001, copier la cellule N en J3 de la feuille 0001 et enfin la cellule P en J4 de feuille 0001.
je ne precise pas le chiffre relatif aux cellules I ; J ; K ; L ; N ; P car je ne peu pas me basé sur la numérotation d'XL etant donné que jai des bouton pour trier je pense qu'il faut se basé sur le numéro présent en colonne A.

merci de vous penchez sur mon problème
Jacky

5 réponses

  1. Contributeur
    Bonjour,
    Je ne comprend pas !
    Les données sont à copier sur la feuille Stock ? : à partir de quel ligne ?
    Les données des autres feuilles sont sur quel ligne ?
    Tu dis.
    A+
    0
    1. non les données sont à copier depuis la feuilles stock

      la feuille stock est composée de 300 lignes. Les lignes sont numéroté en colonne A de 0001 à 0300.

      dans le meme classeur j'ai 300 feuilles nommée de 0001 à 0300

      Sur la ligne numérotée 0001 je veu copier les cellules qui sont colonne I; J; K; L; N; et P (en gros cest peut être les celulle I1;J1;K1;L1;N1 et P1 mais ca peut aussi etre I300;J300;K300;L300;N300et P300 selon la façon dont je les tri) dans les cellules B2 ; G2 ; E2 ; J2 ; J3 ; J4 de la feuille 0001

      Idem pour la ligne 0002 de la feuille "Stock" mais sur la feuille "0002"

      Est ce plus clair?
      Jacky
      0
      1. Bonjour Jacky,

        de mon point de vue, une chose a la fois :
        en 1 - tu alimentes la feuille stock
        en 2 - tu tries
        et alors pas de probleme particulier pour faire l'algorithme de copie (a moins que je n'ai pas bien saisi, faudra dans ce cas re-expliquer).

        As-tu deja un algorithme que tu veux qu'on corrige ou bien pars-tu de 0 ?

        A+
        Madelio
        0
        1. bonjour

          ma feuille de stock sera amener à changer par la suite (ajout ou suppression de lignes) de ce fait je préférerais pour voir continuer à trier après.

          N'y aurait il pas quelquechose a faire dans le genre :

          Si cellule de la colonne A=0001
          alors Feuille Stock.cellule I ; J ; K ; L ; N ; P.select
          Feuille 0001.cellule(B2 G2 E2 J2 J3 J4) collage spécial.value

          et puis un ptit truc pour lincrémenter ensuite ???

          je sais pas du tou je suppose
          merci
          Jacky
          0
          1. rebonjour

            je voudrais d'une prog de copie, en fait pour linstant ca peu me dépanner

            je vais commancer à la ligne 7 (numérotation XL)

            Sur la feuille "Stock" copier I7 J7 K7 L7 N7 P7 et les coller Feuille "0001" en B2 G2 E2 J2 J3 J4.

            ensuite Feuille "Stock" copier I8 J8 K8 L8 N8 P8 et les coller feuille "0002" en B2 G2 E2 J2 J3 J4

            pour copier, incrémenter les ligne de 1... pour coller les cellule reste les meme mais les feuilles sont à incrémenter de 1 sachant qu'elle sont numérotée de 0001 à 0300

            merci de votre aide
            Jacky
            0
            1. Contributeur
              Bonjour,

              Macro à installer dans le module thisworkbook de l'éditeur VBE

              Private Sub Workbook_SheetActivate(ByVal Sh As Object)
              'NOTA: sur la feuille "Stocks", les références d'onglets doivent être en format "texte"
              Dim onglet As String, lig As Integer
              
              onglet = ActiveSheet.Name
              If onglet <> "stocks" Then
                  With Sheets("stocks")
                      lig = .Columns(1).Find(onglet, .Range("A65536")).Row
                      Sheets(onglet).Range("B2") = .Cells(lig, 9)
                   '..... tes autres cellules
                  End With
              End If
              End Sub
              

              modif : ajouter exclusion si sheets onglet est activé
              0