Macro de copie d'onglet

vincentS

XLDnaute Nouveau
Bonjour a tous,

Voila j'ai des problème pour créer une macro permettant de dupliquer un onglet,

Ce que je cherche à faire :

Feuille interface avec une case a remplir, où il faut indiquer une année puis clicker sur un bouton pour générer la copie.

La copie est celle de l'onglet intitulé "Demande PAC", la macro devra donc dupliquer l'onglet. MAIS le renommer "Demande PAC 20XX" (20XX étant l'année indiquée dans la case de la page interface).

Je vous remercie d'avance pour votre aide.

Vincent
 

Kotov

XLDnaute Impliqué
Re : Macro de copie d'onglet

Re Vincent,

Je n'avais pas remarqué que tu avais fractionné tes demandes sur 2 fils.
Le thème étant relativement proche, il était possible de n'en faire qu'un.

Voici une macro qui va créer un onglet, à condition qu'il n'existe pas déjà :
Code:
Private Sub CbNewOnglet_Click()
Dim S$, i&
a = InputBox("Saisir l'année souhaitée : ", "Nouvel onglet millésimé")

    S = "demande PAC " & a
    For i = 1 To Sheets.Count
        If Sheets(i).Name = S Then
            MsgBox "Ce nom d'onglet est déjà attribué ", vbCritical, "Création impossible..."
            Exit Sub
        End If
    Next i
    Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = S
    Sheets(S).Activate
End Sub

Tu remarqueras probablement des similitudes avec les macros figurant sur l'autre fil.

J'ai procédé de la manière suivante :
1. Création sur la feuille "Interface" d'un bouton nommé CbNewOnglet
2 Ce bouton se voit affecter une macro évènementielle déclenchée via un clic sur le bouton : CbNewOnglet_Click()

Que fait la macro ?
Ligne 1 : comme sur l'autre fil, déclaration d'une variable S (chaîne de caractère qui accueillera le nom d'onglet) et i une variable-compteur pour la boucle qui passera en revue chaque onglet.
Ligne 2 : A chaque clic sur le bouton, s'ouvrira une boite de saisie qui demandera l'année à créer
Ligne 3 : la variable S prend la valeur choisie : "demande PAC " et l'année.

Les lignes 4 à 9 servent à vérifier qu'il n'existe pas un onglet déjà nommé comme l'onglet souhaité (bug assuré si c'est le cas). Je passe donc en revue chaque onglet existant avec message d'erreur et sortie immédiate de la macro si un doublon est trouvé

Dans le cas contraire (pas de doublon) la macro continue :
Ligne 10 : Création après le dernier onglet d'une feuille nommée avec la valeur de la variable S
Ligne 11 : sélection de cette nouvelle feuille pour débuter la saisie


Je te joins le fichier comprenant cette macro et les autres issues de ta précédente demande.

A+
Kotov
 

Pièces jointes

  • XLD-Onglets-1.xlsm
    26.3 KB · Affichages: 247
Dernière édition:

vincentS

XLDnaute Nouveau
Re : Macro de copie d'onglet

Oui donc il y a un petit problème, cela vient peut-être du fait que je me suis mal exprimé.

En fait sur l'onglet "Demande PAC" il y aura un tableau a remplir plus des boutons associés a des macros simples(faites par enregistrement).
Donc la macro que je cherche devra dupliquer cette page et la renommer en changeant l'année.

Par contre ton idée de faire apparaitre une fenêtre pour indiquer l'année est super et le message d'erreur pareil !!

En attendant j'ai tout compris dans la macro que tu m'a envoyé et je sais la refaire donc merci quand même ;)

En espérant que ma macro soit faisable, encore merci.
 

Kotov

XLDnaute Impliqué
Re : Macro de copie d'onglet

Bonsoir Vincent,

