Bonjour Marieke, le Forum
Je ne vois pas particulièrement de souci dans ton code. En fait je ne saisis pas vraiment ce que tu appelles 'Automatique' et 'Manuel' dans tout ceci ?
Je pense que tu parle de Macro évènementielle ?
Qui se déclencherait au moment où l'on active l'Onglet 'Suivi' par exemple ?
Dans ce Cas, tu click droit sur cet Onglet 'Suivi' et dans le petit menu contextuel, tu choisis 'Visualiser le Code'.
A partir de là tu vas te trouver dans un Private Module de Feuille qui contient differents type de macro évènementielles (regarder les deux Liste déroulantes en top de Module)
Dans ton Cas il suffirait de mettre ce Code :
Private Sub Worksheet_Activate()
MsgBox '1...'
Sheets('Suivi livraison papier dept').Select
Range('C5:C52').Select
Selection.Copy
Sheets('suivi').Select
Range('B4').Select
MsgBox '2'
ActiveSheet.Paste
Sheets('Suivi livraison papier dept').Select
Range('B5:B52').Select
Application.CutCopyMode = False
Selection.Copy
Sheets('suivi').Select
Range('C4').Select
MsgBox '3'
ActiveSheet.Paste
End Sub
Mais en tant que débutante, je t'accorde tous ces 'Select', mais attention, il faut prendre de bonnes habitudes en les évitant au maximum.
Voici une version 'boostée' :
Private Sub Worksheet_Activate()
MsgBox '1...'
Sheets('Suivi livraison papier dept').Range('C5:C52').Copy _
Destination:=Sheets('suivi').Range('B4')
MsgBox '2'
Sheets('Suivi livraison papier dept').Range('B5:B52').Copy _
Destination:=Sheets('suivi').Range('C4')
MsgBox '3'
End Sub
Et dans la foulée, voici une Version plus 'Star Excel Académix' .-)
Option Explicit 'Oblige à déclarer les Variables
Private Sub Worksheet_Activate()
'Declaration de Variable Objects 'WorkSheet'
Dim WSSource As Worksheet
Dim WSCible As Worksheet
'Inititialisation de ces Variable Objects
Set WSSource = ThisWorkbook.Worksheets('Suivi livraison papier dept')
Set WSCible = ThisWorkbook.Worksheets('Suivi')
'Avec l'Objet WSSource que nous avaons déclaré et initialisé
'on va copier et envoyer à destination de l'autre Objet WSCible
With WSSource
.Range('C5:C52').Copy Destination:=WSCible.Range('B4')
.Range('B5:B52').Copy Destination:=WSCible.Range('C4')
End With
'Fin de Avec l'Objet WSSource
MsgBox 'Operation de Report ' & WSSource.Name & ' vers ' & WSCible.Name & ' Terminée'
End Sub
Welcome to the VBA's World et des nuits blanches en Perpectivers si tu découvres que la Touche [F1] lorsque tu as un mot dans une ligne de code sélectionné te renverra sur l'aide appropriée avec dans la plupart des cas des exemples pratiques...
PS Une chti remarque en VB / VBA on ne parle pas 'de Formules' mais de 'Lignes de Code' ou 'd'Instructions', celà évitera des confusions avec les 'Vraies Formules Excel'.
Bon Courage et découverte
@+Thierry