IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Dupliquer une feuille avec renommage


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut Dupliquer une feuille avec renommage
    Bonjour,

    Le code ci-dessous réalise une copie d'une feuille et la place après la dernière feuille du classeur. elle est renommer automatiquement : nom de la feuille + (numéro)
    exemple : NomFeuille (2) ou encore NomFeuille (3) etc...

    Je voudrais savoir qu'elle la fonction qui peut me placer la feuille juste après la feuille original? avec un autre type de renommage comme : Double_NomFeuilleOrigin par exemple.

    Voici le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub CopyWorkSheet_Activate()
       Dim wh As Worksheet
       Dim ws As Worksheet
     
        Set wh = Worksheets(ActiveSheet.Name)
     
       ActiveSheet.Copy After:=Worksheets(Sheets.Count) ' copier la feuille après toutes les feuilles de calcul
     
     
       End Sub
    Merci pour votre aide

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour


    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Sub Test()
    Dim SheetName As String, NewName As String
     
    SheetName = "Feuil1"
    NewName = "Nouvelle Feuil1"
    If Not SheetExist(NewName) Then
        Worksheets(SheetName).Copy After:=Worksheets(SheetName)
        ActiveSheet.Name = NewName
    Else
        MsgBox "Impossible de copier la feuille " & SheetName & Chr(10) & NewName & " existe déjàé"
    End If
    End Sub
     
    Private Function SheetExist(ByVal Tmp As String) As Boolean
     
    On Error Resume Next
    SheetExist = Sheets(Tmp).Index
    End Function

  3. #3
    Membre émérite
    Homme Profil pro
    Inscrit en
    Octobre 2013
    Messages
    385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2013
    Messages : 385
    Par défaut
    Bonjour,

    En partant de ce code, et en se creusant un tout petit peu la tête on peut arriver à en déduire ce que tu cherches.

    Tu remarques que la méthode Copy possède un argument After.
    Il suffit donc de lui préciser la feuille après laquelle du veux coller.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Copy After:=wh   'au lieu de Worksheets(Sheets.Count)
    Pour le renommage, l'avantage c'est que l'utilisation de Copy te place directement sur la feuille duppliquée.
    Tu peux donc la renommer facilement :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Activesheet.Name = "Double_" & wh.Name

  4. #4
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Bonjour mat955 ,

    Ton code ne s'éloigne pas trop du mien et donc le résultat que je voulais est là !! de plus c'est très logique fallait juste que je creuse comme tu dis

    Bonjour mercatog,

    ma question avant de le tester aussi, il me semble qu'il s'applique uniquement sur la feuille concernée ? je dois spécifier à chaque fois le nom de la feuille ?

    Merci à vous deux vous êtes géniaux

  5. #5
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 209
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Je voudrais savoir qu'elle la fonction qui peut me placer la feuille juste après la feuille original?
    La réponse est dans ta question. Comme ta feuille que tu souhaites copier est la feuille active, c'est tout simplement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.Copy After:=ActiveSheet
    Pour le renommage, l'enregistreur de macro, t'aurais donné la réponse
    C'est la propriété Name de la nouvelle feuille, qui devient la feuille active, qu'il faut modifier

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub CopyWorkSheet_Activate()
     
       ActiveSheet.Copy After:=ActiveSheet   ' copier la feuille après toutes les feuilles de calcul
       ActiveSheet.Name = "Nouveau nom"
     
     End Sub
    Pour renommer par indexation une feuille existante, tu peux lire ce billet, titré Comment incrémenter le nom d’une feuille Excel lorsqu’il existe déjà ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  6. #6
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message

    Pour renommer par indexation une feuille existante, tu peux lire ce billet, titré Comment incrémenter le nom d’une feuille Excel lorsqu’il existe déjà ?
    Merci Philippe Tulliez, je vais le lire c'est toujours utile

  7. #7
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    C'était un exemple général. A toi de l'adapter au contexte

  8. #8
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Re Bonjour, Meilleurs vœux à tous

    Je reviens vers vous car j'ai ajouté une condition qui vérifie si la feuille existe déjà ou pas avant de la copier.
    il fonctionne bien mais mon soucis c'est que malgré qu'il affiche un message d'erreur indiquant que la feuille existe déjà il me crée une quand même mais cette fois ci avec un nom comme ça : feuil1(2) alors qu'il est pas censé faire ça
    pouvez-vous m'indiquer mon erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ActiveSheet.Copy After:=wh
        If Feuil_Exist(ThisWorkbook.Name, "Double_" & wh.Name) = True Then
         MsgBox "Le nom : " & "Double_" & wh.Name & " existe déjà." & vbCrLf & _
                "dans les feuilles masquées.", vbCritical
              Else
        ActiveSheet.Name = "Double_" & wh.Name
     
    End If
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Function Feuil_Exist(strWbk As String, strWsh As String) As Boolean
     
    'Gestionnaire d'erreur
    On Error Resume Next
        '"Test"
        Feuil_Exist = (Workbooks(strWbk).Sheets(strWsh).Name = strWsh)
    End Function
    Merci à vous

  9. #9
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 209
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    En ligne 1, tu copies la feuille et ensuite seulement tu vérifies si celle-ci existe.
    A ton avis où est l'erreur ?
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  10. #10
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Citation Envoyé par Philippe Tulliez Voir le message
    Bonjour,
    En ligne 1, tu copies la feuille et ensuite seulement tu vérifies si celle-ci existe.
    A ton avis où est l'erreur ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     If Feuil_Exist(ThisWorkbook.Name, "Double_" & wh.Name) = True Then
         MsgBox "Le nom : " & "Double_" & wh.Name & " existe déjà." & vbCrLf & _
                "dans les feuilles masquées.", vbCritical
              Else
    ActiveSheet.Copy After:=wh   
    ActiveSheet.Name = "Double_" & wh.Name
     
    End If
    c'était rapide

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Dupliquer une feuille avec des graphique
    Par mxitzny dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 08/09/2017, 15h15
  2. Réponses: 5
    Dernier message: 28/01/2015, 13h17
  3. Dupliquer une feuille avec son module et son userform
    Par juluseless dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 25/09/2014, 12h47
  4. Réponses: 3
    Dernier message: 15/12/2008, 16h46
  5. Dupliquer une feuille Excel avec Delphi 7
    Par loci dans le forum Delphi
    Réponses: 1
    Dernier message: 01/07/2006, 16h38

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo