copier et coller plage de cellules

  • Initiateur de la discussion gagletor
  • Date de début
G

gagletor

Guest
Bonjour à tous,

J'ai un petit souci sous excel 97.

Je dipose d'un classeur, composé de plusieurs feuilles.

Je voudrais copier une ligne allant de la cellule A6 à I6 de la feuil1 pour ensuite la coller sur la ligne 10 à partir de la case A sur la feuil11. Le tout en ajoutant une ligne avant de coller la ligne.

En résumé :

Je copie la plage A6:I6 de la feuil1
J'insère une ligne par rapport à A10 en feuil11
Je colle ma ligne en A10

En vous remerciant par avance

bonne journée
 

clarisse

XLDnaute Nouveau
bonjour !
voici le code VBA :

Sheets('Feuil1').Select
Range('A6:I6').Select
Selection.Copy
Sheets('Feuil11').Select
Rows('10:10').Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False

Si tu ne connais pas le code, la façon la plus simple de l'obtenir est de passer par l'enregistreur de macro.

Bonne journée !
 

clarisse

XLDnaute Nouveau
bonjour !
voici le code VBA :

Sheets('Feuil1').Select
Range('A6:I6').Select
Selection.Copy
Sheets('Feuil11').Select
Rows('10:10').Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False

Si tu ne connais pas le code, la façon la plus simple de l'obtenir est de passer par l'enregistreur de macro.

Bonne journée !
 
G

gagletor

Guest
Merci clarisse pour ton aide,

En fait j'ai posé la question car le code que j'avais tapé me fait une erreur. Je voulais être certain de ce que j'avais. N'ayant plus utilisé excel depuis qq mois..

En fait j'ai une erreur indice en dehors de la plage, voici mon code :

Private Sub CommandButton1_Click()
Dim i As Integer
Sheets('Feuil1').Select
For i = 6 To 13
If Cells(i, 1) < Cells(2, 2) Then
Range(ActiveCell(i, 1), ActiveCell(i, 9)).Select
Selection.Copy
Sheets('Feuil11').Select
Rows('10:10').Select
Selection.insert Shift:=xlDown
Application.CutCopyMode = False
Else
Exit Sub
End If
Next
End Sub

Je fais une comparaison de date dans mon tableau de la feuil1. Si la date de ma ligne est inférieur à la date du jour, je copie/colle la ligne dans le tableau de la feuil11, qui me sert d'historique.

Il me surligne en jaune la ligne 'Sheets('Feuil1').Select' et me dit erreur d'execution 9 : indice en dehors de la plage.

Je ne sais pas d'où celà peut venir..

Merci de votre aide
 
C

clarisse

Guest
ok, désolée j'ai cru que ton problème était juste de connaitre le code.

autre question peut être bête, dans ton code, tu as :

Range(ActiveCell(i, 1), ActiveCell(i, 9)).Select

mais as tu activé les cellules avant ?

j'ai essayé ton code, j'ai pas l'erreur que tu as..
 

clarisse

XLDnaute Nouveau
c'est encore moi

essaye ce code là, il marche chez moi dis moi si il réponds à ta question :

Dim i As Integer
Sheets('Feuil1').Select
For i = 6 To 13
Sheets('Feuil1').Select
If Cells(i, 1) < Cells(2, 2) Then
Range((Cells(i, 1)), Cells(i, 9)).Select
Selection.Copy
Sheets('Feuil11').Select
Rows('10:10').Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
End If
Next

en fait, il faut selectionner la feuil1 dans la boucle 'for', sinon tu compares les cellules de la feuil11 quand tu repasses dans la boucle 'if'..
Et en retirant le activeCell (je n'ai pas très bien compris à quoi il servait dans ce cas là.. mais je peux me tromper), cela marche très bien.
 

clarisse

XLDnaute Nouveau
c'est encore moi

essaye ce code là, il marche chez moi dis moi si il réponds à ta question :

Dim i As Integer
Sheets('Feuil1').Select
For i = 6 To 13
Sheets('Feuil1').Select
If Cells(i, 1) < Cells(2, 2) Then
Range((Cells(i, 1)), Cells(i, 9)).Select
Selection.Copy
Sheets('Feuil11').Select
Rows('10:10').Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
End If
Next

en fait, il faut selectionner la feuil1 dans la boucle 'for', sinon tu compares les cellules de la feuil11 quand tu repasses dans la boucle 'if'..
Et en retirant le activeCell (je n'ai pas très bien compris à quoi il servait dans ce cas là.. mais je peux me tromper), cela marche très bien.
 

clarisse

XLDnaute Nouveau
c'est encore moi

essaye ce code là, il marche chez moi dis moi si il réponds à ta question :

Dim i As Integer
Sheets('Feuil1').Select
For i = 6 To 13
Sheets('Feuil1').Select
If Cells(i, 1) < Cells(2, 2) Then
Range((Cells(i, 1)), Cells(i, 9)).Select
Selection.Copy
Sheets('Feuil11').Select
Rows('10:10').Select
Selection.Insert Shift:=xlDown
Application.CutCopyMode = False
End If
Next

en fait, il faut selectionner la feuil1 dans la boucle 'for', sinon tu compares les cellules de la feuil11 quand tu repasses dans la boucle 'if'..
Et en retirant le activeCell (je n'ai pas très bien compris à quoi il servait dans ce cas là.. mais je peux me tromper), cela marche très bien.
 
G

gagletor

Guest
Merci pour ton code je vais l'essayer tout de suite, si ça fonctionne je t'invite à déjeuner ;)

POur la répétition des messages je ne vois pas trop non, celà marrive quelques fois.

encore merci
 

Dull

XLDnaute Barbatruc
Salut gagletor, clarisse, le Forum,

Pour les doublons de message j'ai peut-être une petite idée. Ne fait tu pas, par hasard, 'Reculer d'une page' ou 'page précedente' après avoir posté ? si oui... ne cherche plus c'est ça :lol: :lol: :lol:
 

Discussions similaires

Statistiques des forums

Discussions
312 345
Messages
2 087 462
Membres
103 547
dernier inscrit
matospi