J'ai le sentiment que tu vas au devant de complications.
Pour prendre l'image du labyrinthe, tu essaies d'atteindre la sortie en essayant les voies au fil des embranchements. Certaines te font avancer, d'autres sont des impasses et t'obligent à faire demi-tour.
L'idéal étant, avant de se lancer, d'avoir une vision claire du chemin à prendre (vue d'ensemble, survol du labyrinthe ...)

Facile à dire, moins facile à faire, surtout quand on débute.
Dans le cadre de ton projet, j'ai l'impression que tu ne prends pas le chemin le plus court :
Tu réalises une feuille, ajoutes des macros automatiques et tentes de dupliquer le tout pour les feuilles suivantes.
Principal problème : les macros automatiques sont spécifiques à la feuille dans laquelle elles ont été enregistrées et sont difficilement exportables

Personnellement, j'aurais procédé ainsi :

Etape 1 : réalisation d'un modèle vierge de tableau, sans macro mais avec les formules utiles. Appelons l'onglet "Modèle" et le tableau "Tableau"

Etape 2 : réalisation de l'onglet "Interface" qui te servira à piloter ton fichier. C'est l'onglet de base qui contiendra les différents boutons d'appel de macro (préparation d'un nouvel onglet, duplication d'une feuille, calcul dans les tableaux, navigation entre les feuilles ...).
L'idéal étant même de réaliser un formulaire (UserForm) qui intègre tous ces boutons.

Etape 3 : réalisation de la macro de duplication, c'est à dire sur le principe de l'exemple que je t'ai proposé dans un message précédent. Affectation de la macro à un bouton créé dans l'onglet "Interface" ou sur le formulaire.
Que fait cette macro ?
Affichage d'une boite de dialogue demandant le millésime de l'année à créer. Si l'onglet millésimé n'existe pas, alors création de l'onglet, et copie de "Tableau" (le tableau figurant dans l'onglet "Modèle"). Si l'onglet existe, sortie de la macro sans création de feuille.

Etape 4 : réalisation de chaque macro utilisée dans les tableaux, macros développées dans le VBE (Visual Basic Editor) et pas macros automatiques enregistrées via "Outils/Options/Enregistrer une macro"

Etape 5 : affectation de ces macros à des boutons positionnés dans l'onglet "Interface" ou dans le formulaire.
2 options :
a) chaque macro passe en revue tous les tableaux et effectue les calculs nécessaires. Si tu ajoutes un tableau dans un nouvel onglet, les calculs seront réalisés dès que tu lanceras la macro.

b) chaque macro te propose une liste déroulante, dans laquelle tu sélectionnes l'onglet qui doit être calculé. Le calcul s'effectue uniquement sur cet onglet

Voilà en résumé, ce que je tenterais, mais il existe probablement d'autres façons de procéder. Pas facile à réaliser pour un débutant, je le reconnais, mais si tu exprimes clairement, simplement et entièrement tes besoins, tu devrais trouver de l'aide sur ce forum.

Réfléchis bien à ton projet avant de poursuivre.
N'hésites à joindre un fichier sans données confidentielles, c'est toujours difficile d'aider virtuellement quelqu'un.

Je m'absente quelques jours, je repasserai sur le forum probablement en milieu de semaine prochaine.

A +
Kotov
 
Dernière édition:

vincentS

XLDnaute Nouveau
Re : Macro de copie d'onglet

Salut Kotov !
Désolé pour le retard mais j'ais plein d'exam en ce moment !
d'ailleur je dois rendre ce projet pour Jeudi prochain mais rassure toi j'ai beaucoup avancé !

Malgrès tout j'ai encore besoin de ton aide si précieuse.

Je t'envoie mon projet en lien.

Pourrais tu refaire la macro appercu avant impression car la mienne bug sérieux.. le temps de chargement est vraiment très long. Il faudrait que cela s'affiche directement dans un format permettant de visualiser tout le tableau (en largeur).


Merci a toi pour ton aide et a bientôt j'espère !



Mon projet :
 

jeanpierre

Nous a quitté
Repose en paix
Re : Macro de copie d'onglet

Bonsoir vincentS, Kotov,

Simple info. Déjà, tu vires tes images (inutiles pour l'exemple) et ensuite, tu Zippes ton fichier et, là, il doit passer sur XLD.

Au besoin, tu le présentes sous le format .XLS pour avoir plus de réponses (tout le monde n'ayant pas 2007, loin s'en faut ou ne pouvant pas ouvrir ce format).

Bonne soirée.

Jean-Pierre
 

Discussions similaires

Réponses
7
Affichages
582

Statistiques des forums

Discussions
312 497
Messages
2 088 992
Membres
104 000
dernier inscrit
dinelcia