Paste

Bonjour,

J'ai créé une macro pour faire un copier coller d'une feuille à une autre. Dès lors, le bouton ne fonctionne pas puisque mes feuilles sont masquées et verrouillées. En fait, mon bouton se trouve sur la feuille 1 (données équipes) où je prend les données et que je les copie. Ensuite, le dois déverrouiller la feuille 2 (feuille Aléatoire) sur laquelle je vais coller. Mais ma feuille 1 doit être déverrouiller pour exécuté la copie. J'ai donc fais comme ceci:

Sub boutonaleatoire()

' boutonaleatoire Macro

DeverrouillerFeuilleDonnéesEquipes

Range("D3:D18").Select

Selection.Copy

DeverrouillerFeuilleAléatoire 'Déverrouiller la feuille aléatoire

Sheets("Aléatoire").Visible = True 'Démasquer la feuille aléatoire

Sheets("Aléatoire").Select

Range("B1").Select

ActiveSheet.Paste

VerrouillerFeuilleDonnéesEquipes

VerrouillerFeuilleAléatoire

End Sub

Le problème, maintenant, quand j'essai de l'activer avec ce code, se situe sur la partie en gras et surligné : la partie coller.

Je n'ai aucune idée de comment régler le problème. Avez vous une solution ?

Merci d'avance

Bonjour,

Avec VBA, il faut éviter les .Select

Pour copier un plage vers une autre :

  • il n'est pas nécessaire que la source soit déverrouillée, ni visible.
  • la feuille de destination doit être déverrouillée, mais il n'est pas nécessaire qu'elle soit visible.

On prépare le terrain et pour copier, on utilises :

PlageSource.Copy Destination:=CelluleDestination

Sans la totalité du code, impossible de proposer mieux.

Merci !

J'ai finalement trouvé une solution.

Et dans mon cas, j'avais besoin que mes feuilles soient masquées et verrouillées.

Bonne soirée

Bonjour,

Une alternative au copier/coller.

Cdlt.

Public Sub boutonaleatoire()
Dim ws As Worksheet, ws2 As Worksheet

    Set ws = ActiveSheet    'Attention !...
    Set ws2 = Worksheets("Aléatoire")
    'ws2.Visible = True

    'DeverrouillerFeuilleDonnéesEquipes
    'DeverrouillerFeuilleAléatoire

    ws2.Cells(2).Resize(16).Value = ws.Range("D3:D18").Value
    'ou
    'ws2.Range("B1:B16").Value = ws.Range("D3:D18").Value

    'VerrouillerFeuilleDonnéesEquipes
    'VerrouillerFeuilleAléatoire

End Sub
Rechercher des sujets similaires à "paste"