coller une plage d'une feuille vers une autre feuille

miloo

XLDnaute Junior
[Résolu] coller une plage d'une feuille vers une autre feuille

Bonjour, je suis complètement novice en VBA.
J'ai essayé de fair ce que je veux en faisant un enregistrement de macro puis en adaptant avec des recherches sur le forum, sans succès.

Je voudrais copier la plage de cellules L4:AH40 d'une feuille "Sem7jours" (cette plage est d'ailleurs nommée) vers une une autre feuille à partir d'une cellule pré-sélectionnée. Le collage devra être un collage "normal" (d'ailleurs qu'y a-t-il dans un collage "normal": formules+format? - il me faudrait la validation aussi) + un collage spécial de la largeur des colonnes.
En résumé, je voudrais sélectionner une cellule dans une feuille quelconque puis exécuter la macro, qui devra faire le collage de cette fameuse plage à partir de cette cellule active.

J'espère être assez explicite.

Merci d'avance pour le temps que vous voudrez bien me consacrer!!

Miloo
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : coller une plage d'une feuille vers une autre feuille

Bonjour miloo,

Une macro à lancer par un moyen quelconque : bouton de commande, touches de raccourci clavier, ...

Espérant t'avoir aidé.

Cordialement.

Code:
Private Sub CopieCellules()
Application.ScreenUpdating = False
Sheets("Sem7jours").Range("L4:AH40").Copy
With Selection
  .PasteSpecial Paste:=xlPasteAll
  .PasteSpecial Paste:=xlPasteValidation
  .PasteSpecial Paste:=xlPasteColumnWidths
End With
Application.ScreenUpdating = True

End Sub
 

miloo

XLDnaute Junior
Re : coller une plage d'une feuille vers une autre feuille

merci beaucoup papou-net!
ca fonctionne.
pour info, à quoi sert ici la fonction Application.ScreenUpdating = False , puis True à la fin?

cerise sur le gateau pour compléter mon code, serait-il possible ensuite de déselectionner la dernière colonne (le tout est déjà sélectionné à la suite de la copie) pour enfin grouper les colonnes avec "Selection.Columns.Group"?

merci d'avance
 

Papou-net

XLDnaute Barbatruc
Re : coller une plage d'une feuille vers une autre feuille

merci beaucoup papou-net!
ca fonctionne.
pour info, à quoi sert ici la fonction Application.ScreenUpdating = False , puis True à la fin?

cerise sur le gateau pour compléter mon code, serait-il possible ensuite de déselectionner la dernière colonne (le tout est déjà sélectionné à la suite de la copie) pour enfin grouper les colonnes avec "Selection.Columns.Group"?

merci d'avance

Concernant ta première question, les instructions Application.ScreenUpdating sont utilisées pour empêcher (=False) la mise à jour de l'écran à chaque instruction de la macro : l'écran n'est "rafraîchi" (=True) qu'à la fin, ce qui empêche le scintillement de l'écran et accélère notablement le déroulement de la macro.

Concernant ta deuxième demande, voici donc comment compléter ton code :

Code:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Sheets("Sem7jours").Range("L4:AH40").Copy
With Selection
  .PasteSpecial Paste:=xlPasteAll
  .PasteSpecial Paste:=xlPasteValidation
  .PasteSpecial Paste:=xlPasteColumnWidths
End With
[COLOR="RoyalBlue"][B]Premcel = ActiveCell.Address
dernlg = ActiveCell.Row + Selection.Rows.Count - 1
derncl = ActiveCell.Column + Selection.Columns.Count - 2
Range(Premcel & ":" & Cells(dernlg, derncl).Address).Select
Selection.Columns.Group[/B][/COLOR]
End Sub

Cordialement.
 

miloo

XLDnaute Junior
Re : coller une plage d'une feuille vers une autre feuille

Merci beaucoup Papou-net, la macro fonctionne à merveille grâce à toi.

En plus, je pense avoir compris le code, alors c'est parfait! (les "Selection.Rows.Count - 1" et "Selection.Columns.Count - 2" car on prend en référence la cellule active)

Merci encore
J'édite pour marquer le fil en "Résolu"
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16