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

Copier coller répétif (fichier ouvert)

2 réponses
Avatar
nbredin
Bonjour le forum,

J'esp=E8re que vous pourrez m'aider!!
J'avais lanc=E9 un appel =E0 l'aide pour faire cet exercice =E0 partir d'un
fichier ferm=E9 on m'a conseill=E9 de le faire =E0 partir d'un fichier
ouvert c'est ce que j'ai fait mais j'ai encore un pb..

Je dois copier des donn=E9es dans un fichier ferm=E9 et les coller dans
un
nouveau. Ces donn=E9es sont sur x colonnes et y lignes. Je veux les
coller dans le nouveau fichier sur une seule colonne (Chaque colonne
de l'ancien fichier l'une en dessous de l'autre).

Le code cidessou fonctionne bien si le second "range " est d=E9fini par
une cellule genre "A5". PAr contre s'il est d=E9fini =E0 l'aide de Cells.
CA ne fonctionne pas.. Pourquoi? ou est mon erreur?

Merci d'avance a tous ceux qui me liront, et m'apporteront leur
aide..

Sub Macro1()

Workbooks.Open ("classeur1.xls")

For i =3D 1 To 6
'34

Windows("Classeur1.xls").Activate
Range(Cells(5, i), Cells(8, i)).Select
Selection.Copy
Windows("Classeur2.xls").Activate
A =3D (i * 5) + 1
Range(Cells(1, A)).Select
Selection.PasteSpecial Paste:=3DxlValues, Operation:=3DxlNone,
SkipBlanks:=3D _
False, Transpose:=3DFalse

Next i

End Sub

Nathalie

2 réponses

Avatar
nbredin
On 26 fév, 09:25, wrote:
Bonjour le forum,

J'espère que vous pourrez m'aider!!
J'avais lancé un appel à l'aide pour faire cet exercice à partir d' un
fichier fermé on m'a conseillé de le faire à partir d'un fichier
ouvert c'est ce que j'ai fait mais j'ai encore un pb..

Je dois copier des données dans un fichier fermé et les coller dans
un
nouveau. Ces données sont sur x colonnes et y lignes. Je veux les
coller dans le nouveau fichier sur une seule colonne (Chaque colonne
de l'ancien fichier l'une en dessous de l'autre).

Le code cidessou fonctionne bien si le second "range " est défini par
une cellule genre "A5". PAr contre s'il est défini à l'aide de Cells.
CA ne fonctionne pas.. Pourquoi? ou est mon erreur?

Merci d'avance a tous ceux qui me liront, et m'apporteront leur
aide..

Sub Macro1()

Workbooks.Open ("classeur1.xls")

For i = 1 To 6
'34

Windows("Classeur1.xls").Activate
Range(Cells(5, i), Cells(8, i)).Select
Selection.Copy
Windows("Classeur2.xls").Activate
A = (i * 5) + 1
Range(Cells(1, A)).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:lse

Next i

End Sub

Nathalie



Bonjour,

Oui ben c'était vendredi pm que je me suis pris la tête.. et c'était
vendredi..
En effet il suffit de mettre Cells(a,b) Select et ca fonctionne..

Voila il n'y a plus de problème!!

Merci

Avatar
FxM
Bonjour Nathalie,

Plusieurs points :

Range("A5") et cells(5,1) désignent tout deux la même chose à
savoir la cellule A5.

Par défaut, Excel considère le suffixe.value qui désigne la valeur
de la cellule et non son adresse.

Range("A5:A8") peut aussi s'écrire range("A5").resize(4,1)

Il n'est généralement pas nécessaire de .select pour copier



Si j'ai bien compris le principe, tu cherches à copier les valeurs
entre deux classeurs.

Sub Macro1()
Workbooks.Open ("classeur1.xls")

For i = 1 To 6
Windows("Classeur1.xls").Activate
Cells(5, i).Resize(4, 1).Copy

Windows("Classeur2.xls").Activate
Cells(1, (i * 5) + 1).Select

'la ligne suivante sur une seule ligne !
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:úlse, Transpose:úlse

Next i
End Sub




En regard de la question originale qui était s'il me semble de
copier des données depuis un classeur fermé ...

Si le but est de passer de ori (classeur origine fermé) à des
(classeur destination ouvert) selon les cellules suivantes :
Ori = $E$1 des = $F$1 ($E$2 -> $F$2 jusqu'à $E$6 -> $F$6)
Ori = $F$1 des = $K$1 ($F$2 -> $K$2 jusqu'à $F$6 -> $K$6)
Ori = $G$1 des = $P$1 ($G$2 -> $P$2 jusqu'à $G$6 -> $P$6)
Ori = $H$1 des = $U$1 ($H$2 -> $U$2 jusqu'à $H$6 -> $U$6)

Ce qui suit devrait fonctionner :
Alt-F11 pour l'éditeur VBE, insertion - module, copier ce qui suit
' --- d'ici
Sub test()
'destination = classeur contenant la macro (ouvert)
'dans la feuille active !

'classeur fermé = origine
ori_chemin = "C:répertoiresous_rep" 'à adapter
ori_fichier = "origine.xls" 'à adapter
ori_feuille = "Feuil1" 'à adapter

For lig_ori = 1 To 6
For col_ori = 5 To 8
With ThisWorkbook.ActiveSheet

'ce qui suit sur une seule ligne !
.Cells(lig_ori, ((col_ori - 4) * 5) + 1).Value =
GetValue(ori_chemin, ori_fichier, ori_feuille, Cells(lig_ori,
col_ori).Address)

End With
Next col_ori
Next lig_ori
End Sub

'ce qui suit sur une seule ligne !
Public Function GetValue(ByVal path, ByVal file, ByVal sheet,
ByVal ref) As Variant

Dim Arg As String
If Right(path, 1) <> "" Then path = path & ""
If Dir(path & file) = "" Then
GetValue = "File Not Found"
Exit Function
End If

'ce qui suit sur une seule ligne !
Arg = "'" & path & "[" & file & "]" & sheet & "'!" &
Range(ref).Range("A1").Address(, , xlR1C1)

GetValue = Application.ExecuteExcel4Macro(Arg)
DoEvents
End Function
' --- jusque là

@+
FxM




Bonjour le forum,

J'espère que vous pourrez m'aider!!
J'avais lancé un appel à l'aide pour faire cet exercice à partir d'un
fichier fermé on m'a conseillé de le faire à partir d'un fichier
ouvert c'est ce que j'ai fait mais j'ai encore un pb..

Je dois copier des données dans un fichier fermé et les coller dans
un
nouveau. Ces données sont sur x colonnes et y lignes. Je veux les
coller dans le nouveau fichier sur une seule colonne (Chaque colonne
de l'ancien fichier l'une en dessous de l'autre).

Le code cidessou fonctionne bien si le second "range " est défini par
une cellule genre "A5". PAr contre s'il est défini à l'aide de Cells.
CA ne fonctionne pas.. Pourquoi? ou est mon erreur?

Merci d'avance a tous ceux qui me liront, et m'apporteront leur
aide..

Sub Macro1()

Workbooks.Open ("classeur1.xls")

For i = 1 To 6
'34

Windows("Classeur1.xls").Activate
Range(Cells(5, i), Cells(8, i)).Select
Selection.Copy
Windows("Classeur2.xls").Activate
A = (i * 5) + 1
Range(Cells(1, A)).Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:úlse

Next i

End Sub

Nathalie