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 :

VBA - Numérotation automatique feuille excel [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Caïmans

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut VBA - Numérotation automatique feuille excel
    Bonjour,

    J'aimerais, à partir d'un fichier Excel, qu'à chaque fois que je copie une nouvelle feuille dans Excel qu'une numérotation automatique s'effectue.

    Plus précisément, je voudrais qu'à chaque fois que je copie une feuille, au lieu que la feuille s'intitule, par exemple, 0001 (2) qu'elle aille automatiquement la numérotation 0002, 0003, et ainsi de suite. Qu'à partir de la numérotation de la première page (définit par moi), que le restant des feuilles suivent.

    De plus, toujours en ayant une numérotation automatique, j'aimerais qu'à toute les fois qu'une nouvelle feuille soit créée, qu'un chiffre à une case spécifique dans la feuille Excel se change automatiquement.

    Étant donné que je n'ai jamais travaillé avec des macros ou en vba, serait-ce possible de tout m'expliquer le code en détail avec toutes les actions à faire. Je travaille avec la version 2007 d'Excel.

    Peut-etre serait-il plus facile de créer un bouton permettant de copier une nouvelle feuille en s'assurant de supprimer le contenu des autres cellules.

    Merci à l'avance de 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
    As tu déjà écrit des lignes de code?
    As tu déjà utilisé l'enregistreur de macros?
    As tu commencé quelque chose?

    Une proposition et je me demande si elle va t'aider.
    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 Proposition()
    Dim Sh As Worksheet
    Dim Nom As String
    Dim i As Integer
     
                                                    'On suppose que les feuilles sont nommées par du texte suivi d'une nombre à 4 chiffres
    Application.ScreenUpdating = False              'Permet d'éviter la mise à jour affichage
    Nom = ActiveSheet.Name                          'Dans Nom on récupère le nom de la feuille active (à copier)
    Nom = Left(Nom, Len(Nom) - 4)                   'On supprime de nom les 4 derniers chiffres
    Do                                              'On boucle sur toutes les feuilles
        i = i + 1                                   'Compteur de feuille
        Set Sh = Nothing                            'On vide la variable objet Sh qui représente chaque feuille à chaque boucle
        On Error Resume Next
        Set Sh = Sheets(Nom & Format(i, "0000"))    'On instancie Sh à la feuille Sh, la feuille Nommée XXX0001
                                                    'Si la feuille existe, Sh est non vide et on passe dans la boucle pour chercher XXX0002
                                                    'Si la feuille n'existe pas, on aura erreur (Sh restera a nothing). On sort alors de la boucle
                                                    'La nouvelle feuille aura comme suffixe la compteur i
                                                    'Le On error resume next permet d'éviter l'erreur sur cette ligne
        On Error GoTo 0
    Loop Until Sh Is Nothing
    ActiveSheet.Copy After:=Sheets(Sheets.Count)    'On copie la feuille en dernier
    With ActiveSheet
        .Name = Nom & Format(i, "0000")             'On la renomme
        .Range("A1").Value = i                      'On y écrit en A1, le nombre i
        .Range("D10:D20", "G10:G20").ClearContents  'On efface ces plages
    End With
    End Sub

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Caïmans

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    Bonjour,

    Merci beaucoup pour ton aide.

    Je n'ai jamais écrit de ligne de code, j'ai jamais utilisé d'enregistreur de macro, la seule chose que j'ai commencer pour l'instant est l'instauration d'un bouton associé à un code vba code permettant d'imprimer une certaine page de mon formulaire. Il fonctionne correctement, mais à toutes les fois que je clique sur le bouton, il fait toujours référence à la feuille intitulé 0001. Je sais que c'est à la ligne Worksheets("0001").Activate qu'est mon problème. Il faudrait qu'excel sache que je change de feuille à toutes les fois.
    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Public Sub zone_impression() 
    With Range("A:H")
    Worksheets("0001").Activate
    ActiveSheet.PageSetup.PrintArea = Range("A1:j" & .Find("*", .Item(1), , , , xlPrevious).Row).Address
    End With
    ActiveWindow.SelectedSheets.PrintPreview
    End Sub
     
     Public Sub commandbutton3_click()
    Call zone_impression
    End Sub
    Concernant ton code, je comprend un peu le principe de ta codification, cependant, le nom de ma feuille ne comporte aucun texte, il est simplement intitulé, pour la première feuille, "0001".

    De plus, la cellule étant lié au nom de ma feuille, je l'ai préalablement nommé "po".

    J'ai essayé de faire rouler ton code dans excel et il me donne une message d'erreur à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    21 : ActiveSheet.Copy After:=Sheets(Sheets.Count).
    Je ne sais pas, mais en lisant sur d'autre forum, il ne serait pas plus facile de créer un bouton à l'intérieure de chacune des feuille excel permettant de copier la dernière qui à été créeé.

    Merci beaucoup de ton aide, très apprécié.

  4. #4
    Membre habitué
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Caïmans

    Informations forums :
    Inscription : Avril 2011
    Messages : 8
    Par défaut
    Merci beaucoup de ton aide. Grace à tes conseils j'ai réussit à exécuter ce que je voulais faire.

    J'ai modifier un peu ton code mais cela ma grandement aidé.

    Merci beaucoup.

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

Discussions similaires

  1. envoyer le contenu de variables vba vers une feuille excel
    Par Sebastien_INR59 dans le forum Access
    Réponses: 1
    Dernier message: 21/06/2006, 19h58
  2. [VBA-E]Sauvegarde feuille Excel avec VBA
    Par jojo2303 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/03/2006, 19h06
  3. [VBA] Dissocier des feuilles Excel avec VBA
    Par lezinve dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 02/03/2006, 16h30
  4. [VBA-E]ouvrir feuille excel en lecture seule
    Par ogenki dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 10/02/2006, 13h36
  5. [VBA]Renseigner une feuille excel à partir d'un site web
    Par DonKnacki dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 23/01/2006, 13h43

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