Optimisation macro

Mistral13200

XLDnaute Nouveau
Bonjour à tous,

Pour les besoin d’un concours besoin de créer entre cent trente et cent cinquante onglets. Pour cela j’ai dans un classeur un onglet dans lequel se trouve le détail du palmarès du concours et un onglet «Modèle» qui sera à dupliquer autant de fois qu’il y a de ligne dans le «Palmarès». Ce modèle est renseigné à partir des infos contenues dans chaque ligne du palmarès. Les cellules concernées (Récompense, titre, auteur et pays) du palmarès sont nommées.

1er problème :
Avec la macro appelée «Dupliquer_onglet» j’arrive à dupliquer en nombre suffisant l’onglet modèle mais je n’arrive pas à actualiser les informations de chaque onglet ainsi créés. Le but étant d’avoir des infos différentes dans chaque onglet créé.

Je sauvegarde ensuite les onglets créés au format PDF avec la macro appelée «Enregistrement_PDF». Cela fonctionne mais avec les chemins des répertoires en dur dans la macro.

2ème problème :
Je souhaiterais sauvegarder uniquement les onglet créés, séparément et sous le nom de l’onglet dans le répertoire d’origine du classeur, mais je ne sais pas comment faire pour :
- Récupérer le chemin en VBA.
- Compter les onglets créés.

3ème problème, pour lequel je n’ai aucune idée :
Indépendamment du classeur précédent, je souhaiterais, à partir d’un classeur contenant une liste de fichiers photo, copier ces fichiers contenus dans cette liste d’un répertoire «A» dans un répertoire «B» avec la possibilité de choisir les répertoires d’arrivée et de départ.

Ci-joint un petit fichier de démonstration pour les deux premiers problèmes.
Je précise que je suis sous Windows 7 Pro et Office 2010.

Merci d’avance pour votre aide.
Cordialement
Mistral
 

Pièces jointes

  • EC_Palmares.xlsm
    29.1 KB · Affichages: 16
  • EC_Palmares.xlsm
    29.1 KB · Affichages: 19

Philippe Tulliez

XLDnaute Nouveau
Re : Optimisation macro

Bonjour,
2ème problème :
Je souhaiterais sauvegarder uniquement les onglet créés, séparément et sous le nom de l’onglet dans le répertoire d’origine du classeur, mais je ne sais pas comment faire pour :
- Récupérer le chemin en VBA.
- Compter les onglets créés.
Je réponds par rapport à ce que tu décris car je n'ouvre pas les classeurs
1) Récupérer le chemin en VBA du classeur actif c'est avec la propriété Path de Workbooks(NomClasseur) ou de l'objet ThisWorkbook
Code:
MsgBox ThisWorkbook.Path
2) Compter le nombre d'onglets (propriété Count de la collection Worksheets
Code:
MsgBox ThisWorkbook.Worksheets.Count
 
Dernière édition:

jpb388

XLDnaute Accro
Re : Optimisation macro

Bonjour à tous
regarde si cela te va
pour le problème 3 il faut utiliser la boite de dialogue GetOpenFilemane pour ouvrir et GetSaveAsFilename pour le sauvegarder
 

Pièces jointes

  • EC_Palmares.xlsm
    29.5 KB · Affichages: 22
  • EC_Palmares.xlsm
    29.5 KB · Affichages: 21

gilbert_RGI

XLDnaute Barbatruc
Re : Optimisation macro

Bonjour,

voilà donc pour le premier problème

VB:
Sub Dupliquer_onglet()
' Duplique l'onglet Modèle autant de fois que de ligne dans le palmarès.

    Dim i                                           'Indice de boucle.
    Dim Nb_Ligne As Long                            ' Nombre de ligne dans le palmarès.
    Dim Sh As Worksheet
    Set Sh = Sheets("Palmares")
    Nb_Ligne = Range("A" & Rows.Count).End(xlUp).Row

    'Nb_Ligne = Nb_Ligne - 1                         ' Ajustement // la ligne de titre.(non pas besoin)
    For i = 2 To Nb_Ligne
        Sheets("Modèle").Copy After:=Sheets(i)      ' Copie l'onglet modèle.
        With ActiveSheet
            .Name = "Diapo_" & i - 1           ' Renomme l'onglet créé.
            .Range("A10") = Sh.Range("F" & i)           'info 1
            .Range("A12") = Sh.Range("G" & i)           'info 2
            .Range("A14") = Sh.Range("H" & i)           'info 3
        End With
    Next i

End Sub
 

Mistral13200

XLDnaute Nouveau
Re : Optimisation macro

Bonjour à tous,

Merci à vous trois d'avoir répondu à mes questions.
Pour la duplication des onglets, ça fonctionne correctement après une petite modification pour récupérer les bonnes infos.
Pour la sauvegarde de Jpb ça fonctionne aussi.

J'ai testé les fonctions proposées par Philippe et je pense avoir compris. Je les ai mises dans une variable que je peux ainsi réutilisée.
Je souhaiterais maintenant, en ajoutant un nom à la suite de cette variable créer un sous répertoire dans lequel je pourrais copier (pas déplacer), depuis une liste contenue dans une feuille Excel, des fichiers de ce répertoire dans le sous répertoire.

Cordialement
Mistral
 

Discussions similaires

Réponses
12
Affichages
242

Statistiques des forums

Discussions
312 190
Messages
2 086 040
Membres
103 105
dernier inscrit
fofana