• Initiateur de la discussion Initiateur de la discussion zbig
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

zbig

XLDnaute Occasionnel
Bonjour

j'ai un classeur essai.xls composé de 31 feuilles
Les mêmes champs sont dans les 31 feuilles et au même endroit (ex nom en col1, prenom en 2...) sur la ligne 1
j'ai une feuille "général" + 30 feuilles (1,2,...30)
les feuilles 1 à 30 sont alimentées régulièrement
dans la feuille "general" je souhaiterais copier toutes les infos des 30 feuilles grâce à un bouton "copie"

merci
zb
 
Re : copier des feuilles

Bonjour

j'ai vu dans la macro
If Not s.Name Like "général" Then
j'ai compris que la feuille "general" ne sera pas prise en compte

si je veux qu'une autre feuille (en plus de general) ne soit pas prise en compte (ex un tableau croisé dynamique nommé tcd)

comment inscrire cela dans la macro?

merci
zb
 
Re : copier des feuilles

Bonjour
j'ai ajouté 1 ligne titre au dessus de la ligne champ dans chaque feuille

quel paramètre dois je changer pour que ça fonctionne (donc ligne 1 et 2 sont fixes) ?
peux tu mettre des commentaires en vert dans la macro pour que je comprenne?
merci
zb
 
Re : copier des feuilles

Bonjour à toutes et à tous,

Voici la macro commentée :

VB:
Sub Copie()
'Adaptation d'un code de Staple1600 (Merci !)


'déclaration de la variable onglet
Dim s As Worksheet

'pour une exécution plus rapide et la suppression de scintillements à l'écran
Application.ScreenUpdating = False

'sélection de l'onglet "général" et effacement des données à partir de A2 (afin de préserver les titres)
Sheets("général").[a1].CurrentRegion.Offset(1, 0).Clear

'pour chaque onglet du fichier
For Each s In Worksheets

'début de la condition : si le nom de l'onglet est différent de "général" ET de "tcd"
If Not s.Name Like "général" And Not s.Name Like "tcd" Then

'sélection des données présentes sous les en-têtes
'pour copie sur l'onglet "général" à partir de la première ligne vide
s.[B2].CurrentRegion.Offset(1, 0).Copy Sheets("général").[a65536].End(xlUp).Offset(1, 0)

'fin de la condition
End If

'onglet suivant
Next s

Application.ScreenUpdating = True
End Sub

Si l'adaptation s’avérait impossible, transmettre le fichier concerné, sans données confidentielles.

Bon courage et à bientôt 🙂.
 
Re : copier des feuilles

Re-bonjour,

Ci-après le fichier avec une macro adaptée à la nouvelle présentation.

Si le nombre de colonnes devait évoluer, il suffirait de modifier cette ligne :

Code:
s.[P3].CurrentRegion.Offset(2, 0).Copy Sheets("general").[a65536].End(xlUp).Offset(1, 0)

P étant, actuellement, la dernière colonne à prendre en compte.

Il faut faire attention au nom de l'onglet destiné au regroupement des données (tu as renommé l'onglet initialement appelé "général" en "general"). En cas de changement d'appellation, il ne faut pas omettre de modifier le code en conséquence.

J'espère que les explications sont claires et que tout ira bien en cas d'évolution du fichier.

Bon courage et à bientôt 🙂.
 

Pièces jointes

Re : copier des feuilles

Les différences sont les suivantes:
feuilles à copier
37 colonnes utilisées
les titres en ligne 1 : à partir de colonne 12
champs dans les 37 colonnes de cligne 2
les données à copier sont à partir de la ligne 3

feuille general :
idem mais décalage d'une ligne vers le bas pour pouvoir mettre des boutons d'action.
les données copiées doivent arriver à partir ligne 4

la macro copie est bien
Sub Copie()
Dim s As Worksheet
Application.ScreenUpdating = False
Sheets("general").[a4].CurrentRegion.Offset(3, 0).Clear
For Each s In Worksheets
If Not s.Name Like "general" And Not s.Name Like "tcd" Then
s.[Ak3].CurrentRegion.Offset(2, 0).Copy Sheets("general").[a65536].End(xlUp).Offset(1, 0)
End If
Next s
Application.ScreenUpdating = True
End Sub


Sub Copie()
'Adaptation d'un code de Staple1600 (Merci !)


'déclaration de la variable onglet
Dim s As Worksheet

'pour une exécution plus rapide et la suppression de scintillements à l'écran
Application.ScreenUpdating = False

'sélection de l'onglet "général" et effacement des données à partir de A2 (afin de préserver les titres)
Sheets("général").[a1].CurrentRegion.Offset(1, 0).Clear

'pour chaque onglet du fichier
For Each s In Worksheets

'début de la condition : si le nom de l'onglet est différent de "général" ET de "tcd"
If Not s.Name Like "général" And Not s.Name Like "tcd" Then

'sélection des données présentes sous les en-têtes
'pour copie sur l'onglet "général" à partir de la première ligne vide
s.[B2].CurrentRegion.Offset(1, 0).Copy Sheets("général").[a65536].End(xlUp).Offset(1, 0)

'fin de la condition
End If

'onglet suivant
Next s

Application.ScreenUpdating = True
End Sub

zb
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour