Coller une Plage

jijudu Messages postés 215 Statut Membre -  
jijudu Messages postés 215 Statut Membre -
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

  1. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
     
    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
    0
  2. jijudu Messages postés 215 Statut Membre 3
     
    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 !!

    +
    0
  3. jijudu Messages postés 215 Statut Membre 3
     
    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 ...
    0
  4. jijudu Messages postés 215 Statut Membre 3
     
    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 !!!!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. jijudu Messages postés 215 Statut Membre 3
     
    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.???
    0
    1. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
       
      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.
      0
  7. jijudu Messages postés 215 Statut Membre 3
     
    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 ^^

    ++
    0
    1. Ivan-hoe Messages postés 433 Date d'inscription   Statut Membre Dernière intervention   310
       
      Quelle persévérance ! Courage !
      (voir post 7)
      0
  8. jijudu Messages postés 215 Statut Membre 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 !
    0
  9. jijudu Messages postés 215 Statut Membre 3
     
    Merci bien !! ; )
    0