Coller une Plage

Fermé
jijudu Messages postés 211 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 3 septembre 2009 - 22 mai 2008 à 10:39
jijudu Messages postés 211 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 3 septembre 2009 - 29 mai 2008 à 15:54
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 !!

8 réponses

Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
22 mai 2008 à 10:53
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
jijudu Messages postés 211 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 3 septembre 2009 3
22 mai 2008 à 11:27
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
jijudu Messages postés 211 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 3 septembre 2009 3
22 mai 2008 à 11:40
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
jijudu Messages postés 211 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 3 septembre 2009 3
22 mai 2008 à 11:53
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jijudu Messages postés 211 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 3 septembre 2009 3
22 mai 2008 à 12:26
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
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
22 mai 2008 à 14:58
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
jijudu Messages postés 211 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 3 septembre 2009 3
22 mai 2008 à 14:47
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
Ivan-hoe Messages postés 433 Date d'inscription dimanche 17 février 2008 Statut Membre Dernière intervention 17 octobre 2008 309
22 mai 2008 à 15:02
Quelle persévérance ! Courage !
(voir post 7)
0
jijudu Messages postés 211 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 3 septembre 2009 3
29 mai 2008 à 15:47
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
jijudu Messages postés 211 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 3 septembre 2009 3
29 mai 2008 à 15:54
Merci bien !! ; )
0