Feuille modèle
Résolu
touroul
Messages postés
509
Date d'inscription
Statut
Membre
Dernière intervention
-
touroul Messages postés 509 Date d'inscription Statut Membre Dernière intervention -
touroul Messages postés 509 Date d'inscription Statut Membre Dernière intervention -
Bonjour à toute la communauté.
J'ai ma crise Excel en ce moment, et j'ai besoin d'un coup de main de votre part pour ce que je ne parviens pas à faire.
Je ne sais trop comment m'y prendre, mais j'aimerai créer un fichier client dont toutes les feuilles (existantes et nouvellement créées) aient pour modèle une feuille nommée "Masque".
Si un changement est effectué sur la feuille "Masque" (ajout colonne, ligne, mise en gras par exemple), ce changement se répercuterait sur toutes les feuilles clients basées sur ce modèle "Masque".
Pour plus de facilité, voici un fichier exemple :
https://www.cjoint.com/?CIojuotkcal
Merci d'avance pour vos idées constructives !
J'ai ma crise Excel en ce moment, et j'ai besoin d'un coup de main de votre part pour ce que je ne parviens pas à faire.
Je ne sais trop comment m'y prendre, mais j'aimerai créer un fichier client dont toutes les feuilles (existantes et nouvellement créées) aient pour modèle une feuille nommée "Masque".
Si un changement est effectué sur la feuille "Masque" (ajout colonne, ligne, mise en gras par exemple), ce changement se répercuterait sur toutes les feuilles clients basées sur ce modèle "Masque".
Pour plus de facilité, voici un fichier exemple :
https://www.cjoint.com/?CIojuotkcal
Merci d'avance pour vos idées constructives !
A voir également:
- Feuille modèle
- Modèle de webcam - Guide
- Modèle organigramme word - Guide
- Modèle feuille de pointage excel gratuit - Télécharger - Tableur
- Modèle de style word - Guide
- Bruler feuille de laurier - Guide
16 réponses
Bonjour,
Avant tout, tu peux te demander si tu utilises la bonne manière pour obtenir le résultat recherché. Il vaudrait peut-être mieux que tu disposes d'un masque pour l'affichage des données et d'une base de données.
https://www.cjoint.com/?CIoj1G7MmvN
A+
Avant tout, tu peux te demander si tu utilises la bonne manière pour obtenir le résultat recherché. Il vaudrait peut-être mieux que tu disposes d'un masque pour l'affichage des données et d'une base de données.
https://www.cjoint.com/?CIoj1G7MmvN
A+
Merci Gyrus pour ton travail.
En réalité, c'est assez éloigné de l'objectif.
Je ne cherche pas à récupérer des données dans plusieurs feuilles, mais à appliquer une mise en forme particulière à ma feuille Masque, avec répercussion immédiate sur toutes les feuilles basées sur Modèle.
Exemple dans une macro qui ressemblerait à ça :
Feuille "Chris ANTHEM" : masque="Modèle"
Feuille "Marc EURITHE" : masque="Modèle"
Feuille "Anne HEMMONNE" : masque="Modèle"
Si : Insertion Ligne entre L5 et L6 sur Modèle
Alors : Insertion Ligne entre L5 et L6 sur toutes les feuilles ayant pour masque "Modèle".
Si : Caractère gras en E18 sur Modèle
Alors : Caractère gras en E18 sur toutes les feuilles ayant pour masque "Modèle".
Est-ce faisable ?
Merci d'avance !
En réalité, c'est assez éloigné de l'objectif.
Je ne cherche pas à récupérer des données dans plusieurs feuilles, mais à appliquer une mise en forme particulière à ma feuille Masque, avec répercussion immédiate sur toutes les feuilles basées sur Modèle.
Exemple dans une macro qui ressemblerait à ça :
Feuille "Chris ANTHEM" : masque="Modèle"
Feuille "Marc EURITHE" : masque="Modèle"
Feuille "Anne HEMMONNE" : masque="Modèle"
Si : Insertion Ligne entre L5 et L6 sur Modèle
Alors : Insertion Ligne entre L5 et L6 sur toutes les feuilles ayant pour masque "Modèle".
Si : Caractère gras en E18 sur Modèle
Alors : Caractère gras en E18 sur toutes les feuilles ayant pour masque "Modèle".
Est-ce faisable ?
Merci d'avance !
Bonjour,
à tester :
à tester :
Sub formaterFeuille()eric
Dim sh As Worksheet
For Each sh In Worksheets
If InStr("Accueil,Masque", sh.Name) = 0 Then
Worksheets("Masque").Cells.Copy
sh.[A1].PasteSpecial Paste:=xlPasteFormats
sh.[A1].PasteSpecial Paste:=xlPasteColumnWidths
End If
Next sh
End Sub
Bonjour Eric !
Les meilleurs s'y mettent ...
Malheureusement aucun effet sur mes feuilles.
J'essaie de comprendre le code (que j'ai collé dans ThisWorkBook) :
Sub formaterFeuille() 'nom de la macro
Dim sh As Worksheet 'sélection des feuilles
For Each sh In Worksheets 'pour toutes les feuilles contenant "sh"
If InStr("Masque", sh.Name) = 0 Then 'si on fait des modifs dans Masque
Worksheets("Masque").Cells.Copy 'on copie Masque dans le Presse-papiers
sh.[A1].PasteSpecial Paste:=xlPasteFormats 'on colle les formats dans les feuilles contenant "sh"
sh.[A1].PasteSpecial Paste:=xlPasteColumnWidths 'on colle la même largeur de colonne dans les feuilles contenant "sh"
End If
Next sh
End Sub
C'est plutôt bien parti pourtant. où ça cloche ? Merci d'avance !
Les meilleurs s'y mettent ...
Malheureusement aucun effet sur mes feuilles.
J'essaie de comprendre le code (que j'ai collé dans ThisWorkBook) :
Sub formaterFeuille() 'nom de la macro
Dim sh As Worksheet 'sélection des feuilles
For Each sh In Worksheets 'pour toutes les feuilles contenant "sh"
If InStr("Masque", sh.Name) = 0 Then 'si on fait des modifs dans Masque
Worksheets("Masque").Cells.Copy 'on copie Masque dans le Presse-papiers
sh.[A1].PasteSpecial Paste:=xlPasteFormats 'on colle les formats dans les feuilles contenant "sh"
sh.[A1].PasteSpecial Paste:=xlPasteColumnWidths 'on colle la même largeur de colonne dans les feuilles contenant "sh"
End If
Next sh
End Sub
C'est plutôt bien parti pourtant. où ça cloche ? Merci d'avance !
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
En fait je viens de voir que ça fonctionne partiellement :
Mais je dois faire Alt+F8 et exécuter la macro qui est dans ThisWorkBook.
Comment automatiser la tâche dès qu'il y a une modif dans Masque ?
Merci !
Mais je dois faire Alt+F8 et exécuter la macro qui est dans ThisWorkBook.
Comment automatiser la tâche dès qu'il y a une modif dans Masque ?
Merci !
En fait je viens de voir que ça fonctionne partiellement :
Mais je dois faire Alt+F8 et exécuter la macro qui est dans ThisWorkBook.
Comment automatiser la tâche dès qu'il y a une modif dans Masque ?
Pourquoi la mettre dans Thisworkbook ? Pas d'intérêt.
Sinon un changement de format n'est pas un évènement, il faudra toujours la lancer. Tu peux toujours mettre un bouton sur la feuille.
eric
Mais je dois faire Alt+F8 et exécuter la macro qui est dans ThisWorkBook.
Comment automatiser la tâche dès qu'il y a une modif dans Masque ?
Pourquoi la mettre dans Thisworkbook ? Pas d'intérêt.
Sinon un changement de format n'est pas un évènement, il faudra toujours la lancer. Tu peux toujours mettre un bouton sur la feuille.
eric
Bonjour Eric et les autres
J'ai passé pas mal de temps sur ta macro, Eric.
C'est tout à fait ce que je voulais et me fera gagner beaucoup de temps.
Par contre j'ai un petit bug noté "Erreur d'exécution '1004' : "La méthode Activate de la classe Range a échoué".
Il semble qu'il y ait une incompatibilité entre 2 macros du classeur : la tienne et :
Option Explicit
Private Sub Workbook_Open() ' ouverture du fichier sur le 1er onglet
Sheets(1).Activate
[A1].Activate
End Sub
Private Sub Workbook_SheetActivate(ByVal sh As Object) 'ouverture de chaque feuille en A1
sh.[A1].Activate
End Sub
Le bug concerne l'ouverture de chaque feuille en A1.
Puis-je vous demander s'il y a une solution ?
Merci d'avance et bon dimanche !
J'ai passé pas mal de temps sur ta macro, Eric.
C'est tout à fait ce que je voulais et me fera gagner beaucoup de temps.
Par contre j'ai un petit bug noté "Erreur d'exécution '1004' : "La méthode Activate de la classe Range a échoué".
Il semble qu'il y ait une incompatibilité entre 2 macros du classeur : la tienne et :
Option Explicit
Private Sub Workbook_Open() ' ouverture du fichier sur le 1er onglet
Sheets(1).Activate
[A1].Activate
End Sub
Private Sub Workbook_SheetActivate(ByVal sh As Object) 'ouverture de chaque feuille en A1
sh.[A1].Activate
End Sub
Le bug concerne l'ouverture de chaque feuille en A1.
Puis-je vous demander s'il y a une solution ?
Merci d'avance et bon dimanche !
Voici le fichier exemple :
https://www.cjoint.com/?CIpjTVq2Y1X
Une pression sur le bouton Formater selon Masque fait apparaître le bug.
une question d'ordre d'exécution des macros ?
Merci !!!
https://www.cjoint.com/?CIpjTVq2Y1X
Une pression sur le bouton Formater selon Masque fait apparaître le bug.
une question d'ordre d'exécution des macros ?
Merci !!!
Bizarrement le pastespecial provoque l'évènement sheetActivate mais sans activer la feuille.
Remplace par :
Remplace par :
Private Sub Workbook_SheetActivate(ByVal sh As Object) 'ouverture de chaque feuille en A1Et tant qu'on y est allège un peu ma macro, on ne va copier les formats que sur la plage utilisée :
If ActiveSheet.Name = sh.Name Then sh.[A1].Select
End Sub
Sub formaterFeuille()eric
Dim sh As Worksheet
For Each sh In Worksheets
If InStr("Accueil,Masque,Anne HEMMONNE", sh.Name) = 0 Then
With Worksheets("Masque")
.Range("A1", .Cells.SpecialCells(xlCellTypeLastCell)).Copy
End With
sh.[A1].PasteSpecial Paste:=xlPasteFormats
sh.[A1].PasteSpecial Paste:=xlPasteColumnWidths
End If
Next sh
Application.CutCopyMode = False
End Sub
En effet, adaptée à mon classeur, tes macros fonctionnent au poil !
Pour comprendre :
- "on ne va copier les formats que sur la plage utilisée" : qu'est-ce que ça signifie ?
- "For Each sh In Worksheets" : qu'est-ce que désigne le "sh" ? Pourquoi on l'utilise ?
Pardon pour ces questions mais j'aimerai vraiment piger un tout petit peu ... :)
Pour comprendre :
- "on ne va copier les formats que sur la plage utilisée" : qu'est-ce que ça signifie ?
- "For Each sh In Worksheets" : qu'est-ce que désigne le "sh" ? Pourquoi on l'utilise ?
Pardon pour ces questions mais j'aimerai vraiment piger un tout petit peu ... :)
- "on ne va copier les formats que sur la plage utilisée" : qu'est-ce que ça signifie ?
avant je faisais :
.cells.copy : toute la feuille
après:
.Range("A1", .Cells.SpecialCells(xlCellTypeLastCell)).Copy : que la zone utilisée
- "For Each sh In Worksheets" : qu'est-ce que désigne le "sh" ? Pourquoi on l'utilise ?
Worksheets est la collection de toutes les feuilles du classeur.
Littéralement :
pour toutes les feuilles du classeur
si le nom est différent de ...
feuille suivante
eric
avant je faisais :
.cells.copy : toute la feuille
après:
.Range("A1", .Cells.SpecialCells(xlCellTypeLastCell)).Copy : que la zone utilisée
- "For Each sh In Worksheets" : qu'est-ce que désigne le "sh" ? Pourquoi on l'utilise ?
Worksheets est la collection de toutes les feuilles du classeur.
Littéralement :
pour toutes les feuilles du classeur
si le nom est différent de ...
feuille suivante
eric
C'est très clair à présent.
J'ai encore d'autres idées pour optimiser la fonction, mais je vais essayer seul.
Un grand merci Eric pour ton travail désintéressé.
Toute la communauté te doit beaucoup.
J'ai encore d'autres idées pour optimiser la fonction, mais je vais essayer seul.
Un grand merci Eric pour ton travail désintéressé.
Toute la communauté te doit beaucoup.
Bonjour à tous.
Je reviens vers vous à propos de la macro d'Eriic qui fonctionne exactement comme je le souhaitais.
J'ai une demande supplémentaire, complétant cette macro doit je rappelle le code :
----------------------------------------
Sub FormaterSelonMasque()
Dim sh As Worksheet
For Each sh In Worksheets
If InStr("2013,2012,Labos,Listes,Stats,Essais,Graphique,Masque", sh.Name) = 0 Then
With Worksheets("Masque")
.Range("A1", .Cells.SpecialCells(xlCellTypeLastCell)).Copy
End With
sh.[A1].PasteSpecial Paste:=xlPasteFormats
sh.[A1].PasteSpecial Paste:=xlPasteColumnWidths
End If
Next sh
Application.CutCopyMode = False
End Sub
----------------------------------------
J'aimerais ajouter :
- copier contenu texte de la colonne A sur toutes les feuilles concernées et :
- copier contenu texte de la ligne 24 sur toutes les feuilles concernées.
J'ai bien trouvé la fonction .PasteSpecial xlPasteValues mais en essayant j'ai fait planter Excel ... champion !
Merci d'avance pour votre aide qui m'est si précieuse !
Je reviens vers vous à propos de la macro d'Eriic qui fonctionne exactement comme je le souhaitais.
J'ai une demande supplémentaire, complétant cette macro doit je rappelle le code :
----------------------------------------
Sub FormaterSelonMasque()
Dim sh As Worksheet
For Each sh In Worksheets
If InStr("2013,2012,Labos,Listes,Stats,Essais,Graphique,Masque", sh.Name) = 0 Then
With Worksheets("Masque")
.Range("A1", .Cells.SpecialCells(xlCellTypeLastCell)).Copy
End With
sh.[A1].PasteSpecial Paste:=xlPasteFormats
sh.[A1].PasteSpecial Paste:=xlPasteColumnWidths
End If
Next sh
Application.CutCopyMode = False
End Sub
----------------------------------------
J'aimerais ajouter :
- copier contenu texte de la colonne A sur toutes les feuilles concernées et :
- copier contenu texte de la ligne 24 sur toutes les feuilles concernées.
J'ai bien trouvé la fonction .PasteSpecial xlPasteValues mais en essayant j'ai fait planter Excel ... champion !
Merci d'avance pour votre aide qui m'est si précieuse !
Bonsoir,
si tu n'as pas de formules en colonne A et en ligne 24, ceci devrait suffire :
si tu n'as pas de formules en colonne A et en ligne 24, ceci devrait suffire :
Sub FormaterSelonMasque()eric
Dim sh As Worksheet
For Each sh In Worksheets
If InStr("2013,2012,Labos,Listes,Stats,Essais,Graphique,Masque", sh.Name) = 0 Then
With Worksheets("Masque")
.Columns(1).Copy sh.Columns(1)
.Rows(24).Copy sh.Rows(24)
.Range("A1", .Cells.SpecialCells(xlCellTypeLastCell)).Copy
sh.[A1].PasteSpecial Paste:=xlPasteFormats
sh.[A1].PasteSpecial Paste:=xlPasteColumnWidths
End With
End If
Next sh
Application.CutCopyMode = False
End Sub
Bonsoir Eriic
Sympa de t'y remettre !
En effet ça va comme prévu.
Par contre y a-t-il moyen de créer des zones à copier ?
Un peu comme .(A1:A24).Copy sh.(A1:A24)
Je complique encore une dernière fois un petit peu :
Il y a, sur certaines cellules de la feuille Masque, des listes déroulantes que je ne retrouve pas sur les autres feuilles.
Par contre, les formules se recopient bien.
Est-ce possible ?
Merci encore, c'est fort appréciable d'être aidé.
Sympa de t'y remettre !
En effet ça va comme prévu.
Par contre y a-t-il moyen de créer des zones à copier ?
Un peu comme .(A1:A24).Copy sh.(A1:A24)
Je complique encore une dernière fois un petit peu :
Il y a, sur certaines cellules de la feuille Masque, des listes déroulantes que je ne retrouve pas sur les autres feuilles.
Par contre, les formules se recopient bien.
Est-ce possible ?
Merci encore, c'est fort appréciable d'être aidé.
Bonjour Eriic
J'ai recréé les conditions de mon fichier original dans :
https://www.cjoint.com/?CIvjpUnvcov
J'ai noté les problèmes rencontrés en rouge.
Merci d'avance j'avance !
J'ai recréé les conditions de mon fichier original dans :
https://www.cjoint.com/?CIvjpUnvcov
J'ai noté les problèmes rencontrés en rouge.
Merci d'avance j'avance !
j'ai toujours l'erreur 400
Et si tu disais en quelle ligne ??
Non, mais j'ai une erreur 1004 due à tes cellules fusionnées A11:B11.
Fuir la fusion de cellule et utiliser 'centrer sur plusieurs colonnes' dans Format de cellule.
Appliqué à mon fichier originel, dans les cellules où il y a des listes déroulantes, la liste ne change pas selon celle du Masque, et les cellules concernées affichent #VALEUR.
Ca marche bien sur l'exemple.
eric
Et si tu disais en quelle ligne ??
Non, mais j'ai une erreur 1004 due à tes cellules fusionnées A11:B11.
Fuir la fusion de cellule et utiliser 'centrer sur plusieurs colonnes' dans Format de cellule.
Appliqué à mon fichier originel, dans les cellules où il y a des listes déroulantes, la liste ne change pas selon celle du Masque, et les cellules concernées affichent #VALEUR.
Ca marche bien sur l'exemple.
eric
Suis vraiment désolé mais je ne me débarrasse pas de l'erreur 400.
C'est juste une boîte de dialogue à valider qui ne me montre pas la ligne en cause dans VB.
Je remets mon fichier exemple (créé en XLS sous Excel 2010).
J'y ai scindé A11 et B11.
https://www.cjoint.com/?CIvlDgVU1Wr
Je sais que c'est lourd et je m'en excuse, mais j'y tiens vraiment, mes listes déroulantes changent souvent.
Un grand merci d'avance Eriic.
C'est juste une boîte de dialogue à valider qui ne me montre pas la ligne en cause dans VB.
Je remets mon fichier exemple (créé en XLS sous Excel 2010).
J'y ai scindé A11 et B11.
https://www.cjoint.com/?CIvlDgVU1Wr
Je sais que c'est lourd et je m'en excuse, mais j'y tiens vraiment, mes listes déroulantes changent souvent.
Un grand merci d'avance Eriic.
Si tu le fais en pas à pas avec F8 tu plantes toujours sur .Range("A1:A24").Copy sh.Range("A1:A24").
Il faut défusionner sur toutes les feuilles.
Clic sur la 1ère feuille, Shift+clic sur la dernière pour faire une sélection multiple et défusionner.
Sélectionner une feuille pour enlever la sélection multiple.
eric
Il faut défusionner sur toutes les feuilles.
Clic sur la 1ère feuille, Shift+clic sur la dernière pour faire une sélection multiple et défusionner.
Sélectionner une feuille pour enlever la sélection multiple.
eric
ok,
Déjà supprime les lignes et colonnes vides qui ne servent à rien dans ta feuille Listes et utilise des noms dynamique :
Préférence: =DECALER(Listes!$A$2;;;NBVAL(Listes!$A:$A)-1;)

