Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Copier Coller transposé et variable

2 réponses
Avatar
Maximus
Bonjour

Voici ce que je désire faire
Sur une feuille f1 copier A1:A15,coller transposé sur feuille f2 en A2
Sur f1 copier A16:A31 coller transposé sur f2 en A3
...
Sur f1 copier A65520:A65535 coller transposé sur f2 en A4370

Voici mon problème
Réaliser tout ceci par macro VBA, et plus particulièrement comment désigné
un range de cellules avec des variables (car j'aimerai faire une boucle for)

Voici ce que j'ai fait, mais qui ne marche pas...
""
Dim i As Integer
Dim h As Integer
Dim j As Integer

Cells.NumberFormat = "@"

i = 1
j = 2
For i = 0 To 65520
Sheets("f1").Select
Range(ActiveCell(i, 1), ActiveCell(i + 14, 1)).Select
Selection.Copy
Sheets("f2").Select
Range(ActiveCell(j, "A"), ActiveCell(j, "O")).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True
i = i + 15
j = j + 1

Next
""

Merci de m'éclairer parce que là je suis perdu
@+Max

2 réponses

Avatar
David
Bonjour,

J'ai regardé ton code et cela ne m'etonne pas que ca ne marche pas. voici ce
que tu peux faire pour arranger ton code :
For i = 0 To 65520
tu remplaces par

For i = 1 To 65520
car les cellules commencent a partir de 1 (tu peux d'ailleurs anlever la
1ere ligne i = 1 qui ne sers a rien)

Range(ActiveCell(i, 1), ActiveCell(i + 14, 1)).Select
Remplaces par :

Activesheet.Range(Cells(i, 1), Cells(i + 14, 1)).Select
En effet, je ne crois pas que tu veuilles utiliser ActiveCell qui recupere
les cellules actives car tu ne les selectionnes pas avant. Donc le meixu est
d'utiliser l'objet Cells permettant de selectionner des cellules a une place
bien spécifique.
Range(ActiveCell(j, "A"), ActiveCell(j, "O")).Select
Activesheet.Range(Cells(j, "A"), Cells(j, "O")).Select

Pour la meme raison.

En esperant que cela resoude ton problème,

bonne journée

David

"Maximus" wrote in message
news:446ec36b$0$18350$
Bonjour

Voici ce que je désire faire
Sur une feuille f1 copier A1:A15,coller transposé sur feuille f2 en A2
Sur f1 copier A16:A31 coller transposé sur f2 en A3
...
Sur f1 copier A65520:A65535 coller transposé sur f2 en A4370

Voici mon problème
Réaliser tout ceci par macro VBA, et plus particulièrement comment désigné
un range de cellules avec des variables (car j'aimerai faire une boucle
for)

Voici ce que j'ai fait, mais qui ne marche pas...
""
Dim i As Integer
Dim h As Integer
Dim j As Integer

Cells.NumberFormat = "@"

i = 1
j = 2
For i = 0 To 65520
Sheets("f1").Select
Range(ActiveCell(i, 1), ActiveCell(i + 14, 1)).Select
Selection.Copy
Sheets("f2").Select
Range(ActiveCell(j, "A"), ActiveCell(j, "O")).Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=True
i = i + 15
j = j + 1

Next
""

Merci de m'éclairer parce que là je suis perdu
@+Max



Avatar
Maximus
Bonsoir

Merci de votre réponse..Problème résolu avec un Do While et effectivement un
appel des cellules par cells et non activecells

Cordialement
@+Max

"David" a écrit dans le message de
news:
Bonjour,

J'ai regardé ton code et cela ne m'etonne pas que ca ne
marche pas. voici ce que tu peux faire pour arranger ton
code :
For i = 0 To 65520
tu remplaces par

For i = 1 To 65520
car les cellules commencent a partir de 1 (tu peux
d'ailleurs anlever la 1ere ligne i = 1 qui ne sers a rien)

Range(ActiveCell(i, 1), ActiveCell(i + 14, 1)).Select
Remplaces par :

Activesheet.Range(Cells(i, 1), Cells(i + 14, 1)).Select
En effet, je ne crois pas que tu veuilles utiliser
ActiveCell qui recupere les cellules actives car tu ne
les selectionnes pas avant. Donc le meixu est d'utiliser
l'objet Cells permettant de selectionner des cellules a
une place bien spécifique.
Range(ActiveCell(j, "A"), ActiveCell(j, "O")).Select
Activesheet.Range(Cells(j, "A"), Cells(j, "O")).Select

Pour la meme raison.

En esperant que cela resoude ton problème,

bonne journée

David

"Maximus" wrote in message
news:446ec36b$0$18350$
Bonjour

Voici ce que je désire faire
Sur une feuille f1 copier A1:A15,coller transposé sur
feuille f2 en A2 Sur f1 copier A16:A31 coller transposé
sur f2 en A3 ...
Sur f1 copier A65520:A65535 coller transposé sur f2 en
A4370
Voici mon problème
Réaliser tout ceci par macro VBA, et plus
particulièrement comment désigné un range de cellules
avec des variables (car j'aimerai faire une boucle for)

Voici ce que j'ai fait, mais qui ne marche pas...
""
Dim i As Integer
Dim h As Integer
Dim j As Integer

Cells.NumberFormat = "@"

i = 1
j = 2
For i = 0 To 65520
Sheets("f1").Select
Range(ActiveCell(i, 1), ActiveCell(i + 14, 1)).Select
Selection.Copy
Sheets("f2").Select
Range(ActiveCell(j, "A"), ActiveCell(j, "O")).Select
Selection.PasteSpecial Paste:=xlPasteAll,
Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
i = i + 15
j = j + 1

Next
""

Merci de m'éclairer parce que là je suis perdu
@+Max