Coller une Plage

Salut tout le monde,
Je souhaite copier une plage que je définie
Sub plage()
Dim ligne_debut as integer
Dim ligne_fin as integer
Dim tableau as double

Dim plage As Range
Set plage = Cells(ligne_debut, 2) TO Cells(ligne_fin, 9)    'Cette ligne n'est pas correct niveau langage !!

Cells(1, 13).Select

For each Cellule of plage
.....

End Sub

Je ne sais pas comment m'y prendre pour coller la plage à partir de la cellule Cells(1,13)
Je pense qu'il faut utiliser un Offset mais j'ai trés bien comprit son utilisation..

Merci !!
Configuration: Windows XP
Internet Explorer 7.0

8 réponses

  • Votes
  • Date
  • Date décroissante
  1. Ouh la la ! tu te compliques la vie !
    il suffit de sélectionner la cellule de destination et de coller, tout simplement.
    Range(cells(ligne_debut, 2), cells(ligne_fin, 9)).Copy
    cells(1, 13).Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    1. Slt Ivan-hoe, j'ai essayé ta macro elle fonctionne parfaitement mais en faite le contenue de mes cellules elles sont bizarres. Je fait donc appel à une fonction "ExtraireNbrformat" pour pouvoir avoir le bon format des futurs cellules... enfin c'est bizarre..

      Sub marche()
      Dim plage As Range
      Dim cellule As Range
      Dim ligne_debut As Integer
      Dim ligne_fin As Integer
      
      ligne_debut = 4
      ligne_fin = 7
      plage = Range(ExtraireNbrformat(Cells(ligne_debut, 4), ExtraireNbrformat(Cells(ligne_fin, 9))
      For each cellule of plage
      
      
      ....
      
      End Sub
      


      Voilà le reste, pour le collage, ne me vient pas à l'esprit ^^
      je ne sais coment y parvenir..
      merci pour l'aide !!

      +
      1. J'ai essayé ce code

        Sub marche()
        Dim plage As Range
        Dim cellule As Range
        Dim ligne_debut As Integer
        Dim ligne_fin As Integer
        
        ligne_debut = 4
        ligne_fin = 7
        Range(ExtraireNbrformat(Cells(ligne_debut, 4)), ExtraireNbrformat(Cells(ligne_fin, 9))).Copy
        Cells(1, 13).Select
        ActiveSheet.Paste
        Application.CutCopyMode = False
        End Sub


        Mais l'a compil. à échoué comme quoi : "la méthode 'range' ou '_Global' a échoué"
        Cette ligne > Range(ExtraireNbrformat(Cells(ligne_debut, 4)), ExtraireNbrformat(Cells(ligne_fin, 9))).Copy
        ne fonctionne donc pas ...
        1. Bonjour,
          Sub marche()
          Dim plage As Range
          Dim cellule As Range
          
          
          Dim Table() As Double
          
          Dim ligne_debut As Integer
          Dim ligne_fin As Integer
          
          Dim ae As Double, op As Double
          
          ligne_debut = 6
          ligne_fin = 77
          
          ReDim Table(ligne_fin - ligne_debut)
          
          For ae = ligne_debut To ligne_fin
              Table(op) = ExtraireNbrformat(Cells(ligne_debut, 9))
              op = op + 1
          Next z
          
          Cells(1, 13).Select
          ......
          End Sub
          

          Voila j'ai mi les valeurs dans un tableau mais la suite, coller toutes les valeurs à partir de la Cells(1, 13) je ne sait comment faire

          Merci !!!!
          1. hmmm non dans ce code il n'y a que les valeurs de la colonne 9, mais pas les valeurs des autres colonnes.

            Aurait-tu une solution pour ceux ci ou faut il créer autant de tableau qu'il n'y a de colonne.???
            1. Salut,
              en fait, je ne saisis pas bien ce que tu cherches à faire ; du coup, je sèche un peu pour te tépondre.
              Tu veux affecter à une variable tableau toutes les valeurs d'une plage de cellules (préalablement passées par la moulinette ExtraireNbrFormat), et ensuite "recracher" ces valeurs à-partir de la cellule M1 ? C'est bien ça ?

              Quant à ta question sur le tableau : pas nécessaire de créer autant de tableaux que de colonnes, puisque tu peux créer un tableau à 2 dimensions et l'alimenter avec 2 boucles imbriquées
              A partir de ton exemple :

              ReDim Table(nombredelignes, nombredecolonnes)
              
              For ae = ligne_debut To ligne_fin
                  For aebis = colonne_debut To colonne_fin
                      Table(op, opbis) = ExtraireNbrformat(Cells(ae, aebis))
                  Next aebis
              Next ae


              Après, pour restituer ces valeurs, tu fais à nouveau une double-boucle :
              For x = 0 To UBound(Table, 1)
                      For y = 0 To UBound(Table, 2)
                          Cells(1, 13).Offset(x, y).value = Table(x, y)
                      Next y
                  Next x

              Je comprends maintenant pourquoi tu voulais utiliser .offset.
              Range("A1").Offset(x,y) décale A1 de x lignes et y colonnes.

              Ce ne sont que des exemples, je n'ai rien testé, à toi d'adapter à ton cas.
              Bon courage.
          2. bon voila la macro mais juste pour 1 colonne
            Sub marche()
            'Dim plage As Range
            'Dim cellule As Range
            
            
            Dim n_ligne_fin_data As Integer
            Dim n_ligne_debut_data As Integer
            
            Dim ae As Double, op As Double
            
            n_ligne_debut_data = 6
            n_ligne_fin_data = 10
            
            Dim Table() As Double
            ReDim Table(n_ligne_fin_data - n_ligne_debut_data)
            
            For ae = n_ligne_debut_data To n_ligne_fin_data
                Table(op) = ExtraireNbrformat(Cells(ae, 4))
                op = op + 1
            Next ae
            
            MsgBox Table(0)
            
            
            Dim boucle As Integer, coller As Integer
            coller = 1
            For boucle = LBound(Table) To UBound(Table)
                    Cells(coller, 13).Value = Table(boucle)
                    coller = coller + 1
            Next boucle
            End Sub
            

            Comme j'ai 3 colone il me faudrai 3 fois ce code avec qqmodif...
            Jtrouve que ca va etre lourd...

            Si qq c'est pour simplifier dite le moi. Merci
            ca sera sympa ^^

            ++
            1. Quelle persévérance ! Courage !
              (voir post 7)
          3. YOP

            Tu veux affecter à une variable tableau toutes les valeurs d'une plage de cellules (préalablement passées par la moulinette ExtraireNbrFormat), et ensuite "recracher" ces valeurs à-partir de la cellule M1 ? C'est bien ça ?
            oui oui c bien cela !!^^
            et ton message 7 y répond !