Re : Sélection complexe de cellules
Salut,
Une solution mais sans aucun contrôle.
Sub RecopieSelection()
' *******************************************
' * Macro créé le 26/01/2008 par Celeborn61 *
' *******************************************
XB = Selection.Cells.Row
MinAX = 999
MinAY = 999
For Each Aire In Selection.Areas
'Cherche la plage la plus à gauche et en haut si plusieur à gauche
AX = Aire.Column
AY = Aire.Row
If AX < MinAX Then
'La plus à gauche
MinAX = AX
MinAY = AY
ElseIf AX = MinAX Then
'Si plusieur alligné à gauche, recherche ma plus haute
If AY < MinAY Then
MinAX = AX
MinAY = AY
End If
End If
Next Aire
'Boite pour la selection de la cible
Set RngInput = Application.InputBox("Choix de la cellule cible", "Choix utilisateur", , , , , , 8)
Cible = RngInput.Address
CibAY = Range(Cible).Row
CibAX = Range(Cible).Column
'Copie des différentes aires
For Each Aire In Selection.Areas
Aire.Copy Destination:=Range(Cells(CibAY + Aire.Row - MinAY, CibAX + Aire.Column - MinAX), Cells(CibAY + Aire.Row - MinAY, CibAX + Aire.Column - MinAX))
Next Aire
End Sub
Selection des plages de cellules, appel de la macro, la macro demande la cellule cible.
Attention, la cellule cible devient la cellule la plus haute de(s) la(es) plage(s) la(es) plus à gauche.