XL 2010 macro sur toutes les feilles sauf

michel.dupont

XLDnaute Occasionnel
Bonjour à tous
merci de votre aide...
je galère sur un code sans doute simple...il s'agit simplement de copier et coller une plage de cellule (K3:K24) en j24 et cela sur chaque onglet sauf dans 3...le code ci-dessous ne fait la copie que sur l'onglet "TBL BORD" sur le quel le bouton macro se situe....par avance merci
Michel
le voici
Sub copier()
Dim ws As Worksheet
For Each ws In Worksheets
If ws.Name <> "Recapitulatif" And ws.Name <> "Modele briefing" And ws.Name <> "TBL BORD" Then
Range("K4:K23").Select
Selection.Copy
Range("J4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("K2").Select

End If
Next ws
End Sub
 

MP59

XLDnaute Occasionnel
bonjour mchel.dupont,
essaye :

VB:
Sub copier()
    Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
        If ws.Name <> "Recapitulatif" And ws.Name <> "Modele briefing" And ws.Name <> "TBL BORD" Then
            Sheets("TBL BORD").Range("K4:K23").Copy 'si la feuille à copier est TBL BORD
            ws.Range("J4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
                :=False, Transpose:=False
'            ws.Range("K2").Select

        End If
    Next ws
End Sub
 

MP59

XLDnaute Occasionnel
C'est exactement ce qui se passe chez moi quand je lance la macro.
Ce qui coince dans ta macro c'est que tu ne fais pas référence à ta feuille où se trouve la plage à copier et que tu ne mets pas ws. de les plages des feuilles qui doivent réceptionner l'information.

Ps : il est par ailleurs de coutume que le demandeur joigne un fichier à l'appui de sa demande, cela permet de mieux la comprendre.
 

michel.dupont

XLDnaute Occasionnel
bonjour et encore merci...j'ai trouvé une solution assez alambiquée...mais ca marche en 3 codes distincts

Sub Dosomething()
Dim xSh As Worksheet
Application.ScreenUpdating = False
For Each xSh In Worksheets
If xSh.Name <> "Recapitulatif" And xSh.Name <> "Modele briefing" And xSh.Name <> "TBL BORD" Then
xSh.Select
Call copier
End If
Next xSh

Application.ScreenUpdating = True

End Sub

ensuite....
Sub copier()
Range("K4:K23").Select
Selection.Copy
Range("J4").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("K2").Select
End Sub

pour finir....mettre le tout dans l'onglet récapitulatif...

Sub test3()
Dosomething

efface 'efface le récap
Dim ws As Worksheet, DerniereLigne As Long
For Each ws In Worksheets
If ws.Name <> "Recapitulatif" And ws.Name <> "Modele briefing" And ws.Name <> "TBL BORD" Then
DerniereLigne = Worksheets("recapitulatif").Range("A65536").End(xlUp).Row
ws.Range("A4:j23").Copy Worksheets("recapitulatif").Range("A" & DerniereLigne + 1)

End If
Next ws

End Sub
 

Phil69970

XLDnaute Accro
Bonjour mchel.dupont, MP59

.il s'agit simplement de copier et coller une plage de cellule (K3:K24) en j24 et cela sur chaque onglet sauf dans 3

je voudrais que dans chaque feuille (excepté dans 3 feuilles) la plage k4:k23 soit recopier sur cette même feuille en j4:j23
Si j'ai compris et vu ton code :
Tous les onglets exceptés les 3 onglets "Recapitulatif", "Modele briefing" et "TBL BORD" la plage "K4:K23" sera recopiée sur la même feuille en "J4:J23"

Ce code ci-dessous correspond à ta demande
VB:
Sub copier()
Application.ScreenUpdating = False
Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
    If ws.Name <> "Recapitulatif" And ws.Name <> "Modele briefing" And ws.Name <> "TBL BORD" Then
        ws.Range("K4:K23").Copy ws.Range("J4:J23")
    End If
Next ws
Application.CutCopyMode = False
End Sub

Par contre ici je comprends plus ce que tu veux faire.
D'un coté tu exclu l'onglet "Recapitulatif" et de l'autre tu essaye de copier dedans !
pour finir....mettre le tout dans l'onglet récapitulatif...
Pour faire un test il manque la procédure du code que tu as posté ici :
efface 'efface le récap

Si tu veux copier à la fin de la colonne A de l'onglet "Recapitulatif" en même temps les données "K4:K23" des autres feuilles tu peux faire comme ça :

VB:
Sub copier()
Application.ScreenUpdating = False

Dim ws As Worksheet, Derlig&

For Each ws In ActiveWorkbook.Worksheets
    If ws.Name <> "Recapitulatif" And ws.Name <> "Modele briefing" And ws.Name <> "TBL BORD" Then
        Derlig = Worksheets("Recapitulatif").Range("A" & Rows.Count).End(xlUp).Row + 1
        ws.Range("K4:K23").Copy ws.Range("J4:J23")
        ws.Range("K4:K23").Copy Worksheets("Recapitulatif").Range("A" & Derlig)
    End If
Next ws
Application.CutCopyMode = False
End Sub

@Phil69970
 
Dernière édition:

michel.dupont

XLDnaute Occasionnel
merci pour votre intérêt...
je joins le fichier que j'ai rendu anonyme....et un petit mot d'explication
je travaille dans une structure pour personnes handicapées et ce fichier concerne les ordres du jour des réunions éducatives...ce que j'ai écrit en 3 codes fonctionne donc je n'ai pas été plus loin...😏
par contre je voudrais encore améliorer ce fichier et faire en sorte par macro que chaque plage b26:c35 (les divers) de chaque feuille (sauf les 4 onglets oranges ) soit copiée l'un à la suite de l'autre dans l'onglet "RECAP DIVERS"
ps:pour la présentation divers colonnes seront cachées
MERCI DE VOTRE AIDE
Michel
 

Pièces jointes

  • test.xlsm
    129.8 KB · Affichages: 2

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Une autre façon de faire
VB:
Sub Recopier_Sans_Copier()
Dim f As Worksheet
For Each f In Worksheets
Select Case f.Name
Case Is = "Recapitulatif", "Modele briefing", "TBL BORD"
'Il ne passe rien pour ces 3 feuilles
Case Else
f.Range("J4:J23").Value = Sheets("TBL BORD").Range("K4:K23").Value
End Select
Next f
End Sub
NB: Ce qui prime, ce sont les données, le format n'est qu'esthétique donc pas forcément nécessaire. ;)
 

Phil69970

XLDnaute Accro
Bonjour mchel.dupont, MP59, Staple1600, le forum

Ci joint retour de ton fichier modifié et entièrement commenté (mais uniquement le module 2), il tient compte de toutes tes demandes.
Les puristes pourront surement améliorer le code du module 2....
Pour les autres modules il y a moyen de rationaliser.(J'ai rien touché)

@Phil69970
 

Pièces jointes

  • Copie muti onglet V1.xlsm
    129.7 KB · Affichages: 5

Discussions similaires

Haut Bas