XL 2013 Actionner les commandes présentes dans d'autres feuilles

arnoldbrice19

XLDnaute Nouveau
Bonjour à tous, et surtout, félicitation à tous les développeurs d'Excel !

J'ai une grosse préoccupation avec mon fichier (ci-joint), et je sollicite votre aide.
Avant tout, je suis novice dans la conception de fichier Excel prenant en charge les macros, pour ne pas dire que je n'en sais trop rien sur les codes VBA. Je dirai plutôt que j'apprends en bon lecteur.

En effet, l'idée du projet est de créer dans la première feuille (MENU) des boutons d'accès rapide pour pouvoir naviguer avec aisance dans le document. La majorité des macros ont déjà été affecter à chaque bouton.
Cependant, j'ai des difficultés à trouver les codes VBA pour :
- Mettre la nouvelle feuille à l'avant dernière position, c'est-à-dire avant la feuille (DONNEES), par simple clic sur le bouton "AJOUTER UN MEMBRE" ;
- Copier une plage de données d'une feuille à l'autre, avec bien-sur toutes les mises en forme source, par simple clic sur le bouton "COPIER LES DONNEES" ;
- Réninitialiser toutes les plages de cellules intégrées dans les codes de chaque feuille du projet VBA, pas des modules, par simple clic sur le bouton "REMISE A ZERO" de la feuille (MENU) ; etc..

_________module 3 : Le premier problème consiste à mettre à jour le code de la macro "ajouter_feuille" avant que la nouvelle feuille aille se placer à l'avant de la dernière feuille, selon les positions des feuilles.
VB:
Sub ajouter_feuille()
Dim i As Integer
Dim y As String
ActiveWorkbook.Sheets.Add
ActiveSheet.Name = "Nouveau Membre"
End Sub
_________module 5 : Le second problème consiste à faire en sorte que cette nouvelle feuille (Nouveau Membre) intègre les données de la feuille (DONNEES), par copie, après qu'elle soit créée, ou bien par simple clic selon mon idée secondaire, vue que je ne parvenait pas trouver le bon code.
_________module 2 : Concernant le troisième, des boutons boutons (EFFACER LES DONNEES) ont été créés à cet effet, mais pour chaque feuille. L'idée ici est de créer une macro qui actionne simultanément ces boutons ou encore, créer une macro qui réinitialisera les plages de cellules (cellules fusionnées y compris) indiquées dans les codes macros constituants des différentes feuilles résumés ci-après :
**De la première à la dernière feuille /-EXCLUS LES FEUILLES 27 & 13 QUI ONT RESPECTIVEMENT LA 1er ET 2nd POSITION DANS LE CLASSEUR
VB:
Sub Efface()
Range("B14:J33, K9:L9, K14:O33").ClearContents
End Sub
**La feuille 13 nommée (RECAP) est constituée de manière différente
VB:
Sub Efface()
Range("A9:A20, B8:G8, H8:H20, J8:J20, K8:K20, M8:R8, P28:R63,R9:R20").ClearContents
End Sub
**La feuille 27 représente le menu de navigation rapide

CORFERT module 1 pour dévérouiller les onglets. :)

Merci d'avance à tous !
 

Pièces jointes

  • FICHE SUIVI REUNION.xlsm
    416.2 KB · Affichages: 3
Solution
Bonjour @arnoldbrice19

Tu poses plein de questions en même temps :
Le principe du forum c'est une question ==> une ou plusieurs réponses de 1 ou plusieurs intervenants

1) Question 1
- Mettre la nouvelle feuille à l'avant dernière position, c'est-à-dire avant la feuille (DONNEES), par simple clic sur le bouton "AJOUTER UN MEMBRE" ;

VB:
Sub ajouter_feuille()
Dim i As Integer
Dim y As String
ActiveWorkbook.Sheets.Add After:=Sheets(Sheets.Count - 1)
ActiveSheet.Name = "Nouveau Membre"
End Sub


2) Question 2
- Copier une plage de données d'une feuille à l'autre, avec bien-sur toutes les mises en forme source, par simple clic sur le bouton "COPIER LES DONNEES" ;
Manque total de précision
En principe...

Phil69970

XLDnaute Barbatruc
Bonjour @arnoldbrice19

Tu poses plein de questions en même temps :
Le principe du forum c'est une question ==> une ou plusieurs réponses de 1 ou plusieurs intervenants

1) Question 1
- Mettre la nouvelle feuille à l'avant dernière position, c'est-à-dire avant la feuille (DONNEES), par simple clic sur le bouton "AJOUTER UN MEMBRE" ;

VB:
Sub ajouter_feuille()
Dim i As Integer
Dim y As String
ActiveWorkbook.Sheets.Add After:=Sheets(Sheets.Count - 1)
ActiveSheet.Name = "Nouveau Membre"
End Sub


2) Question 2
- Copier une plage de données d'une feuille à l'autre, avec bien-sur toutes les mises en forme source, par simple clic sur le bouton "COPIER LES DONNEES" ;
Manque total de précision
En principe on part d'un modèle et on copie ce modèle en lui donnant un nouveau nom

