Copier plage de plusieurs onglets

romika

XLDnaute Occasionnel
Bonjour, le forum,

comment faire pour copier la même plage de plusieurs onglets du fichier.

plus clair j'ai un fichier avec 6 onglets A, B, C, D, E et X et un bouton sur l'onglet X. en cliquant sur le bouton je voudrais selectionner et copier la plage A3:C40 pour pouvoir coller ensuite ces plages les unes deriere les autres sur l'onglet X.

merci pour votre aide precieuse
 

porcinet82

XLDnaute Barbatruc
Re : Copier plage de plusieurs onglets

Salut,

Il te suffit de boucler sur les onglets, avec un code de ce genre :
Code:
Sub test()
Dim k As Integer
With Sheets("X")
For k = 1 To Sheets.Count
    If Sheets(k).Name <> "X" Then Sheets(k).Range("A3:C40").Copy Destination:=.Range("A" & .Range("A65536").End(xlUp).Row + 1)
Next k
End With
End Sub

@+
 

porcinet82

XLDnaute Barbatruc
Re : Copier plage de plusieurs onglets

re,

Pour copier seulement les valeurs, modifies comme suit :
Code:
Sub test()
Dim k As Integer
With Sheets("X")
    For k = 1 To Sheets.Count
        If Sheets(k).Name <> "X" Then
            Sheets(k).Range("A3:C40").Copy
            .Range("A" & .Range("A65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlPasteValues
        End If
    Next k
End With
End Sub

@+
 

Staple1600

XLDnaute Barbatruc
Re : Copier plage de plusieurs onglets

Bonjour


Une variante (en partant du code de porcinet82)

Code:
Sub test()
Dim k As Integer
Application.ScreenUpdating = False
With Sheets("X")
For k = 1 To Sheets.Count
    If Sheets(k).Name <> "X" Then Sheets(k).Range("A3:C40").Copy Destination:=.Range("A" & .Range("A65536").End(xlUp).Row + 1)
Next k
.UsedRange.Value = .UsedRange.Value
End With
Application.ScreenUpdating = True
End Sub
 

romika

XLDnaute Occasionnel
Re : Copier plage de plusieurs onglets

Bonjour,

merci pour cette aide (je ne suis pas sur d'avoir compris la différence entre les 2 méthodes (porcinet82 et Staple1600)

dernière question et apres j'arrete (peut on le faire page par page?) je veux dire si j'insere un autre onglet supplémentaire mais que je ne veux pas qu'il soit pris en compte par la macro?

merci et bonne soirée
 

Staple1600

XLDnaute Barbatruc
Re : Copier plage de plusieurs onglets

Re

Si tu ajoutes un onglet

Tu modifies la précédente macro comme suit

If Sheets(k).Name <> "X" And Sheets(k).Name <> "Y"

Sheets(k).Name <> "Y" ' à la place du Y tu mets le mon de lafeuille que tu veux éviter

Ce qui donne
Code:
Sub test()
Dim k As Integer
Application.ScreenUpdating = False
With Sheets("X")
For k = 1 To Sheets.Count
    If Sheets(k).Name <> "X" And Sheets(k).Name <> "Y" Then Sheets(k).Range("A3:C40").Copy Destination:=.Range("A" & .Range("A65536").End(xlUp).Row + 1)
Next k
'ici équivant à collage spécial/ valeurs seules
.UsedRange.Value = .UsedRange.Value
End With
Application.ScreenUpdating = True
End Sub
 
Dernière édition:

romika

XLDnaute Occasionnel
Re : Copier plage de plusieurs onglets

bonjour à tous,

je n'arrive pas à utiliser le code de Staple1600 (il me dit qu'il y a déjà une certaine liste sur la page de destination...et ça ne copie pas vraiment ce qu'il y a sur les onglets). j'arrive à utiliser le code de porcinet82 et ça marche mais quand je lui rajoute If Sheets(k).Name <> "X" And Sheets(k).Name <> "Y" ça bug... ;(
 

porcinet82

XLDnaute Barbatruc
Re : Copier plage de plusieurs onglets

Salut,

Je pense qu'avec mon code, il faut plutot mettre un Or et non un And, ce qui donnerai : If Sheets(k).Name <> "X" Or Sheets(k).Name <> "Y" Then

Par contre, je ne comprend pas tres bien le problème lié au code de Staple... Si tu n'y arrives pas, joint nous un morceau de ton fichier qu'on voit ou se situe l'erreur.

@+
 

romika

XLDnaute Occasionnel
Re : Copier plage de plusieurs onglets

Bonjour

j'ai essayé avec "OR" mais ça ne fonctionne pas

voici le fichier avec le code de Staple1600
 

Pièces jointes

  • test.zip
    48.5 KB · Affichages: 25
  • test.zip
    48.5 KB · Affichages: 21
  • test.zip
    48.5 KB · Affichages: 21

porcinet82

XLDnaute Barbatruc
Re : Copier plage de plusieurs onglets

re,

Bon je t'ai dis des conneries en plus, il ne fallait pas mettre Or mais laisser And.
Sinon, je pense que ca ne fonctionne pas a cause de plage nommer, mais je n'en suis pas certains, ne les utilisants jamais, mais peut etre que Staple aura une explication.
Sinon, ca tourne avec mon code comme ceci :
Code:
Sub test()
Dim k As Integer
Application.ScreenUpdating = False
With Sheets("Y")
    For k = 1 To Sheets.Count
        If Sheets(k).Name <> "Y" And Sheets(k).Name <> "TCD" Then
            Sheets(k).Range("A4:J33").Copy
            .Range("A" & .Range("A65536").End(xlUp).Row + 1).PasteSpecial Paste:=xlPasteValues
        End If
    Next k
End With
Application.ScreenUpdating = True
End Sub

@+
 

romika

XLDnaute Occasionnel
Re : Copier plage de plusieurs onglets

rebonjour,

j'imagine que c'est abusé de redemander de l'aide

je voudrais aussi que après la recopie toutes les lignes pour lesueles dans la colonne J on a 0 soit effacées.

j'ai essaye avec un code que j'ai trouvé sur le forum:

Sub TEST2()
Dim C As Range
Application.ScreenUpdating = False
For Each C In Range("j1:j" & Range("j65536").End(xlUp).Row)
If C = "0" Then C.EntireRow.Delete
Next C
Application.ScreenUpdating = True
End Sub

mais le probleme c'est que j'ai besoin d'appuyer plusieurs fois sur le bouton pour tout eliminer. quand c'est 2-3 ça va mais je vais en avoir des centaine.

y a t il possibilité que ça se fasse d'un seul coup?

merci
 

Discussions similaires

Statistiques des forums

Discussions
312 555
Messages
2 089 562
Membres
104 214
dernier inscrit
palp