Regrouper le contenu de plusieurs feuilles dans une seule

dd54

XLDnaute Nouveau
Bonjour à tous,

Oui je sais, tout le monde se pose la même question ! Le problème c'est que je trouve quelques éléments de réponses mais jamais ce qu'il me faut précisément. Et puis je suis ignorante des codes VBA. Je sais simplement copier-coller un code donné et l'exécuter. Je recherche donc une aide précieuse et complète !

Voilà, j'ai un Plan d'Action composé de plusieurs feuilles excel (plusieurs plan d'action selon le service) et je souhaiterais pouvoir regrouper toutes les actions des différentes feuilles dans une feuille de récap.
Chaque feuille à la même construction, mais le nombre de ligne remplies (actions) diffère.
Attention, j'ai également deux feuilles de notice, qui ne doivent pas êtres prises en compte dans le récap. De même, dans chaque feuille, il y a une en-tête à ne pas prendre en compte. Je peux donner un nom à chaque plage de références à prendre en compte et donc regrouper les données de ces différentes plages.

Ne me proposez pas de tableaux dynamiques, cela ne conviendra pas à l'équipe !

Évidemment il faut que la feuille récap puisse se mettre à jour en fonction de la saisie dans les autres feuilles.

Est-ce que quelqu'un peut m'aider par un super code VBA et explications claires qui vont avec ?

Merci infiniment à mon/mes futurs sauveurs !!!!
 

Dranreb

XLDnaute Barbatruc
Re : Regrouper le contenu de plusieurs feuilles dans une seule

Essayez ça dans ThisWorkbook:
VB:
Option Explicit

Private Sub Workbook_Open()
Dim F As Worksheet
For Each F In Me.Worksheets
   F.Protect UserInterfaceOnly:=True
   Next F
End Sub
À +
 

dd54

XLDnaute Nouveau
Re : Regrouper le contenu de plusieurs feuilles dans une seule

En appliquant votre code, il bug à

"Me.[5:65536].Delete" du code de la feuille compil.

Rappel
du code de la feuille compil :

Private Sub Worksheet_Activate()
Dim Source As Range, ZonSrc As Range, Cible As Range, N As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Me.[5:65536].Delete
Set Cible = Me.[A5]
For N = 3 To (Me.Index - 1)
If Not Source Is Nothing Then
For Each ZonSrc In Source.Areas: Set Cible = Cible.Offset(ZonSrc.Rows.Count): Next
End If
Set Source = Worksheets(N).[B17:B65536]
On Error Resume Next
Set Source = Intersect(Source.Offset(0, -1).Resize(, 19), _
Source.SpecialCells(xlCellTypeConstants).EntireRow)
If Err Then Set Source = Nothing
On Error GoTo 0
If Not Source Is Nothing Then Source.Copy Destination:=Cible
Next N
Me.[A5].Select
Application.Calculation = xlCalculationAutomatic
End Sub
 

Dranreb

XLDnaute Barbatruc
Re : Regrouper le contenu de plusieurs feuilles dans une seule

Je ne vois pas pourquoi ça plante. Quel message d'erreur ?
Ah… Peut être la protection ? Exécutez un coup la Workbook_Open où vous avez mis les Protect UserInterfaceOnly:=True en la sélectionnant dans le code et touche F5
À +
 

dd54

XLDnaute Nouveau
Re : Regrouper le contenu de plusieurs feuilles dans une seule

Bonjour,

Il s'agit bien d'un problème de protection de la feuille qui fait la compilation.
Voici le message d'erreur :
"erreur d'exécution 1004 :
La cellule ou le graphique est protégé en lecture seule.
POur modifier une cellule ou un graphique protégé, ôtez la protection avec la commande ôter la protection de la feuille (outils, protection). vous devrez peut-être taper un mot de passe."

J'ai essayé de faire votre manip (en sélectionnant les lignes de codes et touche F5), mais cela ne change rien. Peut-être n'ai-je pas fait la bonne manip...
 

dd54

XLDnaute Nouveau
Re : Regrouper le contenu de plusieurs feuilles dans une seule

Je pense que c'est un problème d'ordre d'exécution des macros. Il faudrait que chaque page soir protégée. Mais que lorsqu'il fait la compil, la feuille soit déprotégée puis reprotégée...
 

Dranreb

XLDnaute Barbatruc
Re : Regrouper le contenu de plusieurs feuilles dans une seule

Bonjour
Si vous utilisez ailleurs que dans la Workbook_Open des Protect sans le paramètre UserInderfaceOnly:=True, évidemment ça coince. Joignez votre classeur qu'on y voie plus clair.
À +
 

dd54

XLDnaute Nouveau
Re : Regrouper le contenu de plusieurs feuilles dans une seule

Voici le fichier (j'ai du enlever certaines données).

Je m’aperçois également que la macro de protection empêche d'utiliser le filtre automatique sur chaque feuille, ce qui ne devrait pas arriver.
Il faut que les feuilles soient protégées contre l'écriture ou suppression de données dans les cellules verrouillées. Cependant, elle doit permettre de pouvoir utiliser le filtre auto ou encore utiliser les mises en pages (couleur texte...). En fait, je ne souhaite protéger que les cellules avec formules.

Merci de votre aide.
 

dd54

XLDnaute Nouveau
Re : Regrouper le contenu de plusieurs feuilles dans une seule

oups...
j'ai du le réduire et le zipper. Normalement, il y a 20 onglets numérotés de 1 à 20 et non seulement 5.
Merci !
 

Pièces jointes

  • Bureau.zip
    247.4 KB · Affichages: 47
  • Bureau.zip
    247.4 KB · Affichages: 45
  • Bureau.zip
    247.4 KB · Affichages: 87

dd54

XLDnaute Nouveau
Re : Regrouper le contenu de plusieurs feuilles dans une seule

Ah, désolée, j'avais supprimé le code pour ne pas être bloquée.
Voici la bonne version.
 

Pièces jointes

  • Bureau2.zip
    248.7 KB · Affichages: 51
  • Bureau2.zip
    248.7 KB · Affichages: 39
  • Bureau2.zip
    248.7 KB · Affichages: 42

Dranreb

XLDnaute Barbatruc
Re : Regrouper le contenu de plusieurs feuilles dans une seule

Je ne peux que constater que, contrairement à ce qui est expliqué dans l'aide, ça ne marche pas.
Il ne reste plus qu'à mettre au début:
VB:
Me.Unprotect
Et à la fin:
VB:
Me.Protect UserInterfaceOnly:=True, DrawingObjects:=True, Contents:=True, _
   Scenarios:=True, AllowFiltering:=True
Me.EnableSelection = xlUnlockedCells
Cordialement.
 

dd54

XLDnaute Nouveau
Re : Regrouper le contenu de plusieurs feuilles dans une seule

Merci.
Dois-je écrire ce code dans cet ordre (ou un autre ?) dans ThisWorkBook,

Me.Unprotect
Option Explicit
Private Sub Workbook_Open()
Dim F As Worksheet
For Each F In Me.Worksheets
F.Protect UserInterfaceOnly:=True
Next F
End Sub
Me.Protect UserInterfaceOnly:=True, DrawingObjects:=True, Contents:=True, _
Scenarios:=True, AllowFiltering:=True
Me.EnableSelection = xlUnlockedCells


ou dans cet ordre (ou un autre ?) dans la feuille de compil ??
 

Discussions similaires

Réponses
26
Affichages
390