3Question 3
- Réninitialiser toutes les plages de cellules intégrées dans les codes de chaque feuille du projet VBA, pas des modules, par simple clic sur le bouton "REMISE A ZERO" de la feuille (MENU) ; etc..
J'ai rien compris

Perso :
Ton fichier me chagrine un peu vu le nombre de feuille que tu as.
J'aurais fais :
-Une feuille menu (comme toi)
-Une feuille recap (comme toi)
-Une feuille BDD Nom (avec un ID pour chaque nom c'est ta clé qui relie le nom d'un coté avec les dates et somme de l’autre)
-Une feuille de versement (avec ID des personnes pour le lien avec la BDD)
-Une feuille modèle qui récupère les infos de chaque personne (BDD) et les versements en fonction de la personne à visualiser.

Total tu as 5 feuilles max mais il faut tout revoir ......

@Phil69970
 

arnoldbrice19

XLDnaute Nouveau
Bonjour @arnoldbrice19

Tu poses plein de questions en même temps :
Le principe du forum c'est une question ==> une ou plusieurs réponses de 1 ou plusieurs intervenants

1) Question 1


VB:
Sub ajouter_feuille()
Dim i As Integer
Dim y As String
ActiveWorkbook.Sheets.Add After:=Sheets(Sheets.Count - 1)
ActiveSheet.Name = "Nouveau Membre"
End Sub


2) Question 2

Manque total de précision
En principe on part d'un modèle et on copie ce modèle en lui donnant un nouveau nom

3Question 3

J'ai rien compris

Perso :
Ton fichier me chagrine un peu vu le nombre de feuille que tu as.
J'aurais fais :
-Une feuille menu (comme toi)
-Une feuille recap (comme toi)
-Une feuille BDD Nom (avec un ID pour chaque nom c'est ta clé qui relie le nom d'un coté avec les dates et somme de l’autre)
-Une feuille de versement (avec ID des personnes pour le lien avec la BDD)
-Une feuille modèle qui récupère les infos de chaque personne (BDD) et les versements en fonction de la personne à visualiser.

Total tu as 5 feuilles max mais il faut tout revoir ......

@Phil69970
D'accord @Phil69970 ,je comprends.
Déjà, merci pour ta réaction et désole pour le plein de questions. Je voulais tout simplement mettre en évidence mes difficultés. Ceci dit, je ne maîtrise pas assez Excel. Les idées me sont venues l'une après l'autre.
Je te remercie déjà pour avoir résolu ma première préoccupation. J'essayerai de m'expliquer sur le deuxième problème.
Comment copier les données de plusieurs plages de cellules (cellules fusionner y compris) d'une feuille à l'autre feuille en respectant les mises en forme de celles-ci ?

L'idée initiale était de construire un code qui pourra copier copier l'ensemble des données d'une feuille à l'autre, autrement dit, de la dernière feuille nommée "DONNEES" et la placer dans la nouvelle feuille créée par le bouton "AJOUTER UN MEMBRE" nommée "Nouveau Membre".

J'ai ajouter cette ligne :
Sheets("DONNEES").Range("A1:O36").Copy Sheets("Nouveau Membre").Range("A1:O36")
ça donne :
VB:
Sub ajouter_feuille()
Dim i As Integer
Dim y As String
ActiveWorkbook.Sheets.Add After:=Sheets(Sheets.Count - 1)
ActiveSheet.Name = "Nouveau Membre"
    Sheets("DONNEES").Range("A1:O36").Copy Sheets("Nouveau Membre").Range("A1:O36")
End Sub
Module 3.
Mais le souci c'est qu'en faisant cela, les tailles des cellules ne sont pas respectées et qu'il faille encore, une fois de plus, les rectifier.
 

arnoldbrice19

XLDnaute Nouveau
Comment copier les données de plusieurs plages de cellules (cellules fusionner y compris) d'une feuille à l'autre feuille en respectant les mises en forme de celles-ci ?

L'idée initiale était de construire un code qui pourra copier copier l'ensemble des données d'une feuille à l'autre, autrement dit, de la dernière feuille nommée "DONNEES" et la placer dans la nouvelle feuille créée par le bouton "AJOUTER UN MEMBRE" nommée "Nouveau Membre".

J'ai ajouter cette ligne :
Sheets("DONNEES").Range("A1:O36").Copy Sheets("Nouveau Membre").Range("A1:O36")
ça donne :


VB:


Sub ajouter_feuille()
Dim i As Integer
Dim y As String
ActiveWorkbook.Sheets.Add After:=Sheets(Sheets.Count - 1)
ActiveSheet.Name = "Nouveau Membre"
Sheets("DONNEES").Range("A1:O36").Copy Sheets("Nouveau Membre").Range("A1:O36")
End Sub

Module 3.
Mais le souci c'est qu'en faisant cela, les tailles des cellules ne sont pas respectées et qu'il faille encore, une fois de plus, les rectifier.

J'ai trouver une solution à cette question en faisant un "Enregistrement Macro".
 

Discussions similaires

Réponses
10
Affichages
354
Réponses
14
Affichages
356

Statistiques des forums

Discussions
315 080
Messages
2 116 021
Membres
112 637
dernier inscrit
pseudoinconnu