Pareil pour les autres et tu n'as plus à t'en préoccuper. Elles s'adapteront automatiquement.
eric
Déjà supprime les lignes et colonnes vides qui ne servent à rien dans ta feuille Listes et utilise des noms dynamique :
Préférence: =DECALER(Listes!$A$2;;;NBVAL(Listes!$A:$A)-1;)

Pareil pour les autres et tu n'as plus à t'en préoccuper. Elles s'adapteront automatiquement.
eric
Bonsoir Eric et les autres ...
J'ai pu appliquer avec succès tes conseils et la formule DECALER.
C'est vrai que ça m'a considérablement simplifié la life.
J'ai repris une à une toutes mes fiches clients et appliqué des listes déroulantes du type "=Fonctions" à toutes les fiches.
Les listes déroulantes ne se recopient pas avec la macro, mais ce n'est pas bien grave puisque les nouvelles fiches seront issues d'une copie du masque.
Un grand merci pour ta patience, sujet doublement résolu !
Bonne soirée
J'ai pu appliquer avec succès tes conseils et la formule DECALER.
C'est vrai que ça m'a considérablement simplifié la life.
J'ai repris une à une toutes mes fiches clients et appliqué des listes déroulantes du type "=Fonctions" à toutes les fiches.
Les listes déroulantes ne se recopient pas avec la macro, mais ce n'est pas bien grave puisque les nouvelles fiches seront issues d'une copie du masque.
Un grand merci pour ta patience, sujet doublement résolu !
Bonne soirée