Sub ResizeEtOffset()
' Le Classeur Test 2 / La Feuille 1 / Une Plage défini
Dim Wkb As Workbook
Dim Wks As Worksheet
Set Wkb = Workbooks("Resize et Offset.xlsm")
Set Wks = Wkb.Worksheets("Feuil1")
' Une Plage défini Colonne I2 (Ligne 2 / colonne I) à M100 (Lignes 100 / colonne M)
Dim Rgn As Range
Set Rgn = Wks.Range("A1:E100")
' On Commence les Tests
' ActiveCell sera dans ce cas la cellule active choisie dans
' Le Classeur Resize et Offset.xlsm" de la Feuille 1
' Pour le Test on Choisie la H1'
' Récupérer les donner du Classeur Test2 de la Feuille 1 qui sont les valeurs de cette plage
' "A1:E100"
'
' Avec ----->>>> RESIZE
'
'
' Pour le test
'
' Nettoyage de la zone
'
'
Cells(1, 8).Offset(, -1).Resize(43, 7).Select
MsgBox "Cells(1, 8).Offset(, -1).Resize(43, 7).Address " & vbCrLf & Cells(1, 8).Offset(, -1).Resize(43, 7).Address
Cells(1, 8).Offset(, -1).Resize(43, 7).ClearContents
'
'
' La premiére cellule sera H1
'
Cells(1, 8).Select ' H1 pour ActiveCell
'
'
' Je souhaite récupérer la premiéres Lignes (1) à la Lignes (10) de la colonnes (A)
' Resize(10,1)
' 10 = 10 lignes de la Premiére Ligne à la 10éme Ligne ---->>> par rapport a "A1"
' 1 = 1 Colonnes de la Premiére colonne à la premiére colonnes ---->>> par rapport a "A1"
ActiveCell.Resize(10, 1).Value = Rgn.Value ' Les 10 premiéres Lignes de la premiére (1) Colonnes (A)
' ActiveCell.Resize(10, 1).ClearContents
'
'
' Cette Fois
'
'
ActiveCell.Offset(, 2).Select ' Decalage de 2 Colonnes
'
'
' Je souhaite récupérer la premiéres Lignes (1) à la Lignes (10) de la colonnes (A à D)
' Resize(10,4)
' 10 = 10 lignes de la Premiére Ligne à la 10éme Ligne ---->>> par rapport à "A1"
' 4 = 4 Colonnes de la Premiére colonne à la colonnes 4 ---->>> par rapport à "A1"
ActiveCell.Resize(10, 4).Value = Rgn.Value ' 10 premiéres Lignes sur 3 Colonnes
' ActiveCell.Resize(10, 4).ClearContents
'
'
'
ActiveCell.Offset(12, -3).Select ' Decalage de 11 Lignes avec un décalage de 3 Colonnes vers la gauche
'
'
' Mais maintenat je veux de la colonne C et D Comment Faire - ?
' C'est la que Offset arrive !!
'
'
' Je souhaite récupérer la premiéres Lignes (1) à la Lignes (10) de la colonnes (C à D )
' Alors :
' Resize(10,2)
' 10 = 10 lignes de la Premiére Ligne à la 10éme Ligne ---->>> par rapport à "A1"
' 2 = 2 Colonnes de la Premiére colonne à la colonnes 2 ---->>> par rapport à "A1"
' Puis :
' : Offset(0, 2) dans l'exemple : "A1:E100" - "A1" est la premiére cellule référence de la plage
' 0 = aucun décalage pour les lignes par rapport a "A1"
' 2 = 2 décalages de colonnes par rapport à "A1" soit 2 décalages commence à "C2"
ActiveCell.Resize(10, 2).Value = Rgn.Offset(0, 2).Value ' 10 premiéres Lignes sur 2 Colonnes
' ActiveCell.Resize(10, 2).ClearContents
'
'
'
ActiveCell.Offset(, 4).Select ' Decalage de 0 Lignes avec un décalage de 4 Colonnes vers la droite
'
'
'
'
' Maintenant je souhaite récupérer après la premiére ligne de cette plage "A1:E100"
'
' Je souhaite récupérer de la la ligne 11 à la Ligne 20, Mais sur les colonne B à D
'
'
' Je souhaite récupérer de Lignes (11) à la Lignes (20) sur la colonnes (B à D )
' Alors :
' Resize(10,3)
' 10 = 10 lignes de la 11éme Lignes à la 20éme Ligne ---->>> par rapport à "A1"
' 3 = 3 Colonnes de la 2éme colonnes à la colonnes 4éme ---->>> par rapport à "A1"
' Puis :
' Alors : Offset(10, 1) dans l'exemple : "A1:E100" - "A1" est la premiére cellule référence de la plage
' 10 = 10 décalage pour les lignes par rapport a "A1"
' 1 = 1 décalages de colonnes par rapport à "A1" soit 1 décalages commence à "B2"
ActiveCell.Resize(10, 3).Value = Rgn.Offset(10, 1).Value ' Lignes 11 Lignes à la Ligne 20 sur 2 Colonnes
' ActiveCell.Resize(10, 3).ClearContents
'
'
'
ActiveCell.Offset(12, 0).Select ' Decalage de 11 Lignes avec un décalage de 0 Colonnes vers la droite
'
'
' Je souhaite récupérer la Lignes (8) à la Lignes (8) sur la colonnes (B à D )
' Alors :
' Resize(1,3)
' 1 = 1 lignes de la 8éme Lignes à la 8éme Ligne ---->>> par rapport à "A1"
' 3 = 3 Colonnes de la 2éme colonnes à la colonnes 4éme ---->>> par rapport à "A1"
' Alors : Offset(7, 1) dans l'exemple : "A1:E100" - "A1" est la premiére cellule référence de la plage
' 7 = 7 décalage pour les lignes par rapport a "A1"
' 1 = 1 décalages de colonnes par rapport à "A1" soit 1 décalages commence à "B2"
ActiveCell.Resize(1, 3).Value = Rgn.Offset(7, 1).Resize(1, 1).Value ' Lignes 11 Lignes à la Ligne 20 sur 2 Colonnes
' ActiveCell.Resize(1, 3).ClearContents
'
'
'
'
ActiveCell.Offset(3, -4).Select ' Decalage de 2 Lignes avec un décalage de 4 Colonnes vers la Gauche
'
'
'
' Maintenant récupérer une plage au Milieux de cette plage
' L'exemple
' Plage a récupérer dans la plage "A1:E100"
'
'
' Plage a récupérer est "B14:D29"
'
'
' Il Faut Appliquer 2 RESIZE Maintenant ci dessous
'
'
' Je souhaite récupérer la Lignes (14) à la Lignes (29) sur la colonnes (B à D )
' Alors : soit (Lignes 29 - Lignes 14) = (15 + 1) soit (16 Lignes) sur 3 Colonnes
' Resize(16,3)
' 16 = 16 lignes de la 14éme Lignes à la 29éme Lignes ---->>> par rapport à "A1"
' 3 = 3 Colonnes de la 2éme colonnes à la colonnes 4éme ---->>> par rapport à "A1"
' Alors : Offset(13, 1) dans l'exemple : "A1:E100" - "A1" est la premiére cellule référence de la plage
' 13 = 13 décalage pour les lignes par rapport a "A1"
' 1 = 1 décalages de colonnes par rapport à "A1" soit 1 décalages commence à "B2"
ActiveCell.Resize(16, 3).Value = Rgn.Offset(13, 1).Resize(16, 3).Value ' Lignes 11 Lignes à la Ligne 20 sur 2 Colonnes
' ActiveCell.Resize(16, 3).ClearContents
' Etc.
End Sub