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
?????????????????????????????????
???????????????????????????????
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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
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
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
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
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