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 :

Copier et incrémenter le nom d'une feuille [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut Copier et incrémenter le nom d'une feuille
    Bonjour à tous et à toutes

    Je cherche à affecter à un bouton une macro permettant
    - la copie de la feuille actuelle juste après la feuille actuelle
    - incrémenter le nom de la feuille copiée. par exemple passer de LOCAL01 à LOCAL02

    La macro que j'ai trouvée sur le net copie bien la feuille en cours, mais en dernière position et sans changer le nom comme souhaité

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub Bouton20_Clic()
     
        ' Désactive la mise à jour de l'écran
       Application.ScreenUpdating = False
     
        Cells.Copy
        Sheets.Add after:=Sheets(Worksheets.Count)
        ActiveSheet.Paste
        ActiveSheet.Range("a1").Select
        Application.CutCopyMode = False
     
    End Sub
    Merci pour votre aide

    Daniel S

  2. #2
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Bonjour,

    Pour la copie de la feuille active, essaie comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub Bouton20_Clic()
    Dim Ws As Worksheet
     
    Set Ws = ActiveSheet
    Ws.Copy After:=Ws
     
    End Sub
    Pour l'incrémentation du nom c'est plus délicat, supposons que tu veux copier 2x la feuille LOCAL01, si on incrémente en fonction du nom de la feuille on va se retrouver avec 2x LOCAL02 et ça va couiner. Si on incrémente en fonction du nombre de feuilles et que tu supprimes une des feuilles, on va se retrouver avec un 2 noms identiques et ça va couiner aussi...

  3. #3
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    Bonjour Fring et merci pour cette macro qui fonctionne parfaitement

    Pour ce qui est de l'incrémentation, ce que je souhaite, c'est partant d'une feuille nommée LOCAL01 par exemple (mais ca peut être uniquement numérique comme 01) la feuille copiée soit renommée LOCAL02 ou 02.

    Merci pour ton aide

    Daniel S

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2008
    Messages
    764
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2008
    Messages : 764
    Par défaut incrémenter une feuille
    Bonjour,

    Pour incrémenter une feuille, le nom de cette feuille doit se composer en deux parties :
    1-la partie qui ne change jamais en texte
    2-La partie qui change sera une variable (integer, byte, long ... si tu ne dépasses pas 256 prend la variable en byte)

    ca donne un truc dans le genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim btVar as byte
    Worksheet("maFeuille" & btVar)
    btVar = btVar + 1

  5. #5
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    bonjour Francky et merci pour ces lignes de code

    Comment puis je les intégrer dans la macro précédente ?

    Merci d'avance

    Daniel

  6. #6
    Expert confirmé
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Par défaut
    Ce que francky propose ne fonctionnera pas tel quel vu que la variable btVar reprend la valeur 0 à chaque fois que tu exécutes la macro.

    Pour faciliter la chose, sépare le nom de la feuille et le numéro par un tiret par exemple (LOCAL-1), de cette manière il ne faudra pas se soucier du nombre de caractères.
    Ce qui donnerait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Sub Bouton20_Clic()
    Dim Ws As Worksheet, Nom As String, Num As Integer
     
    Set Ws = ActiveSheet
    Nom = Split(Ws, "-")(0)
    Num = Split(Ws, "-")(1)
    Ws.Copy After:=Ws
    ActiveSheet.Name = Nom & "-" & Num + 1
     
    End Sub

  7. #7
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.
    Voici une autre suggestion.

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    Sub copie_sheet2()
     
    FeuilleOrigine = "Local1"
    FeuilleDestination = "Local"
     
    PremierNumero = 10
    formats = "00"
    NumeroSuivant = Format(PremierNumero, formats)
    copierApres = Sheets.Count - 1
     
    For Each ws In Application.Worksheets
     nbr = nbr + 1
    If UCase(Left(ws.Name, Len(FeuilleDestination))) = UCase(FeuilleDestination) Then
     If Len(Mid(ws.Name, Len(FeuilleDestination) + 1)) = Len(NumeroSuivant) Then
      num = Val(Mid(ws.Name, Len(FeuilleDestination) + 1))
      If num >= Val(NumeroSuivant) Then
       NumeroSuivant = Format(Val(num) + 1, formats)
       copierApres = nbr
      End If
     End If
     End If
     Next
     
    Sheets(FeuilleOrigine).Copy After:=Sheets(copierApres)
    ActiveSheet.Name = FeuilleDestination & NumeroSuivant
     
    End Sub

  8. #8
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    Bonjour

    MErci à tous pour votre aide, ca fonctionne parfaitement

    Daniel S

  9. #9
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour

    oui daccors ca fonctionne mais quelle option a tu choisi et pourquoi?


    au plaisir
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  10. #10
    Membre très actif
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 186
    Par défaut
    bonjour

    J'utilise la solution de Fring .... parceque c'est la première a avoir été proposée ...

    Je n'ai pas cherché plus loin

    Encore merci pour votre aide

    Daniel

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

Discussions similaires

  1. Copier et incrémenter le nom d'une feuille
    Par remondii dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 31/12/2014, 00h05
  2. [XL-2007] Incrémenter le nom d'un feuille dans une formule
    Par Buzzz2727 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 11/08/2012, 00h26
  3. Copier colonnes suivant leur nom dans une autre feuille
    Par paflolo dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 18/10/2006, 15h49
  4. Réponses: 37
    Dernier message: 02/03/2006, 02h58
  5. Réponses: 4
    Dernier message: 09/11/2005, 18h11

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