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

boucle imbriquée pour collage plage multiple

2 réponses
Avatar
laucsap
Bonjour
voici un petit bout de code qui me permet de sélectionner et préparer à la copie
de plages multiples
je sèche après .copy

Ma question est : comment imbriquer une boucle qui permette de
coller le contenu de selectionAreas(i)
au même endroit F69:G74 de Sheets("HeuresHebdo") _boucle1
au même endroit K69:L74 de Sheets("HeuresHebdo") _boucle2
etc.
Merci par avance de votre aide
Sheets("H1606").Select
Range( _
"F69:G74,K69:L74,P69:Q74,U69:V74,Z69:AA74" & _
",F77:G82,K77:L82,P77:Q82,U77:V82,Z77:AA82" & _
",F93:G98,K93:L98,P93:Q98,U93:V98,Z93:AA98" & _
",F101:G106,K101:L106,P101:Q106,U101:V106,Z101:AA106" _
).Select
NbPlage = Selection.Areas.Count
For i = 1 To NbPlage
Sheets("H1606").Select
Selection.Areas(i).Copy
Sheets("HeuresHebdo").Select
?????????????????????????????????
???????????????????????????????

Next i

2 réponses

Avatar
News.aioe.org
Bonjour,
Je crois que ta question est incomplète.
Tu ne dis pas où tu veux copier ces données.
Tu donnes le nom de la feuille, mais pas l'adresse
de la destination de chacune des plages de cellules
copiées.
Je te donne un exemple :
Sélectionne toutes les feuilles dont tu veux copier ces
plages de cellules vers la feuille de destination et
appelle la macro. La macro copiera ces données
à partir de la ligne 5 (arbitraire) de la feuille HeuresHebdo.
Seules les données sont copiées sans le formatage des
plages sources.
'-----------------------------------------------------------------
Sub test()
Dim Arr(), Elt As Variant, A As Long
Dim NbRow As Long
'Numéro de la ligne où tu veux copier ces
'données dans la feuille de destination
NbRow = 5
Application.ScreenUpdating = False
Application.EnableEvents = False
Arr = Array("F69:G74", "K69:L74", "P69:Q74", "U69:V74", _
"Z69:AA74", "F77:G82", "K77:L82", "P77:Q82" _
, "U77:V82", "Z77:AA82", "F93:G98", "K93:L98" _
, "P93:Q98", "U93:V98", "Z93:AA98", "F101:G106" _
, "K101:L106", "P101:Q106", "U101:V106", "Z101:AA106")
For Each Sh In ActiveWindow.SelectedSheets
With Sh
For Each Elt In Arr
A = A + 1
x = .Range(Elt).Value
With Sheets("HeuresHebdo")
With .Cells(5, A)
.Resize(UBound(x, 1), UBound(x, 2)).Value = x
.EntireColumn.AutoFit
A = A + UBound(x, 2) - 1
End With
End With
Next
End With
Next
Application.ScreenUpdating = True
Application.EnableEvents = True
End Sub
'-----------------------------------------------------------------
MichD
Avatar
News.aioe.org
Dans cette ligne de code : With .Cells(5, A)
On doit remplacer le "5" par la variable NbRow
La ligne de code devient : With .Cells(NbRow, A)
